Remote config
Fetch a per-user key/value bundle for runtime configuration. ETag-cached, version-stamped.
config.fetch() returns a resolved key/value bundle for the signed-in user. Use it for values that the app reads on launch and needs to be able to change without a redeploy — pricing, copy, feature thresholds, default selections.
Unlike feature flags, config bundles are designed for strings, numbers, and structured config, not boolean gates. One bundle per project, evaluated per user against rules you define in the console.
Quick start
Operations
fetch()
Returns a single bundle:
The SDK caches the response per-session and revalidates with the server using an ETag — if the server's version hasn't changed, the SDK returns the cached values without a fresh body transfer.
Patterns
Boot-time config
For values you need at app launch (splash screen copy, theme, etc.), fetch synchronously on boot and hold the result in memory:
Per-flag vs. config
Use feature flags for on/off decisions and A/B variant assignment. Use config for values like copy, pricing, thresholds:
Both are evaluated per-user; the difference is in the surface ergonomics (flags.fetch() returns an array of boolean/variant assignments; config.fetch() returns a single typed bundle).
Refresh
Config caches for ~60 seconds within a session, then revalidates on next fetch(). To force a fresh fetch (e.g. after a known server-side update), sign the user out and back in — the cache is keyed by session.
Limits
- Bundle size: up to 256 KB JSON-encoded.
- Key count: up to 100 top-level keys; nest deeper for richer configs.
- Value depth: up to 8 levels of nested objects / arrays.
- Cache TTL: ~60 seconds per session; ETag revalidation on next fetch.
Reference
- Client API — config — endpoint reference.
- Auth feature — prerequisite.
- Flags feature — for on/off gating.
- Per-platform quickstarts: Web, Node, iOS, Android, Flutter, Unity.