useInterval
A thin wrapper around useIntervalFn that exposes a ReadonlyObservable<number> counter that increments on each tick.
Interval fired:0
Counter increments every 200ms.
import { import useInterval
useInterval } from "@usels/web";
const const counter: any
counter = import useInterval
useInterval(1000);// counter.get() → 0 initially, then 1, 2, 3... every secondWith callback
Section titled “With callback”import { import useInterval
useInterval } from "@usels/web";
import useInterval
useInterval(1000, { callback: (count: any) => any
callback: (count: any
count) => any
console.any
log("tick:", count: any
count),});With pause/resume/reset controls
Section titled “With pause/resume/reset controls”import { import useInterval
useInterval } from "@usels/web";
const { const counter$: any
counter$, const reset: any
reset, const isActive$: any
isActive$, const pause: any
pause, const resume: any
resume } = import useInterval
useInterval(1000, { controls: boolean
controls: true,});
const pause: any
pause(); // stops tickingconst resume: any
resume(); // restartsconst reset: any
reset(); // counter → 0Manual start (immediate: false)
Section titled “Manual start (immediate: false)”import { import useInterval
useInterval } from "@usels/web";
const { const counter$: any
counter$, const resume: any
resume } = import useInterval
useInterval(1000, { controls: boolean
controls: true, immediate: boolean
immediate: false,});
const resume: any
resume(); // start manuallyReactive interval
Section titled “Reactive interval”import { import useInterval
useInterval } from "@usels/web";import { function observable<T>(): Observable<T | undefined> (+2 overloads)
observable } from "@legendapp/state";
const const ms$: any
ms$ = observable<unknown>(value: Promise<unknown> | (() => unknown) | unknown): any (+2 overloads)
observable(1000);const const counter: any
counter = import useInterval
useInterval(const ms$: any
ms$);
const ms$: any
ms$.any
set(500); // restarts with 500ms periodType Declarations
Section titled “Type Declarations”export interface UseIntervalOptions<Controls extends boolean = false> { controls?: Controls; immediate?: boolean; callback?: (count: number) => void;}export interface UseIntervalReturn { counter$: ReadonlyObservable<number>; reset: Fn;}export declare function useInterval(interval?: MaybeObservable<number>, options?: UseIntervalOptions<false>): ReadonlyObservable<number>;export declare function useInterval(interval: MaybeObservable<number>, options: UseIntervalOptions<true>): Readonly<UseIntervalReturn & Pausable>;Source
Section titled “Source”Contributors
Section titled “Contributors”- tigerwest
Changelog
Section titled “Changelog”a7392ab2026-03-06 - feat(core,browser): add sync strategy hooks (tigerwest)