The control treatment is a reserved treatment in Split. In other words, you cannot create a treatment named control. The control treatment is returned by the SDK in the following scenarios.
The targeting rules for a split are not defined: If you place your code behind a split and push your code to production without defining the targeting rules for that split in the web console, the SDK does not have any information on the rules or even the possible treatments of this split. In this scenario, the SDK returns the control treatment.
The SDK does not have the feature cached: When you specify the targeting rules for a split in the web console, the SDK fetches and caches the rules for use during treatment evaluations. This process is near instantaneous. By default, SDKs poll roughly every 30 seconds for changes to splits. During this time, if the SDK is asked to evaluate a treatment for that split, the SDK does not know the targeting rules for that split. During this time, the SDK returns the control treatment.
The SDK encounters an exception: SDKs are designed to never throw exceptions or errors. If the SDK encounters an exception, it returns the control treatment.
When evaluating which treatment to show to a customer, we recommend handling the control treatment in the same way as the default treatment.