FeatureSignals

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

  1. A hash is computed from flagKey + "." + userKey using MurmurHash3
  2. The hash maps to a bucket in the range 0–9999 (basis points)
  3. If the user's bucket is less than the rollout percentage, they're included

Basis Points

Basis PointsPercentage
00%
250025%
500050%
750075%
10000100%

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 + flagKey always maps to the same bucket
  • Uniform distribution: MurmurHash3 provides excellent distribution
  • Cross-flag independence: Different flags use different hash inputs

Progressive Rollout Strategy

StagePercentageDuration
Canary1% (100 bp)1 day
Early adopters10% (1000 bp)3 days
Wider rollout50% (5000 bp)1 week
Full rollout100% (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.

Next Steps