Skip to main content

Feature Flag Methods

Methods for working with feature flags and A/B testing.

getFeatureFlag

Get the value of a feature flag. The value can be a boolean, string, number, or object.
key
string
required
Feature flag key.
options
FlagOptions
Optional configuration:
  • defaultValue: Default value if flag is not found
  • skipTracking: Skip automatic exposure tracking

Returns

T | undefined - The flag value, or undefined if not found and no default provided.

Example

// Get boolean flag
const enabled = solute.getFeatureFlag<boolean>('new-checkout');

// Get flag with default
const enabled = solute.getFeatureFlag<boolean>('new-checkout', {
  defaultValue: false,
});

// Get typed object flag
const config = solute.getFeatureFlag<{
  theme: string;
  layout: string;
}>('checkout-config', {
  defaultValue: { theme: 'light', layout: 'standard' },
});

isFeatureEnabled

Check if a feature flag is enabled (returns a boolean).
key
string
required
Feature flag key.
options
FlagOptions
Optional configuration:
  • defaultValue: Default value if flag is not found (defaults to false)
  • skipTracking: Skip automatic exposure tracking

Returns

boolean - true if the feature is enabled, false otherwise.

Example

// Simple check
if (solute.isFeatureEnabled('new-checkout')) {
  // Show new checkout
}

// With default
const enabled = solute.isFeatureEnabled('new-checkout', {
  defaultValue: false,
});

getExperimentVariant

Get the assigned variant for an A/B test experiment.
key
string
required
Experiment key.
options
FlagOptions
Optional configuration:
  • defaultValue: Default variant if experiment is not found
  • skipTracking: Skip automatic exposure tracking

Returns

string | undefined - The variant key, or undefined if not found and no default provided.

Example

// Get variant
const variant = solute.getExperimentVariant('pricing-test');

if (variant === 'variant-a') {
  // Show variant A
} else if (variant === 'variant-b') {
  // Show variant B
}

// With default
const variant = solute.getExperimentVariant('pricing-test', {
  defaultValue: 'control',
});

getAllFlags

Get all feature flags and experiments at once.

Returns

Record<string, FeatureFlag> - Object mapping flag keys to flag objects.

Example

const allFlags = solute.getAllFlags();

// Access individual flags
if (allFlags['new-checkout-flow']?.enabled) {
  // Feature is enabled
}

// Get experiment variant
const experiment = allFlags['pricing-test'];
if (experiment?.variant === 'variant-a') {
  // Show variant A
}

reloadFeatureFlags

Manually reload feature flags from the server.
userProperties
Record<string, any>
Optional updated user properties for targeting. If provided, flags will be re-evaluated with these properties.

Returns

Promise<void>

Example

// Reload all flags
await solute.reloadFeatureFlags();

// Reload with updated user properties
await solute.reloadFeatureFlags({
  plan: 'premium',
  country: 'US',
});
Feature flags are automatically refreshed based on your configuration. You typically don’t need to manually reload them.