@featureflip/react

中文文档
2.19.1发布于 2026/11/10Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 2623

SDK对 Featureflip 的回放 - 特性旗评价的回放绑定

中文使用文档
文档目录10 节
  1. 安装
  2. 快速启动
  3. 提供者道具
  4. 钩子
  5. useFeatureFlag<T>(key: string, defaultValue: T): T
  6. useFeatureflipStatus(): { isReady, isError, error }
  7. useFeatureflipClient(): FeatureflipClient
  8. 在登录时识别
  9. 测试
  10. 许可证

@ featureflip/反应

反应约束 特性flip 特征旗评价.

安装

npm install @featureflip/react @featureflip/browser

快速启动

包装您的应用程序 FeatureflipProvider,然后使用 useFeatureFlag 在任何组件.

import { FeatureflipProvider, useFeatureFlag } from '@featureflip/react';

function App() {
  return (
    <FeatureflipProvider clientKey="your-client-sdk-key">
      <Banner />
    </FeatureflipProvider>
  );
}

function Banner() {
  const showBanner = useFeatureFlag('show-banner', false);
  if (!showBanner) return null;
  return <div>New feature available!</div>;
}

提供者道具

Prop类型默认说明
clientKeystring(必须)客户端 SDK 密钥
contextRecord<string, unknown>undefined评价背景(用户属性)
baseUrlstringundefined评价 API 基础 URL
streamingbooleanundefined启用 SSE 流线
sendEvaluationEventsbooleantrue被传递到浏览器SDK;参见其README.
bootstrapRecord<string, unknown> | 'localStorage'undefined第一个服务器响应前要渲染的值 。 被传递到浏览器SDK;参见其README.

提供者创建 FeatureflipClient 内部和电话 initialize() 上马了 它清理(呼叫) close()在卸载.

与一个 bootstrap 对象(例如,旗下值您在渲染页面时评价的服务器), useFeatureFlag 返回第一个参数上的这些值,并 useFeatureflipStatus() 报告 isReady: true 立即; 服务器的值在到达时替换 。 在服务器渲染提供者使用时 FeatureflipClient.forServerRender,它只服务于拖曳值,不提出请求,也不在请求之间共享.

钩子

useFeatureFlag<T>(key: string, defaultValue: T): T

返回旗的估值值。 当旗帜值通过流转而改变时,组件会自动重递,或者 identify()类型 defaultValue 确定使用哪种变异方法(boolVariation, (中文(简体) ), stringVariation, (中文(简体) ), numberVariation,或 jsonVariation) (中文(简体) ).

const enabled = useFeatureFlag('new-checkout', false);
const color = useFeatureFlag('button-color', 'blue');
const limit = useFeatureFlag('rate-limit', 100);
const config = useFeatureFlag('ui-config', { sidebar: true });

useFeatureflipStatus(): { isReady, isError, error }

返回客户端初始化状态 。 用于显示装入状态 .

function App() {
  const { isReady, isError, error } = useFeatureflipStatus();

  if (isError) return <div>Error: {error?.message}</div>;
  if (!isReady) return <div>Loading...</div>;

  return <Main />;
}

useFeatureflipClient(): FeatureflipClient

返回基础 FeatureflipClient 例如: identify) (中文(简体) ).

在登录时识别

当上下文道具改变时,提供者会自动调用 identify() 并重新评价所有旗帜。 您也可以打电话 identify 直接说.

function LoginPage() {
  const client = useFeatureflipClient();

  async function handleLogin(userId: string) {
    // ... authenticate ...
    await client.identify({ user_id: userId, plan: 'pro' });
  }

  return <button onClick={() => handleLogin('123')}>Log in</button>;
}

测试

使用 TestFeatureflipProvider 在测试中提供预定的旗帜值——没有网络呼叫,没有初始化延迟.

import { TestFeatureflipProvider } from '@featureflip/react';
import { render, screen } from '@testing-library/react';

test('renders banner when flag is on', () => {
  render(
    <TestFeatureflipProvider flags={{ 'show-banner': true }}>
      <Banner />
    </TestFeatureflipProvider>,
  );

  expect(screen.getByText('New feature available!')).toBeInTheDocument();
});

TestFeatureflipProvider 用途 FeatureflipClient.forTesting() 内部和设定 isReady: true 马上.

许可证

阿帕奇 - 2.0

版本与发布记录

@featureflip/react 共发布 33 个版本,首次发布于 2026/04/02;过去 12 个月发布了 33 个版本。

版本发布日期距今
2.19.1latest2026/11/104 天前
2.19.02026/11/086 天前
2.18.02026/10/3015 天前
2.17.22026/10/2817 天前
2.17.12026/10/2717 天前
2.17.02026/10/2718 天前

关于 @featureflip/react 的常见问题

@featureflip/react 是什么?

SDK对 Featureflip 的回放 - 特性旗评价的回放绑定

如何安装 @featureflip/react?

在项目目录运行 npm install @featureflip/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)、@featureflip/browser(^2.19.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@featureflip/react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@featureflip/react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@featureflip/react 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@featureflip/react 可以商用吗?

@featureflip/react 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@featureflip/react 的下载量有多少?

根据 npm 官方下载统计,@featureflip/react 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,623 次,日均约 87 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@featureflip/react 还在维护吗?

最新版本 2.19.1 发布于 2026/11/10(4 天前);至今共发布 33 个版本,其中过去 12 个月发布了 33 个;首次发布于 2026/04/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。