v1.7.0-rc.3
Release candidate with breaking changes to Microsoft account identifiers, addition of RFC 8628 device authorization grant support, RP-initiated logout for OAuth providers, and database indexing improvements. Includes bug fixes for TypeScript composition, JWT session caching deadlocks, and SCIM/SSO enhancements.
better-auth
❗ Breaking Changes
- Added database indexes for device and user code lookups in the device authorization flow (#10059)
Migration: MySQL and SQL Server users must convert device code and user code columns to bounded strings (max 191 characters) and resolve any oversized values before applying the migration.
- Changed Microsoft and
microsoftEntraIdaccounts to use the stableoidclaim as the account identifier instead ofsub(#10204)
Migration: Migrate existing Microsoft account rows keyed by
subtooidbefore upgrading; tokens without a validoidclaim are rejected after the update.
Features
- Added RP-initiated logout support for Generic OAuth providers, redirecting users to their OpenID provider's logout endpoint on sign-out (#9368)
- Added RFC 8628 device authorization grant support to the OAuth provider, enabling device-flow token exchanges for registered OAuth clients (#10135)
Bug Fixes
- Enabled native database transactions in test instances for Postgres and MySQL databases.
- Fixed a deadlock during sign-up when JWT session caching and native transactions are both enabled on single-connection databases (#10622)
- Fixed TypeScript errors when composing One Tap, Electron, and Expo plugins with
createAuthClient(#10505)
For detailed changes, see CHANGELOG
@better-auth/core
❗ Breaking Changes
- Changed Microsoft and
microsoftEntraIdaccounts to use the stableoidclaim as the account identifier instead ofsub(#10204)
Migration: Migrate existing Microsoft account rows keyed by
subtooidbefore upgrading; tokens without a validoidclaim are rejected after the update.
Features
- Added RP-initiated logout support for Generic OAuth providers, redirecting users to their OpenID provider's logout endpoint on sign-out (#9368)
Bug Fixes
- Fixed TypeScript errors when composing One Tap, Electron, and Expo plugins with
createAuthClient(#10505)
For detailed changes, see CHANGELOG
@better-auth/oauth-provider
❗ Breaking Changes
- Aligned MCP authorization with the 2026-07-28 specification, replacing legacy
type/publicclient fields withapplicationTypeand enforcing stricter redirect validation and scope controls (#10577)
Migration: Apply a database migration to add
applicationType, nullableclientDiscoveryId, andclientCredentialsScopescolumns; backfillapplicationTypefrom existing values andclientCredentialsScopesto[]for all clients; deduplicate(clientId, resourceId)pairs before applying the new unique index. ReplaceOAuthClientstring-index accesses withOAuthClient & YourExtensionMetadata, and composemcp()withcimd()explicitly if using Client ID Metadata Documents.
Features
- Added RFC 8628 device authorization grant support to the OAuth provider, enabling device-flow token exchanges for registered OAuth clients (#10135)
Bug Fixes
- Fixed MCP scope enforcement to return a
403with an RFC 6750insufficient_scopeWWW-Authenticatechallenge listing all missing scopes, allowing clients to request them in a single authorization request.
For detailed changes, see CHANGELOG
@better-auth/cimd
❗ Breaking Changes
- Aligned MCP authorization with the 2026-07-28 specification, replacing legacy
type/publicclient fields withapplicationTypeand enforcing stricter redirect validation and scope controls (#10577)
Migration: Apply a database migration to add
applicationType, nullableclientDiscoveryId, andclientCredentialsScopescolumns; backfillapplicationTypefrom existing values andclientCredentialsScopesto[]for all clients; deduplicate(clientId, resourceId)pairs before applying the new unique index. ReplaceOAuthClientstring-index accesses withOAuthClient & YourExtensionMetadata, and composemcp()withcimd()explicitly if using Client ID Metadata Documents.
Bug Fixes
- Fixed Client ID Metadata Document caching to follow shared-cache freshness rules, preferring
s-maxage, honoring conditional revalidation, and treating ambiguous or duplicate freshness directives as immediately stale to prevent unique-constraint failures on concurrent refreshes.
For detailed changes, see CHANGELOG
@better-auth/mcp
❗ Breaking Changes
- Aligned MCP authorization with the 2026-07-28 specification, replacing legacy
type/publicclient fields withapplicationTypeand enforcing stricter redirect validation and scope controls (#10577)
Migration: Apply a database migration to add
applicationType, nullableclientDiscoveryId, andclientCredentialsScopescolumns; backfillapplicationTypefrom existing values andclientCredentialsScopesto[]for all clients; deduplicate(clientId, resourceId)pairs before applying the new unique index. ReplaceOAuthClientstring-index accesses withOAuthClient & YourExtensionMetadata, and composemcp()withcimd()explicitly if using Client ID Metadata Documents.
For detailed changes, see CHANGELOG
@better-auth/scim
Features
- Added SCIM Enterprise User extension attributes and classic user attributes with improved Microsoft Entra interoperability (#10620)
- Added a managed connection catalog for runtime SCIM tenant connection and credential management through server-only
auth.apimethods (#10592)
Bug Fixes
- Fixed Microsoft Entra interoperability by accepting case-insensitive string boolean values for the SCIM
activefield andprimarysub-attributes ofemails,phoneNumbers,addresses,roles, andentitlementsat the HTTP ingress. - Added
managedConnectionsconfiguration to allow trusted server code to create, issue, rotate, and revoke SCIM tenant connections and bearer credentials through server-onlyauth.apimethods without a code-defined connection. - Fixed dynamic SCIM connection decommissioning to allow retaining a terminal connection binding by supplying the provisioning domain before the first authenticated request.
For detailed changes, see CHANGELOG
@better-auth/sso
Features
- Extended
resolveUserto SAML sign-ins with a discriminatedprotocolfield, and addedguardProviderMutationto authorize SSO provider updates and deletions (#10621)
Bug Fixes
- Fixed SSO provider registration to allow reusing a SCIM connection ID, since SCIM connections no longer participate in the authentication provider namespace.
- Improved SAML security by verifying assertion signatures on the raw XML rather than a pre-parsed response, enforcing signing policy and size limits on SP metadata, and correcting
wantAssertionsSignedto control assertion signing instead of response signing.
For detailed changes, see CHANGELOG
@better-auth/electron
Bug Fixes
- Fixed TypeScript errors when composing One Tap, Electron, and Expo plugins with
createAuthClient(#10505)
For detailed changes, see CHANGELOG
@better-auth/expo
Bug Fixes
- Fixed TypeScript errors when composing One Tap, Electron, and Expo plugins with
createAuthClient(#10505)
For detailed changes, see CHANGELOG
@better-auth/kysely-adapter
Bug Fixes
- Fixed raw database instances (better-sqlite3,
node:sqlite,bun:sqlite,mysql2,pg) passed directly asdatabaseto automatically receive native adapter transactions, matching the explicit{ db }/{ dialect }config shapes and unblocking plugins like@better-auth/scimwhen using the quickstart configuration.
For detailed changes, see CHANGELOG
@better-auth/passkey
Features
- Added an optional
createSessionsetting to passkey registration that signs the user in automatically on successful registration (#9873)
For detailed changes, see CHANGELOG
Contributors
Thanks to everyone who contributed to this release:
@brentmitchell25, @GautamBytes, @gustavovalverde
Full changelog: v1.7.0-rc.2...v1.7.0-rc.3
Source: original entry ↗
More from Better Auth
Follow Better Auth to get its new changes in your feed and email digest.
Magic Link upgrade and critical security fixes
Better Auth v1.7.7 addresses a critical Magic Link account-takeover vulnerability and multiple security issues including OAuth/SAML sign-in bugs and missing JSON headers in error responses. Magic Link requires a server upgrade with verification storage coordination, but no database migration is needed.
v1.7.6
Better Auth v1.7.6 adds support for customizable banned user messages and Vercel BotID captcha provider for authentication. This release fixes critical bugs including React hydration mismatches, password length validation, overlapping auth query requests, model identity issues across multiple adapters, and OAuth social account linking.
v1.7.5 Release
This release adds database schema name support for direct PostgreSQL connections and includes multiple bug fixes across better-auth packages, including improvements to server-side logging, database migrations, index validation, and adapter initialization.