Skip to main content

Overview

Feature flags let you enable or disable features in your overlay without deploying a new version. Flags are managed through the Overlayed Dashboard and automatically fetched by @overlayed/app.

Registering Flags

Pass an array of flag names to the featureFlags option. Use as const for full type safety.
import { overlayed } from "@overlayed/app";

const overlay = overlayed({
	featureFlags: ["new-scoreboard", "beta-hud"] as const,
	// ...
});
If a registered flag name is not found in the API response, a warning is logged to help catch typos or removed flags.

Checking Flag Status

const enabled = overlay.featureFlags.get("new-scoreboard");
Get all flags at once:
const allFlags = overlay.featureFlags.getAll();
// { "new-scoreboard": true, "beta-hud": false }

Listening for Changes

Feature flags are automatically fetched:
  • When your the overlay bootstraps
  • Every 10 minutes
  • When a game launches or closes
Listen for individual flag changes:
overlay.featureFlags.on("scoreboard-enabled", (enabled) => {
	// Flag value changed
});
Listen for any flag update:
overlay.featureFlags.on("updated", () => {
	// Flags were refreshed from the API
});

Manual Refresh

Force a refresh from the API at any time:
await overlay.featureFlags.refresh();

Overriding Flags

Override flag values locally. Overrides persist across API refetches and take precedence over API values. Override a single flag:
overlay.featureFlags.override("new-scoreboard", true);
Override all flags to the same value:
overlay.featureFlags.overrideAll(true);
When a flag is overridden, changes from the API do not emit change events. This prevents unwanted behavior when testing with overridden values.