Setup LaunchDarkly
Squide integrates with LaunchDarkly to attach feature flags to the FireflyRuntime instance and automatically update deferred registrations whenever a flag value changes.
Initialize the client
To setup LaunchDarkly, first refer to the create an host application guide as a starting point and update the host application bootstrapping code to create and initialize a LaunchDarkly SDK client instance:
import { FireflyProvider, initializeFirefly } from "@squide/firefly";
import { initialize as initializeLaunchDarkly } from "launchdarkly-js-client-sdk";
import { createRoot } from "react-dom/client";
import { App } from "./App.tsx";
import { registerHost } from "./register.tsx";
const launchDarklyClient = initializeLaunchDarkly("123", {
kind: "user",
anonymous: true
}, {
// It's important to use the stream mode to receive feature flags
// updates in real time.
streaming: true
});
try {
// Always initialize the client before forwarding the instance to the "initializeFirefly" function.
await launchDarklyClient.waitForInitialization(5);
} catch (error: unknown) {
// Failed to initialize LaunchDarkly...
}
const runtime = initializeFirefly({
localModules: [registerHost],
launchDarklyClient
});
const root = createRoot(document.getElementById("root")!);
root.render(
<FireflyProvider runtime={runtime}>
<App />
</FireflyProvider>
);
To receive real-time feature flag updates, initialize the LaunchDarkly client with streaming enabled. When a flag value changes, Squide automatically updates deferred registrations, keeping conditional navigation items in sync with the feature flags.
initializeFirefly expects the LaunchDarkly SDK client to be initialized before it's called.
Add feature flags
Next, follow the use feature flags essential page to add feature flags to your application.
Try it 🚀
Start the application in a development environment using the dev script, then navigate to a page that uses a feature flag. In LaunchDarkly, toggle the flag value. The page should update and reflect the new value each time the flag is toggled.
Troubleshoot issues
If you are experiencing issues with this guide:
- Open the DevTools console. You'll see a log entry everytime a feature flag is updated, along with console outputs from LaunchDarkly SDK client.
[LaunchDarkly] LaunchDarkly client initialized[LaunchDarkly] Opening stream connection to:[squide] Dispatching event "squide-feature-flags-updated"[squide] Feature flags has been updated to:
- Refer to a working example on GitHub.
- Refer to the troubleshooting page.