Beta Testing
Run beta programs with feature flags — no separate builds required
Feature flags let you run beta programs inside your production application. Instead of maintaining a separate beta build, you enable new features for a specific set of users while everyone else sees the existing experience.
Why use flags for beta testing?
| Traditional beta | Flag-based beta |
|---|---|
| Separate build/environment | Same production build |
| Manual enrollment process | Instant add/remove via dashboard |
| All-or-nothing feature access | Granular per-feature control |
| Hard to scale | Works at any scale |
| Delayed feedback loop | Real-time control |
Setting up a beta program
Step 1: Create a target list
- Go to Target Lists in the Flagpool dashboard
- Click New Target List
- Name it
beta-testers - Set the attribute to
userId - Add your beta users' IDs
Step 2: Create feature flags
Create a boolean flag for each beta feature:
beta-new-dashboardbeta-ai-assistantbeta-advanced-analytics
Step 3: Add targeting rules
For each beta flag, add a rule:
| Attribute | Operator | Value | Variation |
|---|---|---|---|
userId | inTargetList | beta-testers | 0 (enabled) |
This ensures only users in the beta-testers list see the feature.
Step 4: Evaluate in code
if (client.isEnabled('beta-new-dashboard')) {
showNewDashboard()
} else {
showCurrentDashboard()
}
import { Feature } from '@flagpool/react'
function Dashboard() {
return (
<Feature flag="beta-new-dashboard" fallback={<CurrentDashboard />}>
<NewDashboard />
</Feature>
)
}
Managing beta users
Adding users
Add user IDs to the beta-testers target list in the dashboard. The change takes effect on the next SDK poll cycle (within 30 seconds by default).
Removing users
Remove user IDs from the target list. The user will stop seeing beta features on their next session.
Self-service enrollment
You can also use context attributes for self-service beta enrollment. For example, if users can opt in to a beta program in your app:
- Store a
betaOptIn: trueattribute on the user - Pass it in the context:
{ userId: '...', betaOptIn: true } - Create a targeting rule:
betaOptIn eq true→ enabled
Combining with percentage rollouts
For larger beta programs, combine target lists with rollouts:
- Target list — always enable for specific VIP beta testers
- Rollout — additionally roll out to 5% of all users for broader testing
Since targeting rules take precedence over rollouts, your VIP testers always see the feature while a random 5% of other users also get access.
Graduating from beta
When a beta feature is ready for general release:
- Increase the rollout percentage to 100%
- Monitor metrics for a few days
- Remove the targeting rules and target list references
- Remove the flag check from code
- Archive the flag in the dashboard
Next steps
- Targeting — all targeting operators and rules
- A/B Testing — run experiments with feature flags
- Kill Switches — emergency disable for beta features