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

# Labels

> Customise or localise the SDK's built-in UI text — buttons, placeholders, NPS anchors, and the progress counter — in code or from the dashboard.

The SDK renders a small amount of fixed **chrome** text — navigation buttons,
input placeholders, NPS anchors, and the progress counter. You can override any
of it to match your tone of voice or translate the survey UI into your app's
language.

<Note>
  Most teams set labels once from the dashboard — see
  [Dashboard → Labels](/dashboard/labels) — which needs no app update. Use
  `init({ labels })` only when you want code to override the dashboard (for
  example, to drive labels from your app's own i18n system).
</Note>

## Override in code

Pass a `labels` object to `init()`. Any key you omit falls back to the dashboard
value (if set) and then to the SDK default.

```tsx theme={null}
import { MicroSurvey } from "@insito/react-native";

MicroSurvey.init({
  apiKey: "proj_xxx",
  labels: {
    next: "Continue",
    submit: "Send",
    npsLowLabel: "Not likely",
    npsHighLabel: "Very likely",
    progressFormat: "Step {current} of {total}",
  },
});
```

## Available keys

All keys are optional and take a `string`.

| Key                   | Default                         | Where it shows                                    |
| --------------------- | ------------------------------- | ------------------------------------------------- |
| `next`                | `Next`                          | Advance to the next question                      |
| `submit`              | `Submit`                        | Submit the final answer                           |
| `back`                | `Back`                          | Go to the previous question                       |
| `skip`                | `Skip`                          | Skip an optional question                         |
| `submitting`          | `Submitting…`                   | Submit button while sending                       |
| `retry`               | `Retry`                         | After a failed submit                             |
| `otherOption`         | `Other`                         | Multiple-choice “Other” option label              |
| `otherPlaceholder`    | `Please specify…`               | “Other” free-text input                           |
| `openTextPlaceholder` | `Type your answer…`             | Default open-text placeholder                     |
| `npsLowLabel`         | `Not at all likely`             | NPS low anchor (under 0)                          |
| `npsHighLabel`        | `Extremely likely`              | NPS high anchor (under 10)                        |
| `progressFormat`      | `Question {current} of {total}` | Progress counter                                  |
| `progressFormatShort` | `Question {current}`            | Progress counter for surveys with branching logic |

The `progressFormat` and `progressFormatShort` strings support the `{current}`
and `{total}` placeholders, which the SDK fills in at render time.

<Note>
  Renaming `otherOption` changes only the displayed text. The stored answer value
  for an “Other” selection is unchanged, so your analytics and exports stay
  consistent.
</Note>

A per-question open-text placeholder (set on the question in the builder) still
takes priority over `openTextPlaceholder`.

## Precedence

Labels resolve in this order, with later sources winning:

`SDK defaults` → `Dashboard labels` → `init({ labels })`

This mirrors the [theming precedence](/sdk/react-native/theming) — code always
wins over the dashboard.
