用途:在 Next.js 或 SvelteKit 应用中规划、添加和变更功能开关、A/B 测试与渐进式发布。每个开关以函数形式声明,调用点不使用字符串键,服务端求值以避免布局偏移并保持页面静态。
主要能力:适配器模式可替换 decide 与 origin,连接 Vercel Flags(@flags-sdk/vercel)及 Statsig、LaunchDarkly、PostHog 等第三方服务商;支持 identify 提供求值上下文、dedupe 去重、evaluate() 批量求值(比逐个 await 或 Promise.all 更快,Vercel 适配器实现 bulkDecide 可批量解析);支持预计算静态变体与 Flags Explorer 调试。
使用方式:安装 pnpm i flags @flags-sdk/vercel,链接 Vercel 项目并执行 vercel env pull 拉取环境变量;在 flags.ts 中用 flag({ key, adapter: vercelAdapter }) 声明开关,页面中 await 调用。创建远端开关运行 vercel flags create <flag-key> --kind boolean --description "<description>";已有开关用 vercel flags inspect <flag-key> 读取定义。CLI 管理远端开关需已认证 CLI,但不需要 SDK 包、Toolbar、Flags Explorer 或 .env.local。
适用场景:需要服务端求值、静态页面、多服务商切换或 Vercel 面板集中管理开关的项目。
限制:dedupe 在 Pages Router 不可用;evaluate() 始终在请求时求值,不用于读取预计算值;flags 4.2.0+ 可直接传适配器工厂引用,旧版本需调用形式;SDK 密钥(FLAGS)仅用于 Vercel 之外的应用、自定义环境或其他项目的开关。文档见 https://flags-sdk.dev,仓库 https://github.com/vercel/flags。