Appearance
@idlekitjs/browser
Browser integration helpers that are not rendering: page lifecycle, requestAnimationFrame scheduling and screen helpers.
What it provides
pageLifecyclefrom@idlekitjs/browser/page-lifecycle.createRafSchedulerfrom@idlekitjs/browser/raf-scheduler.devicePixelRatio,cssToDevicePxanddeviceToCssPxfrom@idlekitjs/browser/screen.
When to use it
Use @idlekitjs/browser when a browser API needs to feed an IdleKit engine contract. Typical browser games use it for the frame driver and page visibility pause/resume. Headless tests usually use manualScheduler from @idlekitjs/core instead.
Basic usage
ts
import { createEngine } from "@idlekitjs/core";
import { createRafScheduler } from "@idlekitjs/browser/raf-scheduler";
import { pageLifecycle } from "@idlekitjs/browser/page-lifecycle";
const engine = createEngine<State>({
initialState,
scheduler: createRafScheduler(),
});
engine.use(pageLifecycle());
engine.start();Boundaries
@idlekitjs/browser reads or bridges browser APIs. It does not render DOM, define gameplay rules or own save policies.
The rule of thumb is:
txt
writes to the DOM -> @idlekitjs/dom
reads or bridges a browser API -> @idlekitjs/browser
consumes engine events as a policy -> @idlekitjs/pluginsAll browser helpers are safe to import in shared code; without document or window they no-op or use documented fallbacks.