Skip to main content

Countdown Widget

Build a countdown timer that takes a target time and counts down every second.
When the time reaches 0, display a message like “Time’s up!”.

Input:  target = 10 seconds  
Output: 10 → 9 → 8 → ... → 0 → "Time’s up!"
import React, { useState, useEffect } from 'react';

export default function App({ start = 0 }) {
const [time, setTime] = useState(start);

useEffect(() => {
if (time <= 0) return;

const timer = setTimeout(() => {
// functional update is safer
setTime((prev) => prev - 1);
}, 1000);

return () => clearTimeout(timer);
}, [time]);

return <h2>{time > 0 ? time : "Time’s up!"}</h2>;
}