> For the complete documentation index, see [llms.txt](https://docs.hackle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hackle.io/en/development-guide/sdk/evaluation-mode.md).

# Evaluation Mode

The Hackle SDK determines which A/B Test variation a user belongs to, whether a Feature Flag is on, and which Remote Config value to use through an **evaluation** process.\
Evaluation takes user information and workspace configuration as input and outputs the distribution result.

The Hackle SDK provides two evaluation modes depending on where evaluation is performed.\
You choose the evaluation mode when initializing the SDK; if you do not configure it, the SDK operates with Local Evaluation.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><i class="fa-mobile">:mobile:</i></td><td><strong>Local Evaluation</strong></td><td>The SDK evaluates directly on the user's device.<br>This is the default evaluation mode.</td><td><a href="/en/development-guide/sdk/evaluation-mode/local-evaluation.md">Local Evaluation</a></td></tr><tr><td><i class="fa-server">:server:</i></td><td><strong>Remote Evaluation</strong></td><td>The SDK looks up results that the Hackle server evaluated in advance.</td><td><a href="/en/development-guide/sdk/evaluation-mode/remote-evaluation.md">Remote Evaluation</a></td></tr></tbody></table>

### Differences Between the Two Modes

<table><thead><tr><th width="191.1796875">Category</th><th>Local Evaluation</th><th>Remote Evaluation</th></tr></thead><tbody><tr><td>Evaluation location</td><td>User's device (SDK)</td><td>Hackle server</td></tr><tr><td>Reflecting Dashboard changes</td><td><p>On SDK initialization,</p><p>On SDK fetch</p></td><td>On SDK initialization,<br>When user information is updated</td></tr><tr><td>Information used for distribution</td><td>Based on user information stored on the device</td><td>Based on user information stored on the server</td></tr><tr><td>Behavior on a distribution/decision call</td><td>The SDK evaluates directly<br>using the stored configuration</td><td>Looks up the stored evaluation result</td></tr><tr><td>Latency</td><td>Evaluates without network communication</td><td>Handled without network communication if user information has not changed<br>Communicates with the server to re-evaluate when user information changes</td></tr><tr><td>Supported SDKs</td><td>All SDKs</td><td>Some Client SDKs</td></tr></tbody></table>

{% hint style="success" %}
In both modes, no network call occurs at the time of the distribution/decision call, so it is processed without any slowdown.

For details, see the [SDK Latency](/en/development-guide/sdk/sdk-latency.md) document.
{% endhint %}

{% hint style="info" %}

### Which mode should you choose?

The default evaluation mode is **Local Evaluation**, and it is suitable in most cases.

* When targeting with information the device already has, such as app version, device OS, or User Properties set on the client
* When you need the distribution result at the moment user information changes, such as the screen right after login
* When you need screen-based targeting, such as with pagePath

Use **Remote Evaluation** when distribution must be based on user information stored on the Hackle server.

* When you update User Properties from your server using the HTTP API and target with that information
* When you update properties to the Hackle server one time, such as subscription details or membership tier, and target with that information
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hackle.io/en/development-guide/sdk/evaluation-mode.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
