Field notes, updated monthly
Supabase 2026 changelog, condensed. What actually shipped, with links back to the source.
I keep this page as a running log because the official changelog is excellent but long, and most product teams only care about the handful of items that touch their stack. Every item below links back to supabase.com/changelog or the relevant GitHub release. If a row here disagrees with one of those, trust the original and tell me.
Direct answer (verified 2026-05-14)
The canonical Supabase 2026 changelog lives at supabase.com/changelog. It is timestamped, has an RSS feed at /changelog/feed.xml, and is the only place where a Supabase release counts as actually shipped. For extension-level and SDK-level changes, the matching GitHub releases under github.com/supabase are the second source of truth. This page is a condensed read, not a replacement.
Why this page exists
The Supabase team ships fast. The changelog reflects that, which is a good problem to have and a bad reading experience. Most weeks contain a mix of dashboard polish, deeper platform changes, SDK bumps, and beta-to-GA promotions. For a working developer, only two of those four usually matter. The goal here is to flatten the noise and surface the items that actually affect production code: version bumps, breaking API changes, beta-to-GA graduations, pricing changes, and platform availability shifts.
Everything below is paraphrased from the public changelog. If I have an opinion on a release, it is marked as such. If you need to cite something for an internal doc or a customer email, link to the original changelog post, not to this page.
The shape of the 2026 changelog so far
Five themes have dominated 2026 releases through mid-May. Most individual posts on supabase.com/changelog fall under one of these.
Postgres 17 as the new default
New projects start on Postgres 17. Existing projects on 15 or 16 stay until you trigger an upgrade. Extensions like pgvector and pg_graphql need re-enabling post-upgrade. Pre-flight checks live in the dashboard.
Queues and Cron, both GA
Cron wraps pg_cron with a UI. Queues wraps pgmq with a REST surface. Both are Postgres-backed, share your DB resources, and remove the need for a separate Redis or SQS for small workloads.
Branching tied to GitHub PRs
Each preview branch is its own Postgres instance, seeded from main. Creation time dropped to sub-minute for small projects. Per-branch storage cost is now visible in the dashboard.
Realtime Broadcast bypass
High-fanout channels can now skip the per-message Postgres write for ephemeral payloads. Presence payloads got smaller. Channel auth moved to RLS-style policies on a realtime.messages table.
Edge Functions, regional pinning
You can pin a function to one region instead of the global edge. Trades cold-start latency for predictable colocation with your database. Cross-region tail latency was the 2025 bottleneck.
January through March: platform foundations
The first quarter was heavy on infrastructure work that is invisible until you need it. Postgres 17 went from preview to default for new projects. pgvector picked up the HNSW improvements that landed upstream, which most teams will notice as a small drop in index build time and a modest accuracy bump at the default parameters. The Foreign Data Wrapper for Iceberg shipped, which is the meaningful one if you have analytics data sitting in object storage and want to query it from Postgres without copying.
The dashboard also picked up a redesigned table editor with a notably faster paginator on tables with millions of rows. Small change, real impact for anyone doing manual data audits in production.
April: Queues and Cron leave beta
Both moved to GA in the same window. Cron is a UI plus REST surface over pg_cron, which means every scheduled job is a row in cron.job and every run is a row in cron.job_run_details. That gives you SQL access to job history out of the box, which most managed cron offerings hide behind a separate API.
Queues is built on pgmq and exposes typed message payloads, visibility timeouts, and a poll-and-acknowledge flow. The performance ceiling is your Postgres write throughput, which is fine for most application workloads and not fine for ten-thousand jobs per minute. The honest reading: it removes the “do I need Redis just for this one job queue” question for the long tail of small apps.
May: Realtime Broadcast bypass and Edge Function regions
Realtime got two changes that compound. The bigger one is the WebSocket-only Broadcast path, which skips the round trip through Postgres for messages that you do not need to persist. Cursor movements, typing indicators, and live-presence dot positions all fit. The smaller one is a presence payload that is roughly half the size on the wire, which is meaningful for rooms with many subscribers.
Edge Functions picked up region pinning. Practical effect: a function that reads from a same-region Postgres instance is now consistently fast in tail latency, where in 2025 the global edge sometimes routed a request through a far region and added a hundred milliseconds. If you have a function that reads from the database on every call, pin it to the same region as your DB.
How to verify a release affects your project
A changelog post is a claim about the platform. Whether it has reached your specific project is a separate question. Two checks remove most of the ambiguity.
The first command returns the Postgres version the project is actually on, which is the most common “did this reach me” question. The second pulls the raw changelog feed so you can grep for the feature name and timestamp. If a feature is visible in the feed but not in your project, you are usually waiting on a rolling deploy or an opt-in flag.
The releases I would not skip reading
If you only have time for a handful of changelog posts, these are the ones that are most likely to change how you write code against Supabase in 2026.
- Postgres 17 default and the extension compatibility list. The dashboard upgrade page tells you which extensions need a rebuild. Read it before you upgrade a prod project.
- Queues GA. If you maintain a worker pool reading from Redis or SQS today, do the cost math on moving short, durable jobs to Queues.
- Realtime channel authorization via RLS. The migration is mechanical but it is not a no-op. Existing channel-level tokens still work; new code should use the policy-based path.
- Branching seed scripts. Check seeds into the repo, run them on branch create, and your preview environments stop being snowflakes.
- Edge Function region pinning. A two-line config change in many cases, and the single fastest way to drop tail latency on read-heavy functions.
“The changelog reflects what actually shipped to public-cloud projects. The docs reflect what the docs team has updated. The GitHub releases reflect what is in the open-source code. Three sources, three slightly different views, all useful.”
Field note, 2026-05-14
Common questions
Frequently asked questions
Where is the official Supabase changelog?
The single source of truth is supabase.com/changelog. It is an RSS-backed feed where every shipped feature, dashboard improvement, and platform change gets a timestamped post. For low-level Postgres extension changes, GitHub releases at github.com/supabase/supabase and github.com/supabase/supabase-js are the canonical reference. If a claim about Supabase is not in one of those two places, it has not actually shipped.
Did Supabase drop the legacy auth client in 2026?
Not yet. supabase-js v2 is still the default and v3 has been on the public roadmap with breaking changes called out per release candidate. The honest read of the changelog is that v3 is being rolled out incrementally with the auth helpers, ssr utilities, and storage client being the most affected packages. If you maintain a production app, pin supabase-js to a specific minor version and read the migration guide before bumping. The changelog will flag a hard cutover date when one exists.
Is Postgres 17 the default on Supabase yet?
New projects created in 2026 default to Postgres 17. Existing projects on 15 or 16 stay on their version until you trigger an upgrade in the dashboard. The pause-on-extensions behavior changed slightly: extensions like pgvector that depend on a specific Postgres ABI need to be re-enabled after the upgrade. The upgrade page in the dashboard lists every extension in your project and whether it has a compatible build for the target version. Run the upgrade in a branch first if you have anything beyond the default extension set.
What is the deal with Supabase Queues and Cron in 2026?
Both moved out of beta. Cron is a thin wrapper over pg_cron with a UI for scheduling jobs and viewing run history. Queues is built on pgmq, exposes a REST surface and a JS client, and is intended for the cases where you previously reached for Redis or SQS for short, durable jobs. The honest constraint: these are Postgres-backed, so they share connection pool and storage with your primary workload. For ten-thousand-jobs-a-minute traffic you still want a dedicated queue. For everything below that, the in-Postgres option avoids an entire piece of infrastructure.
Did Edge Functions get faster or just different in 2026?
Two things changed. First, the Deno runtime was bumped, which closed a long list of Web API gaps and shaved cold start time. Second, regional deployment now lets you pin a function to a specific region instead of the global edge, which trades latency for predictable colocation with your database. The trade-off is real: cold starts are lower with the global edge, but a region-pinned function reading from the same-region Postgres avoids the cross-region round trip that was the biggest source of tail latency in 2025.
Is the Supabase AI assistant in the dashboard actually useful?
Mileage varies. The schema-design and SQL-generation surfaces are good for greenfield work and bad at understanding migrations that already exist. The RLS policy generator is the most reliably useful piece because RLS is verbose and the model is correct often enough to save typing. Treat its output as a starting point, run it through the policy tester before merging. Like any LLM in a database UI, it can write a confidently wrong UPDATE statement, so do not let it execute destructive SQL without a human read.
What about Branching for production?
Branching graduated and now supports preview environments tied to GitHub pull requests. Each branch is a separate Postgres instance with its own connection string, seeded from a snapshot of your main branch. The 2026 changes that matter: branch creation is faster (sub-minute for small projects), seed scripts can be checked into the repo and run automatically, and the dashboard surfaces per-branch storage costs so you do not get a surprise bill from forgetting to delete preview branches.
Did Realtime change in 2026?
The big one is Broadcast over WebSocket bypass for high-fanout channels, which removes the per-message Postgres round trip for ephemeral messages. Presence got a smaller payload format. Channel authorization moved to RLS-style policies on a realtime.messages table, which means your existing pg_policies tooling works on Realtime too. The migration path for apps using channel-level auth tokens is documented but it is not a one-line change.
Where do I check whether a specific feature is GA, beta, or alpha?
The changelog post for every feature includes a status badge (GA, beta, public alpha, private preview). The dashboard surface that exposes a feature also shows the badge inline. For platform-level features, the docs page at supabase.com/docs is the second source of truth and is usually updated within a day of a changelog post. If a feature is missing from both, it has not shipped to public-cloud projects yet, even if it appears in the open-source repo.
Building agents that drive Supabase from a desktop?
If you are wiring an LLM agent into a Supabase backend and want to compare notes on what works, book 15 minutes.
Adjacent guides
Codex and cross-platform accessibility APIs
Why Codex Computer Use is macOS only and what cross-platform actually means for desktop agents.
Claude Code persistent sessions
How to keep a Claude Code session alive across a Mac restart and one-click fork a conversation.
Claude Code auto-compacting token waste
What auto-compacting actually drops from a long Claude Code session, and what to do about it.
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.