问题域/PD-399

Feature Flag系统

Feature Flag System

集中管理功能开关,实现渐进式功能发布和A/B测试

子问题

1.功能开关定义

2.环境变量覆盖

3.运行时切换

4.依赖关系管理

5.多产品形态(OSS/商业版)的元 Flag 分叉控制

6.Flag 在路由树中的条件注册与 fallback 处理

7.Flag 对 API 响应数据的过滤与类型裁剪

8.空组件占位模式实现商业版扩展点预留

各项目的解法1 solutions

Signals

横向对比

维度Langflow
Flag 定义方式单文件 export const 布尔常量,26 个 ENABLE_* flag
环境变量覆盖仅 1 个 flag 使用 import.meta.env 覆盖,其余硬编码
运行时切换不支持,编译时确定,依赖 Vite tree-shaking 消除死代码
消费层级四层消费:路由注册、JSX 渲染、API 响应过滤、Store 初始值
产品形态分叉ENABLE_DATASTAX_LANGFLOW 元 flag 控制 OSS/商业版差异
扩展点预留custom-feature-flag-dialog/menu-items 空组件占位,商业版覆盖

最佳实践

1.集中定义所有Feature Flag,支持环境变量覆盖默认值

2.使用 export const 而非运行时配置,利用 tree-shaking 消除死代码

3.Flag 在 Store 初始值中使用 AND 门控(flag && apiResponse)实现双重确认

4.Tab/路由切换时自动纠正因 flag 变更导致的无效状态