Skip to main content

Configuration

TogglyConfig​

Shared options for server and client:

interface TogglyConfig {
appKey?: string;
environment?: string;
baseUrl?: string;
timeout?: number;
featureDefaults?: Record<string, boolean>;
debug?: boolean;
onError?: (message: string, error?: unknown) => void;
groups?: string[];
claims?: Record<string, string>;
verifySignatures?: boolean;
allowedKeyIds?: string[];
instanceId?: string; // Backend-minted session token
enableTelemetry?: boolean;
enableUsageTracking?: boolean;
enableMetrics?: boolean;
metricsBaseUrl?: string;
telemetryFlushIntervalMs?: number;
}

The five telemetry options apply to the browser provider introduced in 1.1.0. metricsBaseUrl defaults to https://metrics.toggly.io and the flush interval defaults to 45,000 ms. See Usage and metrics.

Loader / action providers​

createTogglyLoader({
appKey: process.env.TOGGLY_APP_KEY,
environment: process.env.TOGGLY_ENVIRONMENT,
getIdentity: async (request) => { /* ... */ },
getGroups: async (request) => { /* ... */ },
getClaims: async (request) => { /* ... */ },
// Or getContext: (request) => ({ identity, groups, claims })
});

Identity, groups, and claims are read from request (cookies/headers). Do not use React Router’s normalized URL for targeting.

Signature verification​

When verifySignatures is true, the server verifies ES256 signed definition envelopes via JWKS (@ops-ai/toggly-signed-defs). Keep signed/invalid/offline failure behavior enabled in production hosts that require it.

Peer dependencies​

{
"react-router": "^7.0.0 || ^8.0.0",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
}

Optional: @react-router/node for Node adapters.