v3.0.0
Breaking changes
OidcProviderStorageAdapter.getSessionByTokenrequiresexpiresAt(#334) — presence-based enforcement meant a lazy adapter returning{ userId }silently skipped session expiry. Custom storage adapters must returnexpiresAt(ms).- Deprecated provider args removed —
nativeEmailAndPasswordno longer accepts top-levelsendVerificationEmailOnSignUp/sendVerificationEmailOnSignIn; useemail.sendOnSignUp/email.sendOnSignIn. resolvePermissionOverrideadapter removed — express permission variance as roles;expandPermissionsis unchanged.- Session fallback removals —
revokePasskeySessionsdrops pre-credentialIdcompat (#337); session refresh no longer readsidentityIdfrom JWT claims (#373);revokeSessionFamilyno longer matchesfamilyId-less sessions (#374). Deploy the latest 2.x first if upgrading from < 2.5.x so live sessions backfill. path-to-regexpv8 — advertised wildcard forms (X/(.*), gluedX(.*)) keep matching identically via internal translation to{*splat}; unnamed groups like/(a|b)/now throw a descriptive error atcreateRouteMatcherconstruction.- Stricter redirect validation — the OAuth
signInaction validatescallbackURL/errorURL/newUserURLagainst the trusted-origins allowlist; protocol-relative URLs andSec-Fetch-Sitebypasses closed. - Landing verifier binding — session-triple landings require the
__convexAuthLandingVerifiercookie from the initiating browser; cross-browser landings get?error=landing_verifier_mismatchunlessrequireLandingVerifier: false.
Migration guide: docs/(clients-and-migration)/v3-migration.md
Added
- TanStack Start SSR adapter —
@vortex-api/convex-auth/tanstack-start(+/server): app-origin HttpOnly cookie sessions, server-confidential refresh token, intent-based/api/authproxy. @vortex-api/convex-auth/test—register,convexAuthTest,modules,schemafor consumerconvex-testharnesses; wired into the component conformance suite.- API keys —
allowedIpRangesonissueApiKey/issueServiceOwnedApiKeyin the feature-gated component (parity with the monolith).
Fixed
revokeOtherSessionsspares the caller’s whole session family (excludeFamilyIdonrevokeSessionsForUser).- Family revocation scoped to rotated-token replay — administrative revocation replays no longer nuke the family.
- SSR/auth hardening sweep — redirect allowlists, CSRF, CORS landings, response forwarding (7 issues).
- Index cleanup — 8 covered prefix indexes dropped (apply on next
convex dev/push); creation-ordered list endpoints keep dedicated indexes.
Published with npm provenance (sigstore).