Percentage Rollouts
Percentage rollouts let you gradually release a feature to a subset of users. FeatureSignals uses consistent hashing to deterministically assign users to buckets.
How It Works
- A hash is computed from
flagKey + "." + userKeyusing MurmurHash3 - The hash maps to a bucket in the range 0–9999 (basis points)
- If the user's bucket is less than the rollout percentage, they're included
Basis Points
| Basis Points | Percentage |
|---|---|
0 | 0% |
2500 | 25% |
5000 | 50% |
7500 | 75% |
10000 | 100% |
This provides granularity down to 0.01%.
Setting a Rollout
bash
curl -X PUT https://api.featuresignals.com/v1/projects/$PROJECT_ID/flags/my-flag/environments/$ENV_ID \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled": true, "percentage_rollout": 2500}'Consistency Guarantees
- Deterministic: The same
userKey+flagKeyalways maps to the same bucket - Uniform distribution: MurmurHash3 provides excellent distribution
- Cross-flag independence: Different flags use different hash inputs
Progressive Rollout Strategy
| Stage | Percentage | Duration |
|---|---|---|
| Canary | 1% (100 bp) | 1 day |
| Early adopters | 10% (1000 bp) | 3 days |
| Wider rollout | 50% (5000 bp) | 1 week |
| Full rollout | 100% (10000 bp) | — |
Rule-Level Rollouts
You can also set percentages on individual targeting rules:
json
{
"rules": [{
"priority": 1,
"conditions": [
{"attribute": "country", "operator": "eq", "values": ["US"]}
],
"value": true,
"percentage": 5000
}]
}This targets 50% of US users specifically.