> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flagsync.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rollouts

> Understand how FlagSync evaluates percentage rollouts for flags.

## Percentage Rollouts

FlagSync uses a deterministic hashing algorithm to evaluate percentage rollouts, ensuring users receive the same variant on each evaluation.

<Steps>
  <Step title="Define Rollout">
    Set percentage distributions in the dashboard (e.g., 25% "Enabled", 75% "Disabled").

    <Frame>
      <img alt="Percentage rollout distribution" src="https://mintcdn.com/flagsync/dTCxWdoh9aH45uVC/images/flag-detailed.targeting.rollout.webp?fit=max&auto=format&n=dTCxWdoh9aH45uVC&q=85&s=92a777198411d1ae55c735c511a93f26" width="566" height="296" data-path="images/flag-detailed.targeting.rollout.webp" />
    </Frame>
  </Step>

  <Step title="Hash Inputs">
    Hash the user context key (e.g., user ID, email, attributes) and flag seed (unique per flag and environment).

    ```typescript theme={null}
    import { FlagSyncFactory } from '@flagsync/js-sdk';

    const factory = FlagSyncFactory({
      sdkKey: 'your-sdk-key',
      core: { key: 'user123' }
    });
    ```
  </Step>

  <Step title="Normalize and Bucket">
    Normalize the hash to 0-99, placing users in buckets.

    <Tip>
      e.g., a normalized value of 16 falls in the 0-24 bucket, serving "Enabled" at 25%.
    </Tip>
  </Step>

  <Step title="Reshuffle">
    In the dashboard, you can reshuffle an active percentage rollout, changing the flag seed and reassigning users to new buckets.
  </Step>

  <Step title="Fallback">
    If no rollout applies, the default "on" variant is served.

    <Tip>
      Return to [Flag Evaluation: Overview](/sdks-flag-evaluation/overview) for the full flow.
    </Tip>
  </Step>
</Steps>

## Next Steps

Explore more about flag evaluation and SDKs:

* Learn targeting logic in [Targeting](/sdks-flag-evaluation/targeting).
* Set up an SDK in [Setup](/sdks/setup).
* Start with [Quickstart: SDK](/quickstarts/sdk).
