Skip to content
Open
Changes from all commits
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
38 changes: 37 additions & 1 deletion docs/reference/expo/native-components/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Native components require:

- A [development build](https://docs.expo.dev/develop/development-builds/introduction/) (`npx expo run:ios` or `npx expo run:android`), as these components are not available in Expo Go.

- The `@clerk/expo` plugin configured in your `app.json` file:
- The `@clerk/expo` plugin configured in your `app.json` file. See the [available plugin options](#expo-plugin-options).

```json {{ filename: 'app.json' }}
{
Expand All @@ -36,6 +36,42 @@ Native components require:

- If using social connections, you must register your native application credentials in the Clerk Dashboard. See the [Sign in with Google](/docs/guides/configure/auth-strategies/sign-in-with-google) and [Sign in with Apple](/docs/guides/configure/auth-strategies/sign-in-with-apple) guides for setup steps.

### Expo plugin options

The plugin accepts the following options:

<Properties>
- `appleSignIn`
- `boolean`

Whether to add the `com.apple.developer.applesignin` entitlement. Set to `false` if your app does not use Apple Sign In. Defaults to `true`.

---

- `keychainService`
- `string`

Custom keychain service identifier. Required if you need extension targets (widgets, App Clips, Watch) to share the keychain with the main app.
</Properties>

#### Example

```json {{ filename: 'app.json' }}
{
"expo": {
"plugins": [
[
"@clerk/expo",
{
"appleSignIn": false,
"keychainService": "com.example.myapp"
}
]
]
}
}
```

## How it works

The native components handle authentication through the native Clerk SDKs ([clerk-ios](https://github.com/clerk/clerk-ios) and [clerk-android](https://github.com/clerk/clerk-android)). When authentication completes, the session is automatically synchronized to the JavaScript SDK:
Expand Down
Loading