npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sucoza/feature-flag-manager-devtools-plugin

v0.1.9

Published

DevTools plugin for feature flag management and A/B testing with multiple provider support

Downloads

28

Readme

Feature Flag Manager DevTools Plugin

A comprehensive TanStack DevTools plugin for managing and testing feature flags at runtime during development. This plugin provides a powerful interface for controlling feature flags, testing A/B experiments, simulating user segments, and monitoring flag evaluations in real-time.

Feature Flag Manager Demo

✨ Features

🎛️ Real-time Flag Management

  • Dashboard Overview: Visual summary of all feature flags with their current states
  • Interactive Controls: Toggle boolean flags, switch between variants, and set custom values
  • Override System: Local overrides with persistence across browser sessions
  • Instant Updates: See changes reflected immediately in your application

🧪 A/B Testing & Experimentation

  • Variant Switcher: Easily switch between different test variations
  • Experiment Metrics: Track conversion rates and performance metrics
  • Statistical Analysis: View significance levels and confidence intervals
  • Rollout Controls: Adjust percentage-based rollouts and targeting rules

👥 User Segmentation

  • Segment Simulator: Test how flags behave for different user types
  • Context Management: Simulate different user attributes and environments
  • Targeting Rules: Visualize and test complex targeting conditions
  • Quick Personas: Switch between predefined user personas instantly

📊 Monitoring & Analytics

  • Evaluation History: Track all flag evaluations with detailed context
  • Dependency Visualization: Understand flag dependencies and relationships
  • Performance Metrics: Monitor flag evaluation performance
  • Event Timeline: See a chronological view of all flag changes

🔌 Provider Integration

  • LaunchDarkly: Built-in adapter for LaunchDarkly integration
  • Custom APIs: Connect to your own feature flag service
  • Multiple Providers: Support for multiple flag providers simultaneously
  • Real-time Sync: Keep flags synchronized with external services

🚀 Quick Start

Installation

npm install @sucoza/feature-flag-manager-devtools-plugin

Basic Usage

import React from 'react';
import { 
  FeatureFlagManagerPanel, 
  createFeatureFlagDevToolsClient 
} from '@sucoza/feature-flag-manager-devtools-plugin';

// Create a client instance
const client = createFeatureFlagDevToolsClient();

function App() {
  return (
    <div>
      {/* Your application content */}
      <main>
        {/* Feature flag controlled components */}
      </main>

      {/* DevTools Panel */}
      <FeatureFlagManagerPanel 
        client={client} 
        defaultTab="dashboard"
        height={600}
      />
    </div>
  );
}

Using the React Hook

import React from 'react';
import { useFeatureFlagManager } from '@sucoza/feature-flag-manager-devtools-plugin';

function MyComponent() {
  const { 
    evaluateFlag, 
    toggleFlag, 
    setContext,
    state,
    isReady 
  } = useFeatureFlagManager({
    initialContext: {
      userId: 'user-123',
      userSegment: 'beta-users',
      attributes: {
        plan: 'premium',
        region: 'us-east-1'
      }
    }
  });

  const [showNewFeature, setShowNewFeature] = React.useState(false);

  React.useEffect(() => {
    if (!isReady) return;
    
    evaluateFlag('new-feature-flag').then(value => {
      setShowNewFeature(!!value);
    });
  }, [isReady, evaluateFlag, state]);

  const handleToggleFeature = () => {
    toggleFlag('new-feature-flag');
  };

  if (!isReady) return <div>Loading...</div>;

  return (
    <div>
      {showNewFeature && <NewFeatureComponent />}
      <button onClick={handleToggleFeature}>
        Toggle New Feature
      </button>
    </div>
  );
}

🎯 Advanced Usage

Setting up LaunchDarkly Integration

import { createFeatureFlagDevToolsClient } from '@sucoza/feature-flag-manager-devtools-plugin';

const client = createFeatureFlagDevToolsClient();

// Add LaunchDarkly provider
await client.addProvider({
  name: 'launchdarkly-prod',
  type: 'launchdarkly',
  enabled: true,
  config: {
    apiKey: 'your-sdk-key',
    environmentId: 'production',
    clientId: 'your-client-id'
  }
});

Custom Provider Integration

// Add custom API provider
await client.addProvider({
  name: 'my-feature-service',
  type: 'custom',
  enabled: true,
  config: {
    baseUrl: 'https://api.mycompany.com',
    apiKey: 'Bearer your-api-token'
  }
});

Working with Complex Flags

// Multivariate flag with variants
const paymentMethodVariant = await client.evaluateFlag('payment-methods');

// The flag might return different values based on user segment:
// - 'control': Credit card only
// - 'apple-pay': Credit card + Apple Pay  
// - 'all-methods': All payment methods

switch (paymentMethodVariant.value) {
  case 'apple-pay':
    return <ApplePayCheckout />;
  case 'all-methods':
    return <AllMethodsCheckout />;
  default:
    return <CreditCardCheckout />;
}

User Context and Segmentation

// Update user context for targeting
await client.setEvaluationContext({
  userId: 'user-456',
  userSegment: 'premium-users',
  attributes: {
    plan: 'enterprise',
    region: 'eu-west-1',
    betaOptIn: true,
    accountAge: 365
  },
  environment: 'production'
});

// Flags will be re-evaluated with new context
const premiumFeatures = await client.evaluateFlag('premium-dashboard');

📋 Panel Features

Dashboard Tab

  • Flag Overview: Summary cards showing total flags, overrides, and experiments
  • Recent Activity: Latest flag updates and evaluations
  • Quick Actions: Fast toggle controls for boolean flags
  • Status Indicators: Visual indicators for flag states and health

Flags Tab

  • Flag List: Comprehensive list of all available flags
  • Advanced Filtering: Filter by environment, type, tags, or status
  • Sorting Options: Sort by name, update date, or type
  • Bulk Operations: Apply changes to multiple flags at once
  • Flag Details: Detailed view with configuration and history

Overrides Tab

  • Active Overrides: View all currently active flag overrides
  • Override Management: Easy creation and removal of overrides
  • Persistence Control: Choose which overrides to persist
  • Context Awareness: See how overrides interact with user context

Experiments Tab

  • A/B Test Overview: Monitor running experiments and their performance
  • Variant Performance: Compare conversion rates across variants
  • Statistical Significance: View confidence intervals and p-values
  • Experiment History: Track experiment lifecycle and results

Segments Tab

  • User Segments: View and manage user segmentation rules
  • Segment Testing: Test how current user matches different segments
  • Rule Validation: Validate targeting rules against user context
  • Quick Switching: Rapidly switch between user personas

History Tab

  • Evaluation Timeline: Chronological view of all flag evaluations
  • Filtering Options: Filter by flag, reason, or time period
  • Detailed Context: See exact evaluation context and results
  • Export Capabilities: Export evaluation data for analysis

Settings Tab

  • General Settings: Configure refresh intervals, history size, and notifications
  • Provider Management: Add, configure, and remove flag providers
  • Data Management: Export settings and clear local data
  • Theme Options: Choose between light, dark, or auto themes

🔧 Configuration Options

Panel Configuration

<FeatureFlagManagerPanel
  client={client}
  theme="auto"              // 'light' | 'dark' | 'auto'
  defaultTab="dashboard"    // Default tab to show
  height={600}             // Panel height in pixels
/>

Client Configuration

const client = createFeatureFlagDevToolsClient();

// Configure settings
const settings = {
  autoRefresh: true,
  refreshInterval: 5000,     // 5 seconds
  maxHistorySize: 100,
  persistOverrides: true,
  showNotifications: true,
  theme: 'auto'
};

Hook Configuration

const { ... } = useFeatureFlagManager({
  autoCreate: true,          // Automatically create client
  initialContext: { ... },   // Initial evaluation context
  onReady: (client) => { ... },        // Callback when ready
  onStateChange: (state) => { ... }    // Callback on state changes
});

🎨 Theming and Customization

The plugin supports light, dark, and auto themes that integrate seamlessly with your application:

/* Custom theme variables */
.feature-flag-manager-panel {
  --primary-color: #3b82f6;
  --success-color: #10b981;
  --warning-color: #f59e0b;
  --error-color: #ef4444;
  --background-color: #ffffff;
  --text-color: #111827;
}

.feature-flag-manager-panel.dark {
  --background-color: #1f2937;
  --text-color: #f9fafb;
}

🧪 Testing and Development

Running the Demo

# Clone the repository
git clone https://github.com/tanstack/feature-flag-manager-devtools

# Install dependencies
cd feature-flag-manager-plugin
npm install

# Start the demo application
npm run example:basic

Building the Plugin

# Build the plugin
npm run build

# Watch for changes during development
npm run dev

# Run tests
npm test

# Type checking
npm run typecheck

📚 API Reference

Client Methods

interface FeatureFlagDevToolsClient {
  // Flag operations
  getFlags(): Promise<FeatureFlag[]>;
  getFlag(id: string): Promise<FeatureFlag | null>;
  evaluateFlag(id: string, context?: EvaluationContext): Promise<FlagEvaluation>;
  
  // Override management
  setOverride(override: FlagOverride): Promise<void>;
  removeOverride(flagId: string): Promise<void>;
  clearAllOverrides(): Promise<void>;
  
  // Context management
  setEvaluationContext(context: EvaluationContext): Promise<void>;
  
  // History and events
  getEvaluationHistory(): Promise<FlagEvaluation[]>;
  getEvents(limit?: number): Promise<FlagEvent[]>;
  
  // Subscriptions
  subscribe(callback: (state: FeatureFlagDevToolsState) => void): () => void;
  
  // Provider integration
  addProvider(provider: ProviderSettings): Promise<void>;
  removeProvider(name: string): Promise<void>;
}

Hook Return Value

interface UseFeatureFlagManagerReturn {
  client: FeatureFlagDevToolsClient | null;
  state: FeatureFlagDevToolsState | null;
  isReady: boolean;
  isLoading: boolean;
  error: Error | null;
  
  // Convenience methods
  evaluateFlag: (flagId: string, context?: EvaluationContext) => Promise<any>;
  toggleFlag: (flagId: string) => Promise<void>;
  setOverride: (flagId: string, value: any, reason?: string) => Promise<void>;
  removeOverride: (flagId: string) => Promise<void>;
  setContext: (context: EvaluationContext) => Promise<void>;
  refreshFlags: () => Promise<void>;
}

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Fork and clone the repository
git clone https://github.com/your-username/feature-flag-manager-devtools

# Install dependencies
npm install

# Start development server
npm run dev

# Run tests
npm test

📄 License

MIT


Part of the @sucoza TanStack DevTools ecosystem.

🙏 Acknowledgments

  • Built with TanStack DevTools architecture
  • Inspired by modern feature flag management tools
  • Thanks to the React and TypeScript communities

📞 Support


Part of the @sucoza TanStack DevTools ecosystem