@deployramp/sdk
v0.1.25
Published
DeployRamp SDK - Feature flag management
Maintainers
Readme
@deployramp/sdk
TypeScript/JavaScript SDK for DeployRamp — AI-native feature flag management with gradual rollouts, real-time updates, and automatic error-monitored rollbacks.
Installation
npm install @deployramp/sdk
# or
yarn add @deployramp/sdk
# or
pnpm add @deployramp/sdkQuick Start
import { init, flag, report, close } from "@deployramp/sdk";
// Initialize once at app startup
init({
publicToken: "drp_pub_your_token",
traits: { plan: "pro", region: "us-east" },
});
// Evaluate a feature flag
if (flag("new-checkout-flow")) {
// show new checkout
} else {
// show old checkout
}
// Report errors — DeployRamp uses these to auto-roll back bad deploys
try {
await processCheckout();
} catch (err) {
report(err, "new-checkout-flow");
}
close(); // flush events and disconnectReact
import { useFlag, useMeasure } from "@deployramp/sdk/react";
function CheckoutButton() {
const newFlow = useFlag("new-checkout-flow");
// Re-renders automatically when flag values change via WebSocket
return newFlow ? <NewCheckout /> : <OldCheckout />;
}
function DataTable() {
// Measures execution time of each branch and reports to DeployRamp
const rows = useMeasure(
"fast-query",
() => fetchOptimizedRows(),
() => fetchRows(),
);
return <Table rows={rows} />;
}Measure Performance
Track how each flag branch performs across your user population:
import { measure, measureAsync } from "@deployramp/sdk";
// Synchronous
const result = measure(
"fast-algorithm",
() => newAlgorithm(data),
() => oldAlgorithm(data),
);
// Asynchronous
const result = await measureAsync(
"fast-query",
() => optimizedQuery(),
() => baselineQuery(),
);Trait-Based Targeting
import { init, flag, setTraits } from "@deployramp/sdk";
init({ publicToken: "drp_pub_your_token" });
// Set traits once after login
setTraits({ plan: "enterprise", cohort: "beta" });
// Override traits for a single evaluation
const enabled = flag("beta-feature", { cohort: "alpha" });API Reference
| Function | Description |
|---|---|
| init(config) | Initialize the SDK, fetch flags, open WebSocket for real-time updates |
| flag(name, traitOverrides?) | Evaluate a feature flag; returns boolean |
| setTraits(traits) | Update user traits used for all subsequent evaluations |
| measure(name, enabledFn, disabledFn, traitOverrides?) | Run the appropriate branch and record timing |
| measureAsync(name, enabledFn, disabledFn, traitOverrides?) | Async version of measure |
| report(error, flagName?, traitOverrides?) | Report an error; triggers rollback monitoring |
| subscribe(listener) | Listen for flag changes; returns unsubscribe function |
| displayFeedback(flagName, prompt) | Show the in-app feedback widget for a flag |
| close() | Flush pending events and disconnect |
React Hooks (@deployramp/sdk/react)
| Hook | Description |
|---|---|
| useFlag(name, traitOverrides?) | Evaluate a flag; re-renders on real-time updates |
| useMeasure(name, enabledFn, disabledFn, traitOverrides?) | Measure branch performance in a component |
SdkConfig
interface SdkConfig {
publicToken: string; // Required. Your public token from deployramp.com
baseUrl?: string; // Defaults to https://flags.deployramp.com
traits?: Record<string, string>;
feedback?: {
accentColor?: string;
textColor?: string;
backgroundColor?: string;
position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
};
}Links
License
MIT
