← All migration guides
Easy 30-60 minutes

Migrate from Flagsmith

Move your feature flags from Flagsmith (self-hosted or cloud) to ShipSilently. Fewer moving parts, lower latency, and a simpler developer experience.

Overview

Flagsmith and ShipSilently are closely aligned in their feature set. Both support boolean flags, remote config, and user/segment targeting. This guide covers replacing the Flagsmith SDK with ShipSilently with minimal code changes.

Before you begin

  • You have an existing Flagsmith project (Cloud, on-premises, or open source) with flags in use
  • You have a ShipSilently account (create one free)
  • Your application uses the Flagsmith Node.js or JavaScript SDK

Step 1: Set up your ShipSilently project

  1. Sign in to ShipSilently and create a new project.
  2. Copy your API key from Settings → API Keys.

Step 2: Map Flagsmith concepts to ShipSilently

FlagsmithShipSilently
Feature FlagFlag
Remote Config / Feature valueFlag variant
IdentityUser context
SegmentTargeting rule
Environment API keyAPI key

Step 3: Recreate your flags

For each Flagsmith feature:

  1. Create a flag in ShipSilently with the same feature name as the key
  2. Recreate segment rules as targeting rules in the ShipSilently dashboard

Flagsmith remote config: If you use Flagsmith’s remote config (feature value as a string/number), use ShipSilently’s variant flags to store the same configuration values.

Step 4: Replace the SDK

# Remove Flagsmith SDK
npm uninstall flagsmith-nodejs

# Install ShipSilently
npm install @shipsilently/node

Step 5: Update initialization

Before (Flagsmith):

import Flagsmith from 'flagsmith-nodejs';

const flagsmith = new Flagsmith({
  environmentKey: process.env.FLAGSMITH_API_KEY,
});

After (ShipSilently):

import { initialize } from '@shipsilently/node';

export const flags = initialize(process.env.SHIPSILENTLY_KEY);

Step 6: Update flag evaluations

Before (Flagsmith):

// Get flags for an identity
const flags = await flagsmith.getIdentityFlags(user.id, {
  email: user.email,
  plan: user.plan,
});

const showNewDashboard = flags.isFeatureEnabled('new-dashboard');

After (ShipSilently):

const showNewDashboard = await flags.getFlag('new-dashboard', {
  userId: user.id,
  email: user.email,
  plan: user.plan,
});

API comparison

FlagsmithShipSilently
flagsmith.getIdentityFlags(id, traits)flags.getFlag(key, context)
flags.isFeatureEnabled(name)flags.getFlag(key, context) returns boolean
flags.getFeatureValue(name)flags.getVariant(key, context)
Per-identity network callIn-memory evaluation after initial fetch

Step 7: Remote config migration

If you use Flagsmith’s remote config feature to store values like strings or numbers:

Before (Flagsmith):

const buttonColor = flags.getFeatureValue('button-color'); // '#00E5FF'

After (ShipSilently):

const buttonColor = await flags.getVariant('button-color', {
  userId: user.id,
}); // '#00E5FF'

Step 8: Set your environment variable

# Remove
FLAGSMITH_API_KEY=xxxx

# Add
SHIPSILENTLY_KEY=ss-live-xxxx

Step 9: Verify and cut over

  1. Deploy to staging using SHIPSILENTLY_KEY
  2. Verify flag evaluations show up in the ShipSilently Analytics dashboard
  3. Deploy to production and remove the Flagsmith SDK and credentials

What’s next

Ready to start your migration?

Create a free ShipSilently account and have your first flag live in minutes.