unstale

npm / @supabase/supabase-js

@supabase/supabase-js

What changed in @supabase/supabase-js 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

12 breaking1 security1 deprecations52 new APIs and options5 behavior and defaults1 tooling168 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

@supabase/supabase-js 2240 changes

Breaking changes 12

  • Computed fields are left out of select('*'), changing which fields are included when selecting all.

    2.118.0release notes

  • Enables the passkey API by default.

    2.117.0release notes

  • Node.js 20 is no longer supported.

    2.110.0release notes

  • auth.resend() now uses a consistent confirmation flow.

    2.108.0release notes

  • The fix that encoded the client ID in OAuth requests was reverted.

    2.107.0release notes

  • The client info header now uses a structured metadata format.

    2.107.0release notes

  • Blocks setting a postgres_changes event listener after joining.

    2.101.0release notes

  • The default lockAcquireTimeout is lowered to 5 seconds.

    2.98.0release notes

  • The default realtime serializer is now 2.0.0.

    2.91.0release notes

  • The storage analytics from method now follows the { data, error } return pattern.

    2.87.0release notes

  • Renames StorageAnalyticsApi to StorageAnalyticsClient, changing the name developers use for the Storage Analytics API.

    2.83.0release notes

  • Node.js 20+ is required; node-fetch was removed.

    2.79.0release notes

Security 1

  • PostgREST adds URL length validation, affecting requests with long URLs.

    2.94.0release notes

Deprecations 1

New APIs and options 52

  • Uploads support content-encoding.

    2.118.0release notes

  • Adds support for bucket lifecycle configuration.

    2.116.0release notes

  • Adds an API for MFA recovery codes.

    2.116.0release notes

  • Adds support for topk values up to 10k.

    2.116.0release notes

  • Create URL methods now support versionId.

    2.116.0release notes

  • Adds getOpenApiSpec() to postgrest for retrieving the OpenAPI specification.

    2.115.0release notes

  • Realtime now allows waiting for Postgres changes.

    2.113.0release notes

  • OpenTelemetry tracing is available through an opt-in /tracing subpath.

    2.112.0release notes

  • Adds custom_claims_allowlist to the custom providers admin API.

    2.109.0release notes

  • Adds a postgres_changes filter builder, new operators, and select.

    2.109.0release notes

  • Exposes purgeCache for buckets and individual objects.

    2.109.0release notes

  • Adds an option for the replication connection system message.

    2.109.0release notes

  • Auth removes the navigator.locks-based mutex and introduces a commit guard and dispose() for cleanup.

    2.107.0release notes

  • Adds W3C/OpenTelemetry trace context propagation.

    2.106.0release notes

  • Adds WebAuthn registration, authentication, and management support for passkeys.

    2.105.0release notes

  • Adds deferred disconnect support in Realtime.

    2.105.0release notes

  • Adds the cacheNonce parameter to downloads.

    2.103.0release notes

  • Adds a PostgREST method for stripping null values.

    2.103.0release notes

  • PostgrestFilterBuilder is now exported from supabase-js for direct use.

    2.102.0release notes

  • StorageApiError is now exported from supabase-js for direct use.

    2.102.0release notes

  • PostgREST response types now include a success discriminator field.

    2.102.0release notes

  • Adds copyBindings functionality to realtime.

    2.101.0release notes

  • Adds RateLimitError to the Deno.errors namespace.

    2.99.1release notes

  • Adds admin CRUD methods for custom OIDC/OAuth providers.

    2.99.0release notes

  • The Provider type supports custom providers using the custom: prefix.

    2.98.0release notes

  • OAuth client create and update operations accept token_endpoint_auth_method.

    2.98.0release notes

  • The UserAttributes type adds currentPassword.

    2.98.0release notes

  • Adds an auth option to prevent automatic initialization in the constructor.

    2.97.0release notes

  • Adds the setHeader method to BaseApiClient.

    2.96.0release notes

  • Adds a canonical CORS headers export for edge functions.

    2.95.0release notesrelease notes

  • Exposes fetch parameters in the download method.

    2.95.0release notesrelease notes

  • Adds missing HTTP headers used for client platform and runtime detection.

    2.93.0release notes

  • Adds an optional jwt parameter to getAuthenticatorAssuranceLevel.

    2.93.0release notes

  • Heartbeat callbacks now expose heartbeat latency.

    2.90.0release notes

  • A configurable lock acquisition timeout is available to prevent deadlocks.

    2.90.0release notes

  • AMR claims now support string arrays.

    2.89.0release notes

  • Exports the DatabaseWithoutInternals utility type.

    2.89.0release notes

  • Adds the X (OAuth 2.0) provider for authentication.

    2.89.0release notes

  • The option now accepts a custom predicate for detecting a session in the URL.

    2.88.0release notes

  • A notin filter is now available in PostgREST.

    2.88.0release notes

  • Storage adds a from method, enabled by installing iceberg-js.

    2.86.0release notes

  • Realtime user broadcast push now supports metadata.

    2.85.0release notes

  • Adds the isdistinct and regex pattern matching operators for PostgREST queries.

    2.84.0release notes

  • Adds an endpoint for listing OAuth grants.

    2.82.0release notes

  • Adds an endpoint for revoking OAuth grants.

    2.82.0release notes

  • Functions requests support a configurable timeout.

    2.81.0release notes

  • Auth supports throwing errors instead of returning them.

    2.79.0release notes

  • Adds support for paginating and sorting buckets.

    2.77.0release notes

  • Adds API calls for managing OAuth 2.1 authorization consent.

    2.77.0release notesrelease notes

  • Adds support for updating OAuth clients.

    2.77.0release notesrelease notes

  • Adds an explicit REST call for Realtime.

    2.76.0release notes

  • Adds storage vectors and analytics in storage-js.

    2.76.0release notes

Behavior and default changes 5

  • Forwards options.mediation to navigator.credentials.get in signInWithPasskey.

    2.117.0release notes

  • PKCE verifiers are stored in per-flow slots so they survive overlapping flows.

    2.111.0release notes

  • httpSend can send binary payloads.

    2.107.0release notes

  • PostgREST now automatically retries transient errors.

    2.102.0release notes

  • PostgREST adds timeout protection for requests.

    2.94.0release notes

Tooling 1

  • postgrest-typegen output resolves no-argument rpc overloads.

    2.118.0release notes

Fixes and other changes 168

  • Functions now send a Blob or File with its own content type.

    2.117.3release notes

  • Storage now sends multipart fields before files.

    2.117.3release notes

  • The PostgREST retry guard treats TimeoutError as an abort.

    2.117.3release notes

  • Avoids instantiation depth errors for large relationship unions.

    2.117.2release notes

  • Returns the stored session when a refresh loses to another tab.

    2.117.1release notes

  • Silences a commit-guard-discarded refresh during initial session handling.

    2.116.0release notes

  • Drops the legacy prefix from lifecycles.

    2.116.0release notes

  • Warns when schema is passed outside db options.

    2.116.0release notes

  • Storage object versioning was updated; the notes do not specify the details.

    2.114.0release notes

  • An unverified factor is unenrolled after registration fails.

    2.114.0release notes

  • Converts a stolen-lock AbortError when acquireTimeout is 0.

    2.112.4release notes

  • Warns when the deprecated lock option is used.

    2.112.4release notes

  • Uses the custom logger for the warning when send() falls back to REST.

    2.112.4release notes

  • Prevents an unhandled rejection during refresh.

    2.112.4release notes

  • Trace context headers are added to the canonical CORS allow-list, so they are allowed by CORS.

    2.112.3release notes

  • Trace propagation sampling and diagnostics are improved.

    2.112.3release notes

  • Prevents duplicate on bindings in realtime.

    2.112.2release notes

  • Clears stale join payload on sign-out.

    2.112.2release notes

  • Auth preserves the error message for 5xx errors.

    2.112.1release notes

  • Calling setAuth no longer disables token refresh.

    2.112.1release notes

  • The return type mismatch for createSignedUrls is resolved.

    2.112.0release notes

  • The db retry option is now forwarded.

    2.112.0release notes

  • throwOnError is now honoured when maybeSingle finds multiple rows.

    2.112.0release notes

  • StorageApiError now exposes the service error code.

    2.112.0release notes

  • UUID validation now accepts uppercase UUIDs.

    2.112.0release notes

  • Realtime now preserves presence refs.

    2.110.9release notes

  • Console noise from stale refresh tokens is downgraded.

    2.110.9release notes

  • Aborted and transient fetch failures are logged with console.warn instead of console.error.

    2.110.8release notes

  • Object keys are URL-encoded in CDN purge methods.

    2.110.8release notes

  • Response Content-Type matching is case-insensitive.

    2.110.8release notes

  • The Node warning is skipped when running in Deno.

    2.110.8release notes

  • The cross-signal abort listener is cleaned up when invoke returns.

    2.110.8release notes

  • Auth is now set when the INITIAL_SESSION event is triggered.

    2.110.7release notes

  • Fixed a Realtime presence issue.

    2.110.7release notes

  • Corrected PostgREST self-reference inference.

    2.110.7release notes

  • Self-referencing embeds are now type hinted as arrays.

    2.110.6release notes

  • track() now forwards opts to send().

    2.110.6release notes

  • Unrecognized sb_ API key subtypes now produce a warning instead of throwing.

    2.110.6release notes

  • Avoids an edge runtime warning.

    2.110.5release notes

  • Function calls no longer send the API key in the Authorization header.

    2.110.4release notes

  • Broadcast header fields are encoded as UTF-8.

    2.110.4release notes

  • Preserves the PKCE verifier during auth flows.

    2.110.3release notes

  • Local session is now cleared when signout fails.

    2.110.2release notes

  • Init-time notifications are deferred until initializePromise resolves.

    2.110.1release notes

  • Disconnected status is suppressed for onHeartbeat consumers.

    2.110.1release notes

  • Functions now honor a caller's Content-Type override regardless of casing.

    2.109.0release notes

  • Storage list() keeps sortBy defaults when passed a partial sortBy.

    2.109.0release notes

  • Preserves a valid session when refresh fails and cools down repeated failures.

    2.108.2release notes

  • Fixes PostgREST then typing.

    2.108.1release notes

  • AuthApiError instances already returned through the contract are no longer logged with console.error.

    2.108.0release notes

  • Request headers are passed as a plain object for React Native and custom-fetch compatibility.

    2.108.0release notes

  • For expired JWTs, getClaims returns AuthInvalidJwtError.

    2.107.0release notes

  • The implicit grant gate recognizes redirects containing ?error=.

    2.107.0release notes

  • PostgREST returns a structured error when a successful response has a non-JSON body.

    2.107.0release notes

  • Adds a react-native export condition for Hermes-safe resolution.

    2.106.2release notes

  • Restores the signup user response.

    2.106.2release notes

  • Client IDs are encoded in OAuth requests.

    2.106.1release notes

  • StreamDownloadBuilder implements Promise and memoizes its executor.

    2.106.0release notes

  • For email_change single-confirmation verification, verifyOtp now returns a null user and session.

    2.106.0release notes

  • Restores detection of aborts represented by non-Error values in the fetch catch handler.

    2.105.4release notes

  • Returns null when JSON parsing fails.

    2.105.4release notes

  • Guards sessionStorage access in browsers with restricted storage.

    2.105.4release notes

  • The CustomProvider type was narrowed to fix downstream consumer typechecking.

    2.105.3release notes

  • The OAuth type was narrowed to fix downstream consumer typechecking.

    2.105.3release notes

  • Enum-like unions are widened with (string & {}) for forward compatibility, allowing additional string values.

    2.105.2release notes

  • The insert and upsert signatures are unified, making their API signatures consistent.

    2.105.2release notes

  • The auth client now forwards lockAcquireTimeout to SupabaseAuthClient, so the configured timeout can take effect.

    2.105.2release notes

  • WebAuthnError gains toJSON for correct JSON serialization.

    2.105.2release notes

  • Transport-level CHANNEL_ERROR now surfaces a real Error.

    2.105.1release notes

  • Fixes a regression in query reassignment.

    2.105.1release notes

  • Narrows column types after a not(column, is, null) filter.

    2.105.0release notes

  • Applies metadata, headers, and cacheControl deduplication to signed URL uploads.

    2.105.0release notes

  • Forwards the duplex option for stream uploads through uploadToSignedUrl.

    2.105.0release notes

  • Custom fetch is now propagated to the realtime client.

    2.104.1release notes

  • PKCE recovery flows now emit the PASSWORD_RECOVERY event.

    2.104.1release notes

  • The signedUrl type now allows null in createSignedUrls.

    2.103.3release notes

  • Realtime now throws Error objects instead of bare strings.

    2.103.3release notes

  • Cloudflare error codes are now included in NETWORK_ERROR_CODES.

    2.103.2release notes

  • The Prettify wrapper was removed from exported types for TypeDoc expansion.

    2.103.2release notes

  • Client-side normalization of signed URL render endpoints was removed.

    2.103.2release notes

  • Explicit return types were added to toJSON methods for JSR compatibility.

    2.103.2release notes

  • The empty transform check is now applied to download.

    2.103.1release notes

  • The empty transform check is now applied to getPublicUrl.

    2.103.1release notes

  • RPC calls now handle bigint values.

    2.103.1release notes

  • AuthError now implements toJSON for correct JSON serialization.

    2.103.1release notes

  • StorageError now implements toJSON for correct JSON serialization.

    2.103.1release notes

  • Fixes type inference for isNotNullable and SETOF scalar computed columns.

    2.103.0release notes

  • Adds toJSON to FunctionsError for correct JSON serialization.

    2.102.1release notes

  • Vector requests no longer send duplicate content-type headers.

    2.102.0release notes

  • Excess properties are now rejected in insert, update, and upsert.

    2.102.0release notes

  • Missing-session messages are logged with console.warn instead of console.error.

    2.102.0release notes

  • PostgrestError now implements toJSON for correct JSON serialization.

    2.102.0release notes

  • Excess properties are now rejected in insert, update, and upsert.

    2.102.0release notes

  • Uploads now set the correct content-type.

    2.102.0release notes

  • Excess properties are now rejected in insert, update, and upsert.

    2.102.0release notes

  • Storage types now support TypeScript projects using exactOptionalPropertyTypes.

    2.101.1release notes

  • Prevents Args: never functions from being classified as computed fields.

    2.100.1release notes

  • Adds type safety for column names passed to eq() and neq().

    2.100.1release notes

  • Fixes maybeSingle for all request methods by removing the Accept header override.

    2.100.1release notes

  • Spreads all DEFAULT_FILE_OPTIONS in uploadToSignedUrl.

    2.100.1release notes

  • The vsn type is reverted to string, affecting TypeScript types for realtime.

    2.100.0release notes

  • Structural detection in json() recognizes Response-like errors.

    2.99.3release notesrelease notes

  • Guards lock stealing against cascading when another request steals the lock.

    2.99.3release notesrelease notes

  • Signed URLs are no longer rewritten to the render endpoint when the transform object is empty.

    2.99.2release notes

  • Improves FileObject type accuracy by making fields nullable where appropriate.

    2.99.0release notes

  • Realtime patches channel join payloads with the resolved access token before flushing the send buffer.

    2.98.0release notes

  • Auth can recover from orphaned navigator locks using a steal fallback.

    2.98.0release notes

  • Resolves Firefox content script Promise.then() security errors in locks.

    2.96.0release notes

  • Enforces type safety for table and view names passed to from().

    2.96.0release notes

  • Fixes removeChannel when unsubscribe succeeds.

    2.95.0release notesrelease notes

  • OAuth authorization types now match API responses, improving type accuracy for authorization flows.

    2.94.1release notes

  • Vector operations now handle empty 200 responses.

    2.93.3release notes

  • Fixed fallback naming in auth WebAuthn handling.

    2.93.3release notes

  • Reverts the client platform and runtime detection headers.

    2.93.2release notes

  • Reverts table-filter validation in postgres_changes event dispatch.

    2.93.1release notes

  • Handles uncaught promise rejections during initialization.

    2.93.0release notes

  • Makes environment detection safe across Node and browser runtimes.

    2.93.0release notes

  • Adds a generic overload for the postgres_changes event type.

    2.93.0release notes

  • Sends a heartbeat when the initial connection encounters an error.

    2.93.0release notes

  • Clears local storage on signOut when the session is already missing.

    2.93.0release notes

  • Exposes status on the StorageError base class.

    2.93.0release notes

  • Exposes statusCode on the StorageError base class.

    2.93.0release notes

  • Restores SSR OAuth functionality that was broken in v2.91.0.

    2.91.1release notes

  • Subscriber notification is deferred to prevent a deadlock during exchangeCodeForSession.

    2.91.0release notes

  • Resolves a cross-context Promise error in Firefox extensions.

    2.91.0release notes

  • Validates the table filter during postgres_changes event dispatch.

    2.90.1release notes

  • Prevents shared state between query builder operations.

    2.90.1release notes

  • The user type now includes the banned_until property.

    2.90.0release notes

  • Object bodies are automatically stringified when a custom Content-Type header is provided.

    2.90.0release notes

  • The factor type now includes the last_challenged_at property.

    2.90.0release notes

  • The session is preserved when a magic link is clicked twice.

    2.90.0release notes

  • RPC HEAD requests with object arguments use POST with return minimal.

    2.90.0release notes

  • The authorization header is omitted when no access token exists.

    2.88.0release notes

  • A websocket race condition in Node.js is now handled.

    2.88.0release notes

  • Resolves ESM import failures on jsDelivr by adding .js extensions.

    2.87.2release notesrelease notes

  • A helpful error is now provided when the PKCE code verifier is missing.

    2.87.2release notes

  • The web worker is terminated on disconnect to prevent a memory leak.

    2.87.2release notes

  • Custom JWT tokens are preserved across channel resubscribe.

    2.87.1release notes

  • The auth client skips the navigator lock when persistSession is false.

    2.87.1release notes

  • Postgres changes filter comparison handles null values.

    2.87.1release notes

  • Corrects QueryVectorsResponse to use vectors instead of matches.

    2.86.2release notes

  • Keeps the code verifier in storage during edge cases.

    2.86.1release notes

  • Adds an ESM wrapper to resolve a module-not-found error in Nuxt.

    2.86.1release notes

  • Suppresses the getSession warning when getUser is called first.

    2.86.1release notes

  • Fixes setof type inference for cross-schema RPC calls.

    2.86.1release notes

  • Minor fixes were made to OAuth types.

    2.85.0release notes

  • Validates empty or invalid relation names in Postgrest.

    2.84.0release notes

  • Fixes the storage analytics bucket property.

    2.82.0release notes

  • PostgREST errors now bubble up fetch error causes and codes.

    2.82.0release notes

  • Realtime message encoding now accounts for null refs.

    2.82.0release notes

  • Callback IDs use Symbols to resolve compatibility with Next.js 16.

    2.81.1release notes

  • Calling setAuth is not required when using a custom JWT token.

    2.81.1release notes

  • signInWithSSO now performs an automatic browser redirect.

    2.81.1release notes

  • Registration and authentication use direct attestation.

    2.81.0release notes

  • Abort and timeout errors are normalized as FunctionsFetchError.

    2.81.0release notes

  • The UserAppMetadata interface gains a providers type.

    2.81.0release notes

  • The webauthn parameter is optional, and registration parameters are moved to webauthn.

    2.81.0release notes

  • Adds TypeScript types for documented JWT claims fields.

    2.80.0release notes

  • Warnings are emitted only if multiple clients share a storage-key.

    2.80.0release notes

  • Moves the session warning proxy from the session to the user object.

    2.78.0release notes

  • Removes redirection from getAuthorizationDetails.

    2.77.0release notesrelease notes

  • Handles 204 No Content responses when deleting an OAuth client.

    2.77.0release notes

  • Adds support for the incoming PostgreSQL major version 14.

    2.77.0release notes

  • Fixes a missing request body when the developer supplies a Content-Type header.

    2.76.0release notes

  • Adds application/pdf response parsing.

    2.76.0release notes

  • Corrects list v2 types to match the data returned by the API.

    2.76.0release notes

  • Enhances the RealtimeChannel type.

    2.76.0release notes

  • Uses a backward-compatible return type in the download function.

    2.75.1release notesrelease notes