← All APIs

What changed in the Supabase API

BreakWatch diffs the Supabase changelog every day and classifies each change as breaking, additive, or docs-only. 5 breaking changes have been detected so far.

  • docSupabase

    The official Supabase Go SDK v0.1.0-alpha.1 is in public alpha. Its initial feature set lets your backend verify end-user access tokens and query your database as that user under Row Level Security.

    [Public Alpha] Supabase Go SDK
    The official Supabase Go SDK v0.1.0-alpha.1 is in public alpha. Its initial feature set lets your backend verify end-user access tokens and query your database as that user under Row Level Security.
    Supabase changelog ↗
  • docSupabase

    You get the SDK's calls in the same traces as the rest of your app: which ran, how long they took, whether they failed.

    OpenTelemetry traces and metrics in the Supabase .NET SDK
     emit traces and metrics through 
    . Each client exposes its own 
    , so you subscribe to them the same way you subscribe to any other .NET instrumentation. The SDK takes no dependency on the OpenTelemetry packages, and the clients stay silent until something subscribes, so there is no overhead when you are not collecting.
    This covers the Auth, Postgrest, Storage, and Functions clients. Realtime is not yet instrumented. URLs are recorded with the query string stripped, and no token, credential, or payload is placed in a tag.
    ) to tell apart operations that share an HTTP verb
    supabase.postgrest.http.request.duration
    , …), with a child span for the HTTP call
    supabase.gotrue.http.request.duration
    storage.transfer.direction
     tag on uploads and downloads; a resumable (TUS) upload is a single span for the whole transfer
    supabase.storage.http.request.duration
    supabase.storage.transfer.duration
    supabase.storage.transfer.size
    One per invocation, with a 
     tag; a relay error is a failed span even when the HTTP status succeeds
    supabase.functions.invoke.duration
    Add the OpenTelemetry hosting package and an exporter alongside the SDK:
    <Packa
    Supabase changelog ↗
  • breakingSupabase

    In the past 30 days, fewer than 0.0001% of connections to Supabase projects negotiated these ciphers, so we expect little to no impact.

    An outdated subset of TLS 1.2 ciphers will be disabled on project HTTP APIs
    Most users won't notice any change. Starting November 10, 2026 at the earliest, Supabase will stop offering some outdated TLS configurations on project HTTP APIs (
     and custom domains). Users on old, unsupported operating systems, or embedded devices that haven't been updated, may lose access if their device only supports the configurations being removed.
    The configurations being removed are four CBC-mode TLS 1.2 cipher suites. Cipher suites determine how a connection is encrypted. These older suites have known security weaknesses and often trigger warnings in security scans. We plan to stop offering these ciphers on TLS 1.2:
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    ECDHE-ECDSA-AES128-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    ECDHE-ECDSA-AES256-SHA384
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    Supabase has only supported TLS 1.2 and 1.3 for several years. There is no change for TLS 1.3.
    Auth, the Data API, Storage, Realtime, and Edge Functions are all sub-routes of the Supabase HTTP API, so all five are affected. Direct Postgres connections, pooler connections, and the M
    Supabase changelog ↗
  • additiveSupabase

    Scoped personal access tokens are now available to everyone. Limit a token to specific projects or organizations and grant only the permissions it needs on the Management API, MCP server, and CLI.

    ASP.NET Core dependency injection for the Supabase .NET SDK
    Supabase.Extensions.DependencyInjection
     is a new package that provides an easier way to plug the Supabase .NET SDK into your application. It exposes a new method on 
     which registers the main client and all sub-clients:
    builder.Services.AddSupabase(
     supabaseUrl: "https://xyz.supabase.co",
     supabaseKey: builder.Configuration["Supabase:Key"]!,
     configureOptions: options =>
     options.AutoConnectRealtime = true;
     options.PostgrestRetry = new RetryOptions { MaxRetries = 3 };
    It registers all clients (
    ) with a scoped lifecycle, so you can resolve them wherever you need them:
    app.MapGet("/movies", async (IPostgrestClient postgrest) =>
     await postgrest.Table<Movie>().Get());
    The package is available on 
    dotnet add package Supabase.Extensions.DependencyInjection
    You can always register all the required clients in 
     yourself. This package simply does it all for you and removes boilerplate from your codebase.
    The Supabase .NET SDK is now officially supported
     is now a first-party, officially supported SDK. It started as a community project, went through a period of low activity, and is now maintained by Supabase with a team behind 
    Supabase changelog ↗
  • breakingSupabase

    The Hono, H3, Elysia, and NestJS adapters in @supabase/server are deprecated and will be removed on December 1, 2026. Move to the framework bridges in the frameworks guide.

    Status page moves to incident.io
    status.supabase.com now runs on incident.io's status page. The URL is unchanged.
    Email subscribers were resubscribed automatically. If you subscribed through SMS, Slack, webhook, or RSS, those subscriptions did not carry over. Resubscribe at 
    . The new platform supports only Email, RSS, and Slack, so SMS and webhook notifications are no longer available.
    Email subscribers can now subscribe to the specific Products and Regions that matter most to them, so they only hear about incidents that affect them.
    The Hono, H3, Elysia, and NestJS adapters in @supabase/server are deprecated and will be removed on December 1, 2026. Move to the framework bridges in the frameworks guide.
    Supabase changelog ↗
  • additiveSupabase

    Scoped personal access tokens (PATs) are now available to everyone. You can limit a token to specific projects or organizations and grant only the permissions it needs.

    Scoped personal access tokens are now generally available
    Scoped personal access tokens (PATs) are now available to everyone. You can limit a token to specific projects or organizations and grant only the permissions it needs.
    You pick a token's access when you create it
    Resources: selected projects in one organization, or all projects in selected organizations.
    Permissions: read or read-write per capability, such as projects, database, auth, or storage.
    Expiry: a preset or a custom date up to one year out.
    A review step shows the access you're granting and a risk level. You see the token value only when you create it.
    You can't change a token's access later. To change it, delete the token and create a new one.
    A token never has more access than you do. Every request checks your current role. When you lose access, so does the token.
    Scoped tokens work with the Management API, MCP server, and CLI
     endpoints. A 403 lists the permissions the token lacks in a 
    Supabase MCP server: each tool checks the token's permissions. The token's detail view in the dashboard lists the tools it can call.
    Supabase CLI: pass the token with 
     still creates an account-level token. 
     doesn't work with pr
    Supabase changelog ↗
  • breakingSupabase

    They still work today. They will be removed from the package on December 1, 2026. No new adapters are accepted.

    Framework adapters in @supabase/server are deprecated
    The four framework adapters that ship inside 
    @supabase/server/adapters/hono
    @supabase/server/adapters/h3
    @supabase/server/adapters/elysia
    @supabase/server/adapters/nestjs
    They still work today. They will be removed from the package on December 1, 2026. No new adapters are accepted.
     is not deprecated. Neither is its entry form, 
    Each adapter wrapped one call, 
    , for one framework. That meant a published entry point, a peer dependency range, and a release cycle per framework. 
     engine since 1.5.1, and the engine replaced the model. A middleware is an entry you compose. The piece that is framework-specific is a short bridge, and that file belongs in your project, not in a package that has to track your framework's major versions.
     README has carried the deprecation warning since 1.9.0. From 1.9.1, every adapter export carries an 
     tag and each adapter doc opens with the same warning. The adapters are removed on December 1, 2026.
    A bridge: one file you copy into your project. It runs a 
     entry array inside your framework's own middleware slot. Your route handlers then read 
    , and any other key the entries contribute from where you
    Supabase changelog ↗
  • docSupabase

    In a benchmark derived from TPC-C on an 8XL compute instance (32 vCPU, 128 GiB RAM), with a data set larger than memory, OrioleDB completed about 1.8x more transactions per minute than heap storage.

    Local development (CLI) and standalone OrioleDB images
    These changes come from the 
     and later. They apply to:
    Local projects created with 
     v2.119.0 or later. The CLI sets 
    experimental.orioledb_version
    Anyone running the standalone 
    What changed in the image:
    Your project is still Postgres. You keep the same SQL, the same connection string, and the same Auth, Row Level Security, and client libraries.
    In a benchmark derived from TPC-C on an 8XL compute instance (32 vCPU, 128 GiB RAM), with a data set larger than memory, OrioleDB completed about 1.8x more transactions per minute than heap storage. 
    . Clients connect directly over TLS on Postgres 17 with platform defaults and no think time. Results depend on the workload, so benchmark your own. Read the full 
    This workload is derived from the TPC-C Benchmark and is not comparable to published TPC-C Benchmark results, as this implementation does not comply with all requirements of the TPC-C Benchmark.
    Supabase changelog ↗
  • breakingSupabase

    The Supabase CLI no longer requires

    OrioleDB is now in Public Beta with paid plans and paid features
    OrioleDB is now in Public Beta. You can create OrioleDB projects on the Pro, Team, and Enterprise plans, not only Free. These projects get the same paid features as other Supabase projects, with the exceptions listed below. OrioleDB projects are billed the same as standard Postgres projects.
    Public Beta is for testing. We don't recommend OrioleDB for production workloads yet, and it has no SLA.
    You can create OrioleDB projects in organizations on paid plans, and upgrade an organization that has OrioleDB projects to a paid plan.
    OrioleDB projects support compute and disk resizing, pause and restore, Postgres version upgrades, read replicas, and scheduled backups.
    New OrioleDB projects run 
    The dashboard labels OrioleDB as Public Beta.
    The Supabase CLI no longer requires 
     to start a local project with OrioleDB.
    You choose OrioleDB when you create a project. You can't add OrioleDB to an existing project or remove it later.
    Create a new Supabase project
    Finish creating the project.
    For local development, run:
    supabase init --use-orioledb
    Limitations in Public Beta
    Point-in-Time Recovery (PITR) isn't available for OrioleD
    Supabase changelog ↗
  • breakingSupabase

    From 1.0 the package follows semantic versioning: breaking changes ship only in a new major.

     1.0.0 is on npm and JSR under the 
     tag. From 1.0 the package follows semantic versioning: breaking changes ship only in a new major.
    It is a small, MIT-licensed engine for per-request logic on Web Fetch handlers:
     writes one piece of per-request logic. It contributes one typed key to a shared 
     runs several in order and returns the fetch handler. Middleware also nest directly, so 
    The handler sees every upstream key, correctly typed. Duplicate keys fail to compile, and so does a middleware placed before its prerequisite.
    Any middleware can return a 
     and stop the chain, or read and change the response on the way out.
    Two middleware ship with the engine: 
    . Everything else is yours, or comes from a package.
    The engine runs wherever fetch runs: Supabase Edge Functions, Vercel Functions, Cloudflare Workers, Deno, Bun, and Node 22 or newer. Inside Hono, H3, Elysia, NestJS, or TanStack Start, the same middleware runs through a short, typechecked bridge you copy into your app. No adapter package, no new dependency. See the 
     is built on the engine and ships the Supabase middleware. 
    withSupabase(config, handler)
     wraps a single handler. Entries before it in the array run ahead of the a
    Supabase changelog ↗
  • additiveSupabase

    That said, there are workloads where logs will scale with usage — and at platform scale, that needs to be priced fairly.

    PostgreSQL 15.19 / 17.11 minor release — action may be required for ltree, pgcrypto, btree_gist, and custom operators
    We are rolling out the PostgreSQL 
     minor release (from 15.14 / 17.6).
    It bundles five upstream security cycles and closes 
    Four changes may require action, depending on how you use your database:
    ltree indexes may need reindexing
     — a case-folding fix on multibyte/ICU databases, plus an integer-overflow fix for very deep 
    pgcrypto stops decrypting legacy-cipher PGP data
     (CVE-2026-14663) — data encrypted with 
     was effectively stored unencrypted and fails to decrypt by default after the upgrade.
    btree_gist indexes on float columns
    Custom operators with non-built-in selectivity estimators
     (CVE-2026-2004) — recreating them (dump/restore, branching) now requires superuser.
    If none of the detection queries below return rows for your project, no action is needed.
    This is an upstream PostgreSQL minor release.
    Staying current closes 44 CVEs (including several rated High) and picks up correctness fixes in the 
    Case-folding (multibyte/ICU)
    After upgrading, indexes on 
     columns built under the previous version can silently return incomplete results on databases using a mult
    Supabase changelog ↗
  • docSupabase

    Read replicas now live under Project Settings → Infrastructure. Database → Replication is for Pipelines destinations only. No API changes.

    Database Replication is now Pipelines
    Pipelines destinations now live at 
     in the Supabase Dashboard. This makes the page's purpose clearer now that read replicas are managed in Project Settings > Infrastructure.
    Existing bookmarks and pipeline detail URLs under 
     redirect to the matching Pipelines page
    Pipelines destinations, configuration, and behavior
    Management API and database APIs
    Replication logs and Postgres replication terminology
     for setup and monitoring instructions.
    Read replicas now live under Project Settings → Infrastructure. Database → Replication is for Pipelines destinations only. No API changes.
    Supabase changelog ↗
  • docSupabase

    Error rate checks are designed to be a broad net. A single elevated result tells you where to look; from there you can drill into logs, query connection stats, or trigger your own deeper checks.

    Supabase Advisors already surface security misconfigurations and performance issues. They now also monitor service health, starting with error rates — the broadest early-warning signal across your stack.
    Service error rate checks
     — read from log data, one per service:
    log_data_api_error_rate_high
     — PostgREST 5xx rate is elevated
     — Auth service error rate is elevated
    log_storage_error_rate_high
     — Storage service error rate is elevated
    log_edge_function_error_rate_high
     — Edge Functions error rate is elevated
    Error rate checks are designed to be a broad net. A single elevated result tells you where to look; from there you can drill into logs, query connection stats, or trigger your own deeper checks. This makes them particularly useful as a signal source for agents — an elevated rate check is a reliable catalyst for automated investigation flows.
    An empty result means all checks ran and found nothing. 
    advisor_check_unavailable
     means a check could not run — so you can distinguish between healthy and unchecked.
     — a Health tab appears in the Advisors section of your project, above Security in the navigation. Each check result links directly to the relevant logs, connection stats,
    Supabase changelog ↗
  • docSupabase

    Most attempts to use agents for monitoring fail for the same reason: the brief is too vague. "Monitor and fix" is not a job description.

    Observability on Auto-Pilot
    Most attempts to use agents for monitoring fail for the same reason: the brief is too vague. "Monitor and fix" is not a job description. An expert needs a defined scope, the right data sources, and a clear format for what they report back.
    We shipped a few things to make this even more powerful with Supabase's AI tooling.
     guide defines four roles, each with a prepared prompt and setup instructions for Claude Routines, Codex scheduled tasks, or Cursor Automations:
     — API and Auth error rates, connection pressure, instance state
     — Security Advisor findings, RLS gaps, Auth 4xx patterns
     — slow queries, lock waits, long-running sessions, Performance Advisor
     — request, error, storage, and connection growth against baselines
    Each prompt scopes the agent to a specific job, runs across a fresh context, and routes findings through your existing integrations — Linear, Slack, wherever your team tracks work. Copy the prompt as-is or adapt it. It runs in any environment that supports MCP, not just the ones listed.
     already covers a broad range of Supabase tooling — database management, debugging, Edge Functions, branching, and more. A new 
     tool extends that with 
    Supabase changelog ↗

Depend on Supabase?

Get alerted the moment a breaking change ships — plus every other API your product relies on. Free to start, no card.

Monitor Supabase free