# Client SDK vs Server SDK

This document explains client-side and server-side SDKs and helps you decide which SDK type to use. It is important to understand whether it is more appropriate to implement the features the SDK provides on the client or the server.

<table><thead><tr><th width="158.19921875">Type</th><th>Description</th></tr></thead><tbody><tr><td>Client-side</td><td><p>SDK features run on the user's device, such as a browser or mobile app.</p><p>Includes <code>JavaScript</code>, <code>Android</code>, <code>iOS</code>, <code>React</code>, <code>React Native</code>, <code>Flutter</code>, and <code>Unity</code> SDKs.</p></td></tr><tr><td>Server-side</td><td><p>SDK features run on the server providing the service.</p><p>Includes <code>Java/Kotlin</code>, <code>Python</code>, <code>Node.js</code>, <code>PHP</code>, and <code>Ruby</code> SDKs.</p></td></tr></tbody></table>

### Client-side SDK

![](/files/buWX58xZ47axcTgmnPfF)

SDK features run on the user's device, such as a web browser or mobile app, and the device communicates directly with the Hackle server.

The Client-side SDK is recommended in the following cases:

* When distributing users into variations to test visual element changes, such as button color or layout modifications
* When you need to track user events that occur on the client without server communication, such as clicks or scrolls
* When business logic is concentrated on the client side

### Server-side SDK

![2264](/files/MRYQ8r3UCFq0NI14HDQr)

SDK features run on the server and communicate server-to-server.

The Server-side SDK is recommended in the following cases:

* When distributing users into variations to test backend system changes, such as improving search algorithms or modifying recommendation logic
* When you need to track user events that are finalized on the server, such as user registration or purchase completion


---

# Agent Instructions: 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:

```
GET https://docs.hackle.io/en/development-guide/sdk/client-vs-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
