# expo-auth-session

> Expo module for browser-based authentication

Latest version **57.0.12** (published 2026-09-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install expo-auth-session
pnpm add expo-auth-session
yarn add expo-auth-session
bun add expo-auth-session
```

## Health

**Score 65/100 (B)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score; popular repo; extremely popular.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 57.0.12 |
| Published | 2026-09-11 |
| First published | 2020-03-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 52338 |
| Author | 650 Industries, Inc. |
| Maintainers | ide, brentvatne, expoadmin, exponent, bycedric, kudochien, alanhughes, tsapeta, expo-bot, philpl, ccheever, szdziedzic, wschurman |
| Keywords | react-native, expo, expo-auth-session, auth, oauth, authentication, auth-session |

## Links

- npm: https://www.npmjs.com/package/expo-auth-session
- Repository: https://github.com/expo/expo
- Homepage: https://docs.expo.dev/versions/latest/sdk/auth-session
- Issues: https://github.com/expo/expo/issues
- npm.io page: https://npm.io/package/expo-auth-session

## Alternatives

- [@clerk/clerk-expo](https://npm.io/package/@clerk/clerk-expo.md) — 133.6K weekly downloads
- [@pothos/plugin-authz](https://npm.io/package/@pothos/plugin-authz.md) — 12.4K weekly downloads
- [@bounded-sh/client](https://npm.io/package/@bounded-sh/client.md) — 3.2K weekly downloads
- [@luigi-project/plugin-auth-oauth2](https://npm.io/package/@luigi-project/plugin-auth-oauth2.md) — 2.3K weekly downloads
- [@nocobase/plugin-verification](https://npm.io/package/@nocobase/plugin-verification.md) — 2.0K weekly downloads

## Recent versions

- 57.0.12 (latest) — 2026-09-11
- 57.0.13 (sdk-57) — 2026-09-24
- 58.0.4 (next) — 2026-09-22
- 56.0.19 (sdk-56) — 2026-09-17
- 58.0.0-canary-20260909-ea7a89a (canary) — 2026-09-09
- 55.0.18 (sdk-55) — 2026-08-17
- 56.0.13-canary-20260701-9100865 (canary-sdk-56) — 2026-07-01
- 55.0.7-canary-20260429-a5e59cf (canary-sdk-55) — 2026-04-29
- 7.0.11 (sdk-54) — 2026-04-27
- 5.5.2 (sdk-51) — 2024-05-02
- 5.4.0 (sdk-50) — 2023-12-12
- 58.0.3 — 2026-09-21
- 58.0.2 — 2026-09-16
- 58.0.1 — 2026-09-14
- 58.0.0 — 2026-09-10
- … 272 more at https://npm.io/package/expo-auth-session/versions

## README

# expo-auth-session

`AuthSession` is the easiest way to implement web browser based authentication (for example, browser-based OAuth flows) to your app, built on top of [expo-web-browser](https://www.npmjs.com/package/expo-web-browser).

# API documentation

- [Documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/auth-session)
- [Documentation for the main branch](https://docs.expo.dev/versions/unversioned/sdk/auth-session/)

# Installation in managed Expo projects

For [managed](https://docs.expo.dev/archive/managed-vs-bare/) Expo projects, please follow the installation instructions in the [API documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/auth-session).

# Installation in bare React Native projects

For bare React Native projects, you must ensure that you have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before continuing.

### Add the package to your npm dependencies

```
npx expo install expo-auth-session expo-crypto
```

### Configuration

To use this module, you need to set up React Native deep linking in your application. For more information, check out [React Native documentation](https://reactnative.dev/docs/linking).

#### Add support for React Native deep linking

- **Android**:

  Add intent filter and set the `launchMode` of your MainActivity to `singleTask` in `AndroidManifest.yml`:

  ```xml
  <activity
      android:name=".MainActivity"
      android:launchMode="singleTask">
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <!-- Accepts URIs that begin with "example://gizmos” -->
          <data android:scheme="example"
              android:host="gizmos" />
      </intent-filter>
  ```

  For more information about the available configuration, check out [Android documentation](https://developer.android.com/training/app-links/deep-linking#adding-filters).

* **iOS**:

  Add following lines to your `AppDelegate.m`:

  ```obj-c
  #import <React/RCTLinkingManager.h>

  // iOS 9.x or newer
  - (BOOL)application:(UIApplication *)application
              openURL:(NSURL *)url
              options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
  {
      return [RCTLinkingManager application:application openURL:url options:options];
  }

  // iOS 8.x or older
  - (BOOL)application:(UIApplication *)application
              openURL:(NSURL *)url
    sourceApplication:(NSString *)sourceApplication
           annotation:(id)annotation
  {
      return [RCTLinkingManager application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];
  }
  ```

  Add following lines to `Info.plist`:

  ```xml
  <dict>
      ...
      <key>CFBundleURLTypes</key>
      <array>
          <dict>
              <key>CFBundleURLName</key>
              <string>gizmos</string>
              <key>CFBundleURLSchemes</key>
              <array>
                  <string>example</string>
              </array>
          </dict>
      </array>
  </dict>
  ```

# Contributing

Contributions are very welcome! Please refer to guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).

---
_Source: https://npm.io/package/expo-auth-session · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
