Unleash React Native SDK 接入指南:安装、初始化与开关评估实战
2026/9/14 15:35:47 网站建设 项目流程

Unleash React Native SDK 接入指南:安装、初始化与开关评估实战

【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash

本指南围绕 Unleash(开源特性管理平台)前端引导流程中面向 React Native 的接入文档展开,讲解如何从零将 React Native 应用接入 Unleash:安装 SDK、初始化FlagProvider、通过useFlag读取特性开关,并落实环境变量等安全实践。读完本文,你将掌握在 Expo 或裸 React Native 项目中接入并验证 Unleash 特性开关的完整可运行方案。

接入前置条件

在编写任何代码之前,需要从你的 Unleash 实例中准备三项信息,它们将直接填入后续的初始化配置:

配置项说明在本文代码中的占位符
API URL客户端 SDK 请求的 Frontend API 地址,形如https://your-unleash-host/api/frontend/<YOUR_API_URL>
Client Key为 React Native(客户端)用途签发的 API Token,即前端 API Token,生产环境应通过环境变量注入<YOUR_API_TOKEN>
Flag 名称已在 Unleash 中创建的特性开关名<YOUR_FLAG>

这里有一个容易踩坑的关键点:React Native 属于客户端 SDK(Client SDK),它连接的是 Unleash 的 Frontend API(/api/frontend/),而非服务端 SDK 使用的常规客户端 API(/api/)。这一差异在该仓库的前端引导代码中有明确的工程化实现——buildSdkApiUrl.ts 根据 SDK 类型拼接 URL:

const isFrontendSdk = clientSdks.some((sdk) => sdk.name === sdkName); return `${unleashUrl}/api${isFrontendSdk ? '/frontend' : ''}/`;

因此,接入 React Native 时必须使用前端 API Token 作为clientKey,并将其对应的 Frontend API 地址作为url,否则鉴权与开关拉取都会失败。

第一步:安装 SDK

在 React Native 项目根目录执行:

npm install @unleash/unleash-react-native-sdk unleash-proxy-client

这里安装的是两个包:

  • @unleash/unleash-react-native-sdk:React Native 官方客户端 SDK,封装了FlagProvideruseFlag等 React 友好的 API,并提供原生端(Android/iOS)的底层适配;
  • unleash-proxy-client:Unleash 前端代理客户端核心库,负责与 Frontend API 通信、缓存开关状态与上下文,React Native SDK 在其之上构建。

使用 npm 之外的包管理器(如 yarn、pnpm)时,等价地安装这两个依赖即可。

第二步:初始化 Unleash 并挂载 FlagProvider

SDK 通过 React Context 向整棵组件树提供开关状态,因此需要在应用根部初始化并包裹FlagProvider。引导文档给出的完整初始化代码如下:

import { FlagProvider, useFlag } from '@unleash/unleash-react-native-sdk'; const config = { url: '<YOUR_API_URL>', clientKey: '<YOUR_API_TOKEN>', // in production use environment variables appName: 'unleash-onboarding-react-native', }; function FlagStatus() { const isEnabled = useFlag('<YOUR_FLAG>'); if (isEnabled) { return <Text>{'<YOUR_FLAG> is enabled'}</Text>; } else { return <Text>{'<YOUR_FLAG> is disabled'}</Text>; } } export default function App() { return ( <FlagProvider config={config}> <FlagStatus /> </FlagProvider> ); }

对配置项逐一说明:

  • url:Frontend API 地址(见上文前置条件),SDK 会从这里周期性地拉取已激活开关的评估结果;
  • clientKey:前端 API Token,SDK 用它向 Frontend API 鉴权。切勿把服务端 Token 或管理员 Token 硬编码进移动端,它们会被打包进 App 而泄露;
  • appName:应用标识,会出现在 Unleash 管理界面的客户端实例列表中,便于区分流量来源。引导流程中的示例值unleash-onboarding-react-native可替换为你的应用名。

代码片段在引导流程中的动态生成

这段代码并不是写死的,Unleash 前端引导(Onboarding)流程会结合当前项目环境动态替换占位符。在 ConfigureSdk.tsx 中可以看到,展示给用户的代码片段会做如下替换:

const snippet = (codeRenderSnippets[sdk.name] || '') .replace('<YOUR_API_TOKEN>', apiKey) .replace('<YOUR_API_URL>', apiUrl) .replaceAll('<YOUR_FLAG>', flagName || '<YOUR_FLAG>');

也就是说,你在 Unleash 界面上复制到的代码,<YOUR_API_URL>已自动替换为你实例的 Frontend API 地址、<YOUR_API_TOKEN>已自动替换为新签发的前端 Token、<YOUR_FLAG>已自动替换为当前项目选中的开关名——这正是上表占位符与真实值的一一对应关系。相关代码片段注册在 CodeRenderer.tsx 中,React Native 对应reactnative.md片段,语法高亮与一键复制由 reactnative.md 配合highlight.js的 TypeScript 语言规则完成。

第三步:用 useFlag 读取开关状态

初始化完成后,任意被FlagProvider包裹的组件都可以通过useFlag读取开关:

import { useFlag } from '@unleash/unleash-react-native-sdk'; function MyComponent() { const isEnabled = useFlag('<YOUR_FLAG>'); if (isEnabled) { return <Text>{'<YOUR_FLAG> is enabled'}</Text>; } else { return <Text>{'<YOUR_FLAG> is disabled'}</Text>; } }

要点:

  • useFlag('<YOUR_FLAG>')接收开关名称,返回一个布尔值,表示当前用户/会话上下文下该开关是否开启;
  • 当开关未启用时渲染禁用分支、启用时渲染新功能分支,即可实现「先合并、后放量、可秒级回滚」的特性管理实践;
  • 返回值为boolean,可直接用于条件渲染,无需额外判空。

在引导流程的第三步(TurnFlagStep之前的连接验证)中,Unleash 会等待你的 App 启动并评估一次开关:前端通过轮询项目 Onboarding 状态检测sdk-connected,进而驱动引导进入下一步(见 ConfigureSdk.tsx 与 SdkEvaluationStatus.tsx)。因此,跑通上面的最小示例、让useFlag真正求值一次,就完成了「SDK 已连接并在评估开关」的验证闭环。

第四步:用环境变量替代硬编码凭据

移动端代码会被打包分发,把 Token 硬编码在源码里等于直接泄露凭据。引导文档明确建议:使用环境变量代替硬编码值。变量名取决于你的工程方案——Expo 使用EXPO_PUBLIC_*前缀,裸 React Native(bare workflow)则取决于你引入的环境变量库:

// Use environment variables instead of hardcoded values. // The variable names depend on your setup (e.g. EXPO_PUBLIC_* for Expo, // or your chosen library for bare React Native). const config = { url: process.env.YOUR_UNLEASH_URL, clientKey: process.env.YOUR_UNLEASH_CLIENT_KEY, appName: 'unleash-onboarding-react-native', };

实践建议:

  • Expo 项目:在.env文件中以EXPO_PUBLIC_UNLEASH_URLEXPO_PUBLIC_UNLEASH_CLIENT_KEY命名,代码中通过process.env.EXPO_PUBLIC_*读取;
  • 裸 React Native 项目:使用react-native-config等库管理环境变量,并在构建时注入;
  • .env加入.gitignore,避免 Token 进入版本库;
  • 即使使用环境变量,也应对前端 Token 采取最小权限原则:仅授予其所需的项目与读取权限,降低泄露后的影响面。

验证与排障

完成上述四步后,可按以下顺序自检:

  1. URL 是否正确:确认url指向 Frontend API(路径含/api/frontend/)。若误用/api/(服务端 SDK 地址),鉴权将失败;
  2. Token 类型是否正确clientKey必须是前端 API Token(Client SDK Token),而非服务端或管理 Token;
  3. App 是否真正评估了开关FlagProvider挂载后,至少调用一次useFlag,触发 SDK 向 Frontend API 发起请求并在本地求值;
  4. 在管理端确认连接:引导流程会检测到 SDK 连接,界面提示「We received metrics from your application」即代表成功;若约 30 秒仍无数据,检查 App 是否启动、初始化是否使用了正确的 Token(见 ConfigureSdk.tsx 的排障提示逻辑);
  5. 开关名拼写useFlag传入的名称需与 Unleash 中创建的开关名完全一致。

小结

在 React Native 中接入 Unleash 只需四步:安装@unleash/unleash-react-native-sdkunleash-proxy-client两个依赖;用 Frontend API 地址与前端 Token 初始化FlagProvider;通过useFlag在任意组件中读取开关;用环境变量管理 Token。结合 reactnative.md 片段在 Unleash 引导流程中的动态生成机制(见 ConfigureSdk.tsx 与 buildSdkApiUrl.ts),你可以直接复制界面生成好的代码,跑通从「创建开关」到「App 内求值」的完整链路。如需了解该 SDK 在 Unleash 生态中的定位,可参考前端集成列表 SDKs.ts 中将其归类为客户端(Client)SDK 的说明。

【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询