1.0.15 • Published 6 months ago

@aiqfy/feature-sdk v1.0.15

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

AIQ Feature SDK

A TypeScript SDK for managing feature flags in your frontend applications.

Installation

npm install @aiq/feature-sdk

Basic Setup

import { FeatureSDK } from '@aiq/feature-sdk';

const featureSDK = new FeatureSDK({
  apiKey: 'your-api-key',      // The SDK key generated from your backend
  baseUrl: 'https://your-api-url',
  projectId: 'your-project-id', // Required: The project ID this SDK belongs to
  userId: 'optional-user-id',
  environment: 'optional-environment'
});

Getting Your SDK Key

  1. Create an SDK in your backend:
// Using the Go backend API
response, err := client.CreateSDKAPI(ctx, &pb.CreateSDKRequest{
  Name: "My Frontend SDK",
  ProjectId: "your-project-id"
})
  1. Use the generated SDK key in your frontend:
const featureSDK = new FeatureSDK({
  apiKey: response.sdk.key,    // The key will be in format: "aiqfy-xxxxxxxxxxxxxxxx"
  baseUrl: 'https://your-api-url',
  projectId: response.sdk.projectId
});

Checking Feature Flags

// Check if a feature is enabled
const isNewUIEnabled = await featureSDK.isEnabled('new-ui-feature');

// Get a feature variant
const variant = await featureSDK.getVariant('ab-test-feature');

// Get all feature flags for the current project
const allFlags = await featureSDK.getAllFlags();

React Example

import React, { useEffect, useState } from 'react';
import { FeatureSDK } from '@aiq/feature-sdk';

const featureSDK = new FeatureSDK({
  apiKey: process.env.REACT_APP_FEATURE_API_KEY,
  baseUrl: process.env.REACT_APP_FEATURE_API_URL,
  projectId: process.env.REACT_APP_FEATURE_PROJECT_ID
});

function MyComponent() {
  const [isNewFeatureEnabled, setIsNewFeatureEnabled] = useState(false);

  useEffect(() => {
    async function checkFeature() {
      const enabled = await featureSDK.isEnabled('new-feature');
      setIsNewFeatureEnabled(enabled);
    }
    checkFeature();
  }, []);

  return (
    <div>
      {isNewFeatureEnabled ? (
        <NewFeatureComponent />
      ) : (
        <OldFeatureComponent />
      )}
    </div>
  );
}

Updating User Context

// Update the user ID for feature evaluation
featureSDK.setUserId('new-user-id');

// Update the environment
featureSDK.setEnvironment('production');

API Reference

FeatureSDK

Constructor

new FeatureSDK(options: FeatureFlagOptions)

Options:

  • apiKey: Your SDK key for authentication (generated from backend)
  • baseUrl: The base URL of your feature flag service
  • projectId: The project ID this SDK belongs to
  • userId: (Optional) The user ID for feature evaluation
  • environment: (Optional) The environment for feature evaluation

Methods

  • isEnabled(featureId: string): Promise<boolean>

    • Checks if a feature flag is enabled
  • getVariant(featureId: string): Promise<string | undefined>

    • Gets the variant value of a feature flag
  • getAllFlags(): Promise<FeatureFlag[]>

    • Gets all feature flags for the current project
  • getFeatureFlag(featureId: string): Promise<FeatureFlag | undefined>

    • Gets a specific feature flag
  • setUserId(userId: string): void

    • Updates the user ID for feature evaluation
  • setEnvironment(environment: string): void

    • Updates the environment for feature evaluation
  • getProjectId(): string

    • Gets the current project ID

Features

  • Project-scoped feature flags
  • TypeScript support
  • Automatic caching with configurable timeout
  • User and environment context support
  • Variant support for A/B testing
  • Error handling
  • Automatic cache invalidation when context changes
1.0.15

6 months ago

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

6 months ago

1.0.9

6 months ago

1.0.1

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.0

6 months ago