FabricFabricExperiments
Concepts

Assignment and sticky bucketing

Deterministic bucketing keeps users assigned consistently across SDKs.

Assignment uses deterministic hashing so the same subject, experiment, salt, and variant weights produce the same decision everywhere.

The pinned cross-SDK contract is MurmurHash3 x86-32 with seed 0. SDKs hash the UTF-8 bytes of ${experimentId}:${salt}:${subjectId}, interpret the result as an unsigned 32-bit integer, and take modulo 10000 to obtain a bucket from 0 to 9999. Variant weights form cumulative ranges over those 10,000 buckets. The experiment sampling gate uses the independent key ${experimentId}:sample:${salt}:${subjectId} before variant assignment.

Key properties:

  • stable across SDK implementations,
  • covered by frozen conformance vectors,
  • supports sample rates and variant weights,
  • avoids reassignment drift when deployments change,
  • sticky client storage keeps browser users stable across reloads.

The web SDK fetches a manifest, computes the decision locally, stores the sticky assignment, and emits an exposure when activation occurs.