ข้ามไปยังเนื้อหา

สร้าง Flag

Feature ใน GrowthBook แมปตรงกับ feature flag ในโค้ดของคุณ ต่อไปนี้คือวิธีสร้างขึ้นมาตั้งแต่ต้น

  1. ล็อกอินเข้า GrowthBook ที่ http://localhost:3000 (หรือ Cloud URL ของคุณ)
  2. ในแถบด้านซ้าย คลิก Features
  3. คลิกปุ่ม Add Feature ที่มุมขวาบน
  1. Feature Key — ใส่ identifier ที่เป็นตัวพิมพ์เล็กและคั่นด้วยขีดกลาง เช่น my-flag นี่คือสตริงที่โค้ดของคุณจะใช้ตลอดไป — เลือกอย่างรอบคอบ
  2. Value Type — เลือก Boolean สำหรับ flag เปิด/ปิดแบบง่าย ๆ
  3. Default Value — ตั้งเป็น false (ปิดเป็นค่าเริ่มต้นในทุกที่)
  4. คลิก Create Feature

โดยค่าเริ่มต้น flag ของคุณมีอยู่แต่ถูกปิดใช้งานในทุก environment

  1. ในหน้ารายละเอียดของ Feature ให้หาส่วน Environments คุณจะเห็นแถวสำหรับ development, staging และ production
  2. คลิก toggle ข้าง ๆ development เพื่อสลับจาก Disabled เป็น Enabled
  3. เนื่องจากยังไม่มี override rule ใด ๆ ผู้ใช้ทุกคนจะได้รับ default value เป็น true ใน development

เคล็ดลับ: คุณสามารถตั้ง default value เฉพาะแต่ละ environment ให้ต่างจาก default ส่วนกลางได้ ทำให้คุณปล่อย true ใน development ได้ โดยยังคงเป็น false ใน production จนกว่าคุณจะพร้อม

เมื่อ feature มีอยู่ใน GrowthBook แล้ว ให้ใช้ SDK ประเมินค่า:

import { GrowthBook } from '@growthbook/growthbook';
const gb = new GrowthBook({
apiHost: 'https://cdn.growthbook.io',
clientKey: 'sdk-YOUR_DEV_KEY',
});
await gb.init({ timeout: 2000 });
if (gb.isOn('my-flag')) {
console.log('Flag is ON');
} else {
console.log('Flag is OFF');
}

สำหรับ boolean flag คุณก็ใช้ getFeatureValue ได้เช่นกัน ซึ่งต้องระบุ fallback อย่างชัดเจน:

const flagValue = gb.getFeatureValue('my-flag', false);
// returns true or false, never throws
import { GrowthBook } from '@growthbook/growthbook';

const gb = new GrowthBook({
  apiHost: 'https://cdn.growthbook.io',
  clientKey: 'sdk-YOUR_DEV_KEY',
});

await gb.init({ timeout: 2000 });

// boolean shorthand
if (gb.isOn('my-flag')) {
  console.log('Flag is ON');
}

// explicit value with fallback
const flagValue = gb.getFeatureValue('my-flag', false);
ตัวเลือกBenefitCost
Boolean flagเรียบง่าย เข้าใจง่ายที่สุดใช้ได้แค่ on/off ไม่ flexible
Multi-variate / JSON flagflexible กว่ามาก ปรับ config ได้ละเอียดซับซ้อนกว่าในการ maintain และ validate
  • สร้าง flag โดยไม่ตั้งชื่อที่สื่อความหมาย (เช่น flag1)
  • ไม่ตั้ง description ทำให้ทีมอื่นไม่เข้าใจว่า flag ทำอะไร
  • สร้าง flag ซ้ำสำหรับ feature เดียวกันในหลาย environment

💡 ตัวอย่างจากของจริง

ทีมที่มี flag หลักพันตัวมักบังคับใช้ naming convention ที่ชัดเจน (team-feature-purpose) เพื่อให้ค้นหาและ audit ได้ง่าย

ในส่วนไหนของ GrowthBook UI ที่คุณใช้สร้าง Feature ใหม่?
Default Value บน Feature มีไว้เพื่ออะไร?
เมธอด SDK ตัวไหนที่ต้องระบุ argument สำหรับ fallback อย่างชัดเจน?
จะเกิดอะไรขึ้นถ้าคุณเปลี่ยนชื่อ Feature key ใน GrowthBook หลังจาก deploy ไปแล้ว?