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

# iOS

This guide is designed to help you style our default Universal Checkout UI. If you would like to build your own UI from scratch then check out our [Headless Universal Checkout guide](https://primer.io/docs/checkout/headless.md).

## Localization and languages

Universal Checkout supports multiple languages out of the box, enabling you to adapt its UI to the relevant market.

> [!NOTE]
>
> Universal Checkout uses the device language by default. If this language is not supported, Universal Checkout automatically falls back to English.

### Supported locales

| Language | Minimum versions |
| - | - |
| Arabic | v1.29.0 |
| Bulgarian | v2.35.0 |
| Catalan | v2.30.0 |
| Czech | v2.35.0 |
| Danish | v1.26.0 |
| German | v1.26.0 |
| Greek | v1.26.0 |
| English | v1.0.0 |
| Spanish | v1.26.0 |
| Spanish (Argentina) | v2.35.0 |
| Spanish (Mexico) | v2.35.0 |
| Estonian | v2.35.0 |
| Finnish | v2.30.0 |
| French | v1.26.0 |
| Hebrew | v2.30.0 |
| Croatian | v2.35.0 |
| Hungarian | v2.35.0 |
| Indonesian | v2.30.0 |
| Italian | v1.26.0 |
| Japanese | v2.35.0 |
| Korean | v2.30.0 |
| Lithuanian (Lithuania) | v2.30.0 |
| Latvian | v2.35.0 |
| Malay | v2.16.3 |
| Norwegian | v1.26.0 |
| Dutch | v1.26.0 |
| Polish | v1.26.0 |
| Portuguese | v1.26.0 |
| Portuguese (Brazil) | v2.35.0 |
| Romanian | v2.35.0 |
| Russian | v2.35.0 |
| Slovak | v2.35.0 |
| Slovenian | v2.30.0 |
| Serbian | v2.30.0 |
| Swedish | v1.0.2 |
| Thai | v2.16.3 |
| Turkish | v1.26.0 |
| Ukrainian | v2.30.0 |
| Vietnamese | v2.35.0 |
| Chinese (Mainland China - Simplified characters) | v2.16.3 |
| \[BETA] Chinese (Hong-Kong - Traditional characters) | v2.16.3 |
| \[BETA] Chinese (Taiwan - Traditional characters) | v2.16.3 |

### Right-to-left

Universal Checkout automatically switches to a right-to-left layout when necessary.

## Theme

To customize the appearance of the SDK define the `PrimerTheme` object, then pass it in as an argument when configuring the SDK.

```swift SWIFT theme={"dark"}
// example:
let theme = PrimerTheme(
    cornerRadiusTheme: CornerRadiusTheme(textFields: 8),
    colorTheme: PrimerDefaultTheme(tint1: themeColor),
    layout: PrimerLayout(showTopTitle: false, textFieldHeight: 44),
    textFieldTheme: .outlined
)

Primer.shared.configure(theme: theme)
```

### Custom Colors

Access the `colorTheme` property to add custom colors.

```swift SWIFT theme={"dark"}
PrimerTheme(
  colorTheme: ColorTheme
  darkTheme: ColorTheme // iOS 13.0+ only
)

protocol ColorTheme {
  var text1: UIColor { get } // headers, main text
  var text2: UIColor { get } // white text for darker buttons
  var text3: UIColor { get } // system text, theme colored text
  var secondaryText1: UIColor { get } // less visible subheaders
  var main1: UIColor { get } // backgrounds
  var main2: UIColor { get } // table cells, default buttons
  var tint1: UIColor { get } // borders, theme colored components
  var neutral1: UIColor { get } // unselected buttons
  var disabled1: UIColor { get } // disabled components
  var error1: UIColor { get } // error borders and messages
}

// example:
let colorTheme = PrimerDefaultTheme(tint1: .systemPink)
```

### Rounded Corners

Update the `cornerRadiusTheme` to change the corner radius of different components.

```swift SWIFT theme={"dark"}
let cornerRadiusTheme = CornerRadiusTheme(buttons: 8, sheetView: 18)
let theme = PrimerTheme(cornerRadiusTheme: cornerRadiusTheme)
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.