Skip to main content

Pausable countdown

Use elapsedMilliseconds for duration countdowns that must pause and resume.

Pausable duration countdownLive

Pausable countdown

00:20
idle
Duration20s
Elapsed active time0.0s
Pause behaviorfreezes elapsed time
const timer = useTimer({
autoStart: true,
endWhen: snapshot => snapshot.elapsedMilliseconds >= durationMs,
});

const remainingMs = Math.max(0, durationMs - timer.elapsedMilliseconds);