Skip to content

Configuration

Browser Lifecycle configuration is declarative, validated, and merged with defaults before a session starts.

Shape

ts
import {
  createBrowserLifecycle,
  getDefaultBrowserLifecycleConfig,
  mergeBrowserLifecycleConfig,
  validateBrowserLifecycleConfig,
} from "@jayoncode/browser-lifecycle";

const defaults = getDefaultBrowserLifecycleConfig();
const merged = mergeBrowserLifecycleConfig(defaults, {
  idle: { enabled: true, thresholdMs: 120_000 },
});

validateBrowserLifecycleConfig(merged);

const lifecycle = createBrowserLifecycle(merged);

Module toggles

Each observation module can be enabled or disabled independently:

ModuleKeyEvents
Visibilityvisibilitypage:visible, page:hidden
Focusfocuswindow:focus, window:blur
Connectivityconnectivityconnection:online, connection:offline, connection:reconnect
Idleidlesession:active, session:idle, activity:detected, activity:reset
Lifecyclelifecyclepage lifecycle transitions
Cross TabcrossTabtab:primary, tab:secondary, tab:message

Applying changes

Configuration is fixed for the lifetime of a running session. To apply new settings:

  1. dispose() the current session
  2. Create a new session with updated configuration

Validate changes interactively in the Configuration Playground.

JOC is a JayOnCode monorepo of @jayoncode/* packages. Docs sync from source via TypeDoc and sync scripts.