npm / @better-auth/expo
@better-auth/expo
What changed in @better-auth/expo 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.
2 breaking5 security6 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@better-auth/expo 113 changes
Breaking changes 2
Custom storage implementations must provide both synchronous and asynchronous SecureStore methods.
getCookie() now returns a promise, using asynchronous SecureStore access to prevent synchronous crashes when iOS Keychain storage is unavailable.
Security 5
Leftover session data is cleared from secure storage after upgrades or sign-out.
Prevents Expo apps from sending unauthenticated requests while large stored cookies are being updated, and restores the previous cookie value if an update is interrupted or incomplete.
@better-auth/scim: account takeover and stale access via SCIM provider-id collision
@better-auth/stripe: cross-organization billing tampering in organization subscription actions
OAuth 2.1 Provider: Unprivileged users can register OAuth clients
Fixes and other changes 6
Social account linking with an ID token now sends the Expo origin header, allowing native link flows with a session cookie to pass origin validation.
Prevents corrupted cookies during concurrent updates.
Session data containing multibyte characters is stored safely in Expo secure storage.
Expo client plugins now compose with createAuthClient without TypeScript errors, and the resulting client preserves each plugin's inferred actions.
storageAdapter.setItem() is synchronous; use setItemAsync() when the write must be awaited.
Restores client plugin declaration compatibility for downstream TypeScript consumers.