Skip to content
Timer

useFps

Reactive frames-per-second counter using requestAnimationFrame

Returns a ReadonlyObservable<number> that tracks the current frames-per-second, sampled every N frames to reduce noise.

FPS Monitor

Sampled every 10 frames using requestAnimationFrame.

FPS
0
import {
import useFps
useFps
} from "@usels/web";
function
function Component(): JSX.Element
Component
() {
const
const fps: any
fps
=
import useFps
useFps
();
return <
JSX.IntrinsicElements.div: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>
div
>{
const fps: any
fps
.
any
get
()}</
JSX.IntrinsicElements.div: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>
div
>;
// fps.get() → current FPS (0 until first sample)
}
import { useFps } from "@usels/web";
function Component() {
const fps = useFps({ every: 20 }); // sample every 20 frames (~333ms at 60fps)
}

fps starts at 0 and updates only after the first every frames have elapsed.

fps = round(1000 / (elapsed_ms / frame_count))

At 60fps with every=10, each sample covers ~166ms and yields ~60.

The sampling period is fixed at mount. Changing every dynamically has no effect.

export { createFps } from "./core";
export type { FpsOptions } from "./core";
export type UseFpsOptions = Pick<FpsOptions, "every">;
export declare function useFps(options?: DeepMaybeObservable<UseFpsOptions>): ReadonlyObservable<number>;

View on GitHub