Statsig To Wingify Migration Assistant
Migrate your Statsig gates, configs, and experiments to Wingify Feature Experimentation.
Migrate your feature setup from Statsig to Wingify using FE MCP Server with a single prompt. The assistant migrates your Statsig configuration to Wingify FE and makes the required code changes to use Wingify FE SDKs.
#Prerequisites
Confirm the following before starting the migration.
#Access and accounts
- Active Statsig project with the gates, configs, and experiments you plan to migrate
- Active Wingify account with Feature Experimentation enabled
#Workspace setup
- MCP compatible IDE with the Wingify FE MCP server installed — see the MCP Server setup guide
#Migration flow
- Check prerequisites
Confirm your Statsig project, Wingify FE account, and IDE setup listed above - Add the Wingify FE MCP Server
Add the Wingify FE MCP server to your IDE and configure credentials - Run the migration prompt
Something like migrate my project from Statsig to Wingify - Verify the migrated output
Confirm feature flags, rollout, testing and personalize rules were created correctly, and review the SDK code changes made by the Assistant - Enable and go live
Turn on the newly created, migrated flags in Wingify, validate it and then you are good to go
#How Wingify FE differs from Statsig
Statsig and Wingify Feature Experimentation both help you roll out features, personalize experiences, and run experiments, but they organize the work differently.
Statsig offers feature gates, dynamic configs, and experiments.
Wingify FE one concept: the feature flag. You attach different rule types (like Rollout, Testing, Personalize, Multivariate) to a feature flag depending on the usecase.
Everything in Statsig maps to FE as a feature flag with a rule. A gate becomes a flag with a rollout rule. A dynamic config becomes a flag with variables, served through rollout, testing or personalize rules. An experiment becomes a flag with a testing rule.
After migration, three separate SDK calls in Statsig are replaced by a single call in FE: getFlag()
#Equivalent Features
| What it does | In Statsig | In Wingify FE |
|---|---|---|
| Turn a feature on or off | Feature Gate | Feature Flag + Rollout Rule |
| Control settings remotely | Dynamic Config | Feature Flag + Rollout/Testing/Personalize Rule |
| Run an A/B test | Experiment | Feature Flag + Testing Rule |
#SDK call comparison
| Area | Statsig | Wingify FE |
|---|---|---|
| Init | StatsigClient + initializeAsync() |
init({ accountId, sdkKey }) |
| Gate check | getFeatureGate(key).value sync |
await getFlag(key, ctx) → isEnabled() async |
| Config | getDynamicConfig(key).value / .get() |
getFlag() → getVariable() / getVariables() |
| Experiment | getExperiment(key) → groupName, value |
getFlag() + testing rule; read variables, not variation name |
| Events | logEvent() |
trackEvent() |
#Variables vs. variation names
In Statsig, experiment code often branches on a variation name (groupName). In FE, you read variables instead. The variation name is not used for branching logic. If you need a label for logging, expose it as a string variable
#Environment model
| Aspect | Statsig | Wingify FE |
|---|---|---|
| SDK key | One key + optional environment tier set in code | One SDK key per environment; the key determines the environment |
| Default environments | Development, Staging, Production built in | Default environments (Dev, Staging, Prod) provided out of the box; additional environments can be defined within a project |
| Rule targeting | Rules can be scoped to a specific environment tier | Rules are toggled independently per environment |
#Migrate with the FE MCP Server
The MCP server handles configuration import and code rewrite in one workflow.
#Configuration import
- Recreates feature gates as Feature flags with rollout rules
- Recreates dynamic configs as feature flags with testing/rollout/personalize rules
- Recreates experiments as feature flags with testing rules with variations
- Migrates metrics to Wingify Data360 events and metrics
#Code rewrite
- Replaces Statsig SDK imports with the Wingify FE SDK imports
- Refactors
getFeatureGate(),getDynamicConfig(), andgetExperiment()togetFlag() - Replaces
logEvent()withtrackEvent() - Updates SDK initialization logic
#What's in the migration scope
| Statsig type | Status |
|---|---|
| Feature gates | ✓ Migrated |
| Dynamic configs | ✓ Migrated |
| Experiments | ✓ Migrated |
| Custom-event metrics | ✓ Migrated |
| Segments / audience targeting | ✓ Migrated |
| Layers (mutual exclusion) | Not directly supported. Mutually Exclusive Groups (MEG) are an option — see the MEG documentation |
| Warehouse-native metrics | Not supported |
#Step 1: Check prerequisites and configure migration credentials
Three values are configured in the MCP server block.
| Field | Purpose |
|---|---|
WINGIFY_ACCOUNT_ID |
Wingify Account ID, found in account settings. |
WINGIFY_API_KEY |
Wingify Developer Token, used to create flags |
STATSIG_CONSOLE_API_KEY |
Statsig Console API key to read existing gates, configs, and experiments |
#Step 2: Add the Wingify FE MCP Server
Add the Wingify FE MCP Server to your IDE and configure it with the credentials from Step 1
#Step 3: Run the migration prompt
Once MCP server is successfully configured, start the migration by typing a single prompt:
The MCP server scans your codebase, identifies all Statsig components, recreates them in Wingify, and updates your application code automatically.
#Step 4: Verify the migrated output
When the migration completes, the assistant returns a consolidated migration summary in your IDE. Use this summary as your verification checklist before enabling anything. Once verification is done, turn the feature flags and the corresponding rule toggles ON.
#Review the migration summary
| Statsig type | What to confirm in the summary |
|---|---|
| Feature gate | Feature flag key, rollout rule(s), and status migrated. |
| Experiment | Feature flag key, variables, variations, testing rule, and status migrated. |
| Dynamic config | Feature flag key, variables, variations, rule count, and status migrated. |
| Metrics | Status migrated, failed or skipped (already exists). |
#Check the Wingify dashboard
#Flags and rules:
- Each migrated flag key exists in your Wingify project
- Rollout rules match what you had in Statsig gates
- Testing variations and traffic splits look correct
#Metrics (under Data360 → Metrics)
- All metrics were successfully created in Data360 and linked to the feature flags
- Primary and secondary metrics are linked to feature flags
In Wingify, a feature flag can have only one primary metric, but multiple secondary metrics. The primary metric is used to decide a winner of a campaign
#Review the migrated code
- A valid Wingify accountId and FE SDK environment key are used in SDK initialization
- Statsig SDK imports and calls have been fully replaced (getFlag(), trackEvent())
- No branching logic remains on variation names — code reads flag variables instead
#Run a smoke test (after the SDK is connected)
- Re-initialize the SDK or restart the app
- Gate — confirm ON/OFF behavior for a test user
- Config — verify variable values match the dashboard
- Experiment — confirm variation variables and running status
- Events — trigger a key event and confirm it appears in Wingify (validates metric and tracking wiring)
- Change the user ID and re-initialize to confirm consistent bucketing
#Step 5: Enable and go live
- Enable migrated feature flags in the Wingify dashboard (these are OFF by default)
- Enable all the rules that should go live
- Monitor feature flag metrics after go-live
#Troubleshooting
| Issue |
|---|
| Missing flags or metrics |
#FAQs
You can structure the destination in two ways:
- All projects into one Wingify account — run each migration with the same Wingify credentials. This is simpler, but flag keys must be unique across the account, so watch for collisions.
- One workspace per Statsig project — create a Wingify workspace for each project and target it per run. This preserves project boundaries and per-team access.
For feature gates and rollouts, this is usually harmless. For running experiments, do not carry results across platforms. Either conclude the experiment in Statsig before migrating, or restart it fresh in Wingify FE. Experiment results and historical data do not migrate.
The supported languages are: Android, iOS, React-Native, Flutter, Go, Java, Javascript, NextJS, Node, PHP, Python, React-Web, Ruby, .NET
For unsupported languages, the configuration import still works, but you will have to manually write the code, using the Gateway Service