1. 12:09 12/10/2026
1. Giới thiệu
Feature flag (cờ tính năng) và A/B testing là hai kỹ thuật giúp đội ngũ phát hành tính năng an toàn, đo lường tác động và rollback nhanh khi cần. Bài viết chia sẻ quy trình áp dụng cho cả React Web và React Native trong một monorepo chung.
2. Chọn công cụ phù hợp
- LaunchDarkly / Unleash / Flagsmith: hỗ trợ SDK cho JavaScript và React Native.
- Nếu ngân sách hạn chế, tự xây dựng flag service đơn giản với Firebase Remote Config hoặc AWS AppConfig.
3. Kiến trúc flag trong monorepo
- Tạo package `@myorg/feature-flags` chứa:
* Typescript interface `FeatureFlags` liệt kê tất cả key.
* Hook `useFlag(key)` – wrapper gọi SDK, cache kết quả trong React Context.
* Provider `FlagProvider` bọc root của cả web và native.
- Cả hai app import package này, đảm bảo key flag đồng nhất.
4. Quy trình phát triển tính năng mới
- Bước 1: Tạo flag mới trên dashboard (ví dụ `new-checkout-flow`).
- Bước 2: Thêm key vào interface `FeatureFlags` và commit.
- Bước 3: Viết component mới, bọc bằng `useFlag('new-checkout-flow')`.
- Bước 4: Deploy lên staging, bật flag cho nhóm nội bộ (internal‑only).
- Bước 5: Mở rộng cho % người dùng (canary 5 → 25 → 100).
- Bước 6: Theo dõi metrics (conversion, crash rate) qua Amplitude / Mixpanel.
- Bước 7: Nếu đạt KPI, xóa flag và merge code chính thức; ngược lại tắt flag ngay lập tức.
5. A/B testing với flag
- Định nghĩa hai biến thể `variantA` và `variantB` trong cùng một flag (giá trị JSON).
- Hook `useVariant(flagKey)` trả về object `{ variant, payload }`.
- Random assignment thực hiện ở server‑side (SDK) để đảm bảo nhất quán giữa web và native.
- Ghi log `experiment_id` cùng event analytics để phân tích sau này.
6. Best practices & lưu ý
- Luôn có default value an toàn (fallback UI cũ).
- Giới hạn số lượng flag đồng thời (< 30) để tránh phức tạp.
- Tự động dọn dẹp flag đã hoàn thành qua script CI hàng tuần.
- Viết test unit cho `useFlag`/`useVariant` với mock SDK.
- Đảm bảo flag không chứa logic business phức tạp; chỉ bật/tắt hoặc chọn biến thể.
7. Kết luận
Việc tập trung quản trị feature flag trong một package chung giúp React Web và React Native chia sẻ cùng một nguồn sự thật, giảm thiểu sai lệch khi rollout. Kết hợp A/B testing trên nền tảng flag cho phép thử nghiệm nhanh, đo lường chính xác và rollback an toàn – yếu tố then chốt cho quy trình continuous delivery hiện đại.