Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
chore(expo): add changeset for native component theming
  • Loading branch information
chriscanin committed Apr 8, 2026
commit b5af733345d4cc4be9d2a378b22a596135e5887d
24 changes: 24 additions & 0 deletions .changeset/expo-native-component-theming.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
'@clerk/expo': minor
---

Add native component theming via the Expo config plugin. You can now customize the appearance of Clerk's native components (`<AuthView />`, `<UserButton />`, `<UserProfileView />`) on iOS and Android by passing a `theme` prop to the plugin pointing at a JSON file:

```json
{
"expo": {
"plugins": [
["@clerk/expo", { "theme": "./clerk-theme.json" }]
]
}
}
```

The JSON theme supports:

- `colors` — 15 semantic color tokens (`primary`, `background`, `input`, `danger`, `success`, `warning`, `foreground`, `mutedForeground`, `primaryForeground`, `inputForeground`, `neutral`, `border`, `ring`, `muted`, `shadow`) as 6- or 8-digit hex strings.
- `darkColors` — same shape as `colors`; applied automatically when the system is in dark mode.
- `design.borderRadius` — number, applied to both platforms.
- `design.fontFamily` — string, **iOS only**.

Theme JSON is validated at prebuild. On iOS the theme is embedded into `Info.plist` (and `UIUserInterfaceStyle` is removed when `darkColors` is present, so the system can switch modes). On Android the JSON is copied into `android/app/src/main/assets/clerk_theme.json`.
Loading