Flagly
LivePlatform
Toggle features in your app from a dashboard โ no code changes, no redeploy.
What is it
Flagly is a feature-flag platform that decouples deployment from release. Ship code behind a flag whenever it's ready, then flip a toggle in the dashboard to release it to users โ your app picks up the change within about 10 seconds, instantly on tab refocus. No redeploy, no coordinated rollout, no rollback anxiety.
Two npm packages cover every stack. flipgate is the React adapter: wrap your root in FlaglyProvider, then read flags anywhere with useFeatureFlag or FeatureFlagGate. flipgate-core is the framework-agnostic engine underneath โ use it directly in Node.js, Vue, Svelte, or edge functions via createFlagClient, which exposes subscribe (reactive), getFlag (synchronous single-flag read), getFlags (all flags), and destroy (cleanup on exit or unmount). For one-off checks with no install at all, a plain fetch against the flags API works too.
Why you need it
- Release at midnight without anyone on call: toggle on. Something wrong in production: toggle off. No redeploy needed either way.
- Every feature can go out dark โ you decide when the world sees it, not your CI pipeline.
- This is how continuous deployment actually works in practice: deployment and release become separate decisions.
- Drop-in for React, or zero-dependency core for anything else that runs JavaScript โ Node, Vue, Svelte, Cloudflare Workers, Vercel Edge, Deno, or plain fetch.
User guide โ quickstart
- 1
Create a project and get an API key
Open the Flagly platform, sign up, and create a project. Copy the generated API key โ it looks like flg_โฆ and identifies your project to the SDK.
- 2
React: install and wrap your app
Install flipgate, then mount FlaglyProvider near the root of your React app (Next.js layout, Remix root, Vite App.tsx, etc.). Pass your API key โ it fetches flags immediately and keeps them fresh in the background.
npm install flipgate // app/layout.tsx (Next.js example) import { FlaglyProvider } from 'flipgate'; export default function RootLayout({ children }) { return ( <html><body> <FlaglyProvider apiKey="flg_your_api_key">{children}</FlaglyProvider> </body></html> ); } - 3
React: gate a feature in code
Read a flag with the hook for conditional logic, or wrap UI in the gate component with a fallback for the off state. The hook returns an object โ always destructure it.
// Hook (for logic) const { enabled, loading } = useFeatureFlag('my-flag'); // Gate component (for UI) <FeatureFlagGate flagKey="my-flag" fallback={<OldUI />}> <NewUI /> </FeatureFlagGate> - 4
Node.js / non-React: use flipgate-core
Install flipgate-core and call createFlagClient with your API key. Subscribe for reactive updates, or read synchronously with getFlag / getFlags. Always call destroy() when done โ in a process exit handler, component unmount, or cleanup function.
npm install flipgate-core import { createFlagClient } from 'flipgate-core'; const client = createFlagClient({ apiKey: 'flg_your_api_key' }); // Reactive: called after each successful fetch client.subscribe((flags) => { if (flags['maintenance-mode']) console.log('Maintenance mode ON'); }); // Synchronous read const isEnabled = client.getFlag('my-flag'); // boolean // Cleanup on exit process.on('exit', () => client.destroy()); - 5
No install: plain fetch
For a one-off check with no package at all, call the flags API directly with your API key in the x-api-key header.
const res = await fetch('https://flagly-platform.vercel.app/api/flags', { headers: { 'x-api-key': 'flg_your_api_key' }, }); const { flags } = await res.json(); if (flags['my-flag']) { /* feature is on */ } - 6
Toggle from the dashboard
Flip the flag on the Flagly platform. Your app reflects the change within ~10 seconds (instantly when the tab regains focus). No redeploy, no code change.
Under the hood
Works with: React (flipgate) ยท Node.js, Vue, Svelte, edge functions (flipgate-core) ยท plain fetch (no install)
Published on npm
Ready to try Flagly?