--- category: Time --- # useCountdown Wrapper for `useIntervalFn` that provides a countdown timer. ## Usage ```ts import { useCountdown } from '@vueuse/core' const countdownSeconds = 5 const { remaining, start, stop, pause, resume } = useCountdown(countdownSeconds, { onComplete() { }, onTick() { } }) ``` You can use a `ref` to change the initial countdown. `start()` and `resume()` also accept a new countdown value for the next countdown. ```ts import { useCountdown } from '@vueuse/core' import { shallowRef } from 'vue' const countdown = shallowRef(5) const { start, reset } = useCountdown(countdown, { }) // change the countdown value countdown.value = 10 // start a new countdown with 2 seconds start(2) // reset the countdown to 4, but do not start it reset(4) // start the countdown with the current value of `countdown` start() ``` ## Type Declarations ```ts export interface UseCountdownOptions { /** * Interval for the countdown in milliseconds. Default is 1000ms. */ interval?: MaybeRefOrGetter /** * Callback function called when the countdown reaches 0. */ onComplete?: () => void /** * Callback function called on each tick of the countdown. */ onTick?: () => void /** * Start the countdown immediately * * @default false */ immediate?: boolean } export interface UseCountdownReturn extends Pausable { /** * Current countdown value. */ remaining: ShallowRef /** * Resets the countdown and repeatsLeft to their initial values. */ reset: (countdown?: MaybeRefOrGetter) => void /** * Stops the countdown and resets its state. */ stop: () => void /** * Reset the countdown and start it again. */ start: (countdown?: MaybeRefOrGetter) => void } /** * Wrapper for `useIntervalFn` that provides a countdown timer in seconds. * * @param initialCountdown * @param options * * @see https://vueuse.org/useCountdown */ export declare function useCountdown( initialCountdown: MaybeRefOrGetter, options?: UseCountdownOptions, ): UseCountdownReturn ```