---
title: Track custom variables - React Native (classic)
description: Track custom variables with the Contentsquare bridge for React Native
lastUpdated: 14 April 2026
source_url:
  html: https://docs.contentsquare.com/en/react-native/track-custom-variables/
  md: https://docs.contentsquare.com/en/react-native/track-custom-variables/index.md
---

> Documentation index: https://docs.contentsquare.com/llms.txt
> Use this file to discover all available pages before exploring further.

The latest CSQ SDK is here! Learn how to [upgrade your app](https://docs.contentsquare.com/en/csq-sdk-react-native/experience-analytics/upgrade-from-cs-sdk/).

Custom variables attach additional information about the screen, user, or session to screenview events. For example, they can include information on the current layout of a screen, like day/night mode.

## Defining custom variables

To define and send custom variables, follow this example:

```typescript
import Contentsquare, { CustomVar } from "@contentsquare/react-native-bridge";


const cVar1: CustomVar = {
  index: 1,
  key: "CustomVarName1",
  value: "CustomVarValue1",
};
const cVar2: CustomVar = {
  index: 2,
  key: "CustomVarName2",
  value: "CustomVarValue2",
};


Contentsquare.send("ScreenName", [cVar1, cVar2]);
```

Warning

The same (index, name) pair values should be used across the application to have consistent analytics results

**Screen A** with CVAR:

* `index` = 4
* `name` = `hero_banner_type`
* `value` = "carousel"

**Screen B** with CVAR:

* `index` = 4
* `name` = `hero_banner_type`
* `value` = `slider`

## Limits

### On the server side

* It is possible to save up to 20 distinct custom variables per screenview. If more are received, only the first 20 custom variables, based on their `index` value, will be kept.
* The `index` value of the custom variable is used to determine which custom variables to be kept. Only `index` values between 1 and 20 will be taken into account.

### On the SDK side

* Every custom variable is composed of `index`, `name` and `value`.
* If you are using the same `index` twice in the same screen, only the first (`name`, `value`) pair associated with the `index` will be kept.
* It is possible to save up to 20 custom vars on the same screenview.
* In case `name`(max. 512 characters) or `value`(max. 255 characters) maximum character length is reached, the SDK will automatically trim the exceeding characters.
* If `name` or `value` are empty, the SDK will instead send the literal string `"cs-empty"`.
* Use a consistent index for a given custom var within an application — for instance, if the "screen layout" is collected with an `index` of 3, use the slot 3 for this information on every screen of the application.
