Supabase Update, May 2026: everything that shipped, with the dates
The headline this month was the ChatGPT App on May 8. The thing more likely to break your code is on May 30. This page is a chronological digest of every Supabase change shipped between May 1 and May 12, 2026, plus the two end-of-month deadlines you will want on a calendar.
In May 2026, Supabase shipped its monthly Developer Update on May 7 (custom OAuth/OIDC providers, the @supabase/server SDK, branching without Git, ISO/IEC 27001:2022 certification, Wrappers v0.6.0, Terraform Provider v1.9.0). It launched as an official ChatGPT App on May 8 and announced the deprecation of Node.js 20 the same day. The JS client moved to v2.105.4 on May 8 and v2.105.5-beta.0 on May 11, the latter adding passkey/WebAuthn support. Two breaking changes are scheduled for late May: May 26, /v1/oauth/token switches from HTTP 201 to 200, and May 30, the PostgREST/GraphQL auto-expose default flips for new projects, so new public-schema tables will no longer be auto-exposed without explicit Postgres grants.
Sources: supabase.com/changelog, github.com/supabase/supabase-js/releases, supabase.com/launch-week. There is no Launch Week in May; Launch Week 15 is July 14 to 18, 2026.
The May 2026 timeline
Five concrete dates, four shipped, two scheduled. The two scheduled ones at the right of the row are the breaking changes; the rest are additive.
May 7
Developer Update lands. Custom OAuth/OIDC providers, @supabase/server SDK, branching without Git, ISO 27001, Wrappers v0.6.0, Terraform v1.9.0.
May 8
ChatGPT App ships. Node.js 20 deprecation announced. supabase-js v2.105.4 stable on the JS client.
- 3
May 11
supabase-js v2.105.5-beta.0 ships passkey/WebAuthn support and realtime deferred-disconnect.
- 4
May 26
/v1/oauth/token returns HTTP 200 instead of 201 (OAuth 2.1 compliance). Strict status-code clients break.
- 5
May 30
New public-schema tables stop auto-exposing through PostgREST and pg_graphql. Explicit Postgres grants required on new projects.
May 7: the Developer Update, in seven concrete pieces
The monthly Developer Update for May (changelog post 45702) bundled seven shipping items. Two of them, the custom OAuth/OIDC providers and the new server SDK, are the ones most likely to materially change how a project is structured.
- Custom OAuth/OIDC providers for Supabase Auth. You can now wire any OAuth2 or OIDC identity provider, including GitHub Enterprise and regional IdPs that are not in the built-in list. PKCE is on by default.
- @supabase/server SDK. A new SDK with first-class context injection, CORS handling, and client creation across Edge Functions, Vercel Functions, Deno, Bun, and Cloudflare Workers. Replaces a fair amount of boilerplate that most projects had copied between projects. See the introducing-supabase-server blog post for the rationale.
- Branching without Git. You can create a Supabase branch (with its own database, auth settings, and edge functions) directly from the dashboard. Git branching still works; this is for the case where you do not want to spin up a separate repo just to test a schema change.
- ISO/IEC 27001:2022 certification. Now covers the full platform. Useful concretely for procurement cycles where a buyer's security review previously stalled on the cert.
- Wrappers v0.6.0. Foreign data wrappers for Postgres. v0.6.0 adds an OpenAPI FDW (turn any OpenAPI-documented HTTP API into a Postgres table), timeout support for the Snowflake wrapper, and full CRUD against Clerk.
- Terraform Provider v1.9.0. New resources for Edge Functions and Edge Function secrets, plus a network-bans data source. Worth a re-pin if you manage Supabase with Terraform; the older provider just did not have these.
- Project milestones. The Supabase GitHub repo passed 100,000 stars. The platform passed 0M developers. These are not feature changes; they are the organisational context that explains why an ISO 27001 cert ships this month and not next year.
May 30: the auto-expose default flip
This is the change least likely to be in your inbox and most likely to cause a 4xx in your client app two weeks from now. Until May 30, 2026, a new table in the public schema is automatically reachable via PostgREST and pg_graphql using your anon or authenticated key. After May 30, on new projects, that auto-grant goes away. The behaviour has been opt-in on new projects since April 28, 2026, so this is not a surprise rollout; it is the second half of an already announced two-step.
Creating a new public.todos table on a new project
CREATE TABLE public.todos (id bigserial primary key, body text); -- table immediately reachable via PostgREST (/rest/v1/todos) and pg_graphql for anon and authenticated roles. Zero extra SQL.
- Auto GRANT to anon and authenticated for new public-schema tables
- PostgREST exposes the table immediately, no schema reload needed
- pg_graphql picks it up on its own schema refresh
The auto-grant has always been a footgun on the security side (people forgot to add RLS and effectively published private tables), and the new default closes it. Worth noting: this does not change anything about RLS. If your tables are already protected by row-level policies, the new default just means you also need to remember the GRANT statement. If you do not, the table is invisible to your API key entirely, which is the safer failure mode.
May 26: /v1/oauth/token returns 200 instead of 201
OAuth 2.1 specifies HTTP 200 on a successful token exchange. Supabase's endpoint historically returned 201, which is a quirk most libraries silently tolerate (any 2xx is a success), but a small number of strict clients pin the exact status code in middleware or assertions. After May 26, the response is 200. Same body, same headers.
If you control your OAuth client code, search for an exact-match on the string 201 anywhere it talks to /v1/oauth/token and relax it to res.status >= 200 && res.status < 300. If you rely on an SDK, you are probably already fine; the official libraries treat the entire 2xx range as success.
The JS client: what changed between v2.105.4 and v2.105.5-beta.0
Two stable-line releases this month. Pulled from github.com/supabase/supabase-js/releases.
- v2.105.4 (May 8, 2026): auth, postgrest, and realtime fixes on the stable line. No public API changes. Drop-in.
- v2.105.5-beta.0 (May 11, 2026): passkey and WebAuthn support for browser sign-in, plus a deferred-disconnect behaviour on the realtime client so a transient connection blip does not aggressively tear down active channels.
- v3.0.0-next.25 through v3.0.0-next.29 (May 7 to 11, 2026): the v3 preview line is moving in lockstep. Not stable yet. Useful to track if you have a project that wants the new shape; do not put it in production.
The ChatGPT App is a cloud agent. The local-Mac path looks different.
The headline feature of the month, the official ChatGPT App, lets you point ChatGPT at your Supabase project and ask it questions in natural language. It works through an OAuth handshake; ChatGPT gets scoped access to your project on the server side, and the conversation lives in OpenAI infrastructure. For a lot of teams that is the right tradeoff. For a smaller crowd of macOS users who would rather not put a cloud-side agent on their production database, the alternative path is to drive the Supabase Studio dashboard locally, in a browser logged in to your own account, with voice or text commands.
That is the slot Fazm sits in. It is a macOS-only computer-use agent that controls the browser (and every other app on your Mac) through the macOS accessibility APIs rather than through screen capture and pixel matching. So when you say “open Supabase Studio for the staging project, run the grants migration from this morning, then export the new branch URL”, it reads the dashboard the way VoiceOver does: as a real DOM tree, not as a screenshot to be re-recognised every turn. The authentication is whatever you already have in your browser session. Nothing is uploaded.
This is not a replacement for the ChatGPT App. It is the local path. The ChatGPT App is the right answer if you want a cloud agent your team can share. Fazm is the right answer if you want voice or text control of the Supabase Studio that is already open in your browser, on the Mac in front of you, with the data staying on your machine. The accessibility-API approach also means it works for the rest of your Mac at the same time, which a Supabase-specific integration does not.
What to do this week, before the May 26 and May 30 deadlines
A short list of concrete actions, in the order I would do them.
- Search your codebase for any literal
201assertion against/v1/oauth/token. Relax it to a 2xx check. Five minute fix, prevents a confusing outage on May 26. - Decide if you want the new PostgREST auto-expose behaviour on any existing project. The default flip only hits new projects on May 30, but you can opt in to the safer behaviour today on existing projects. If you are starting fresh after May 30, write
GRANT USAGE ON SCHEMA public TO anon, authenticated;into your initial migration so you never wonder why a new table returns empty. - If you are running supabase-js v2.105.<4, bump to v2.105.4. The realtime fixes are worth it independently of the May changes.
- If you wanted passkey sign-in, the beta lane (2.105.5-beta.0) is the place. Wait for the stable release if your app is in production.
- If you have a Terraform-managed Supabase project, pin to hashicorp/supabase v1.9.0 and add an Edge Functions resource. The old workaround (managing functions out-of-band) can be retired.
- If you were a contributor to the Stripe Sync Engine, follow the repo handoff to Stripe's GitHub org. Existing integrations keep working without changes.
Want voice-first control of Supabase Studio on your Mac?
Twenty minutes on a call to see if running an agent locally against your real browser session is the right shape for your workflow.
FAQ
What did Supabase ship in May 2026?
The May 7 Developer Update (custom OAuth/OIDC providers, the @supabase/server SDK, branching without Git, ISO/IEC 27001:2022 certification, Wrappers v0.6.0 with OpenAPI FDW and Clerk CRUD, Terraform Provider v1.9.0 with an Edge Functions resource), the ChatGPT App on May 8, Node 20 deprecation announcement on May 8, supabase-js 2.105.4 on May 8, and supabase-js 2.105.5-beta.0 with passkey/WebAuthn on May 11. Two breaking changes were announced for late May: /v1/oauth/token switching from HTTP 201 to 200 on May 26, and the PostgREST/GraphQL auto-expose default flipping on May 30.
Is there a Supabase Launch Week in May 2026?
No. Launch Week 15 is scheduled for July 14 to 18, 2026. The May cadence is the monthly Developer Update plus standalone announcements (the ChatGPT App and the Stripe Sync Engine handoff being the two largest in May).
What is the May 30 PostgREST change and will it break my project?
Before May 30, 2026, any table you created in the public schema was auto-exposed through PostgREST and pg_graphql. After May 30, that auto-grant stops for new projects. You will need explicit GRANT statements: GRANT USAGE ON SCHEMA public TO anon, authenticated; and GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE <name> TO anon, authenticated; otherwise the table will be invisible to your API key. Existing projects keep the old default; the change applies to new projects created on or after May 30. The same behaviour has been opt-in on new projects since April 28, 2026.
What is the May 26 OAuth change?
Supabase's /v1/oauth/token endpoint returned HTTP 201 on success. On May 26, 2026, it switches to HTTP 200 to comply with OAuth 2.1. If your client code asserts on the exact status code (rather than the 2xx range), it will start failing. Most SDKs already accept 2xx; the risk is bespoke code or strict middleware.
What is the Supabase ChatGPT App that shipped on May 8?
It is an official ChatGPT App connector that lets you authorize ChatGPT to read and write to your Supabase project in natural language. You connect once via OAuth, and then ChatGPT can run SQL queries, inspect schemas, and trigger actions against the project on your behalf. The auth flow is scoped per project. There is a separate question about whether you want a cloud-side agent on your data versus running an agent locally on macOS.
What changed in supabase-js between v2.105.4 and v2.105.5-beta.0?
v2.105.4 (May 8, 2026) shipped auth, postgrest, and realtime fixes on the stable line. v2.105.5-beta.0 (May 11, 2026) introduced passkey/WebAuthn support for browser sign-in and a realtime deferred-disconnect behaviour. There is also a v3.0.0-next preview line moving in parallel; v3 is not yet stable.
What happened to the Stripe Sync Engine?
Maintenance moved from Supabase to Stripe directly. The library is now hosted in Stripe's GitHub org as open source. Existing integrations keep working; the migration is for whoever was contributing patches. The Stripe Marketplace app for Supabase went generally available in the same window.
Where can I read the source for the May 2026 update?
Developer Update: https://supabase.com/changelog/45702-developer-update-may-2026. Full changelog: https://supabase.com/changelog. ChatGPT App announcement: https://supabase.com/blog. supabase-js releases: https://github.com/supabase/supabase-js/releases. Launch Week 15: https://supabase.com/launch-week.
Related guides
Custom API endpoints for AI agents
How to route an AI agent through a corporate proxy or alternative provider without rewriting the prompt layer.
Accessibility APIs vs screenshot agents
Why the macOS accessibility tree beats pixel matching for any real desktop automation that has to survive a UI refresh.
AI desktop automation for small business
Where a Mac-native agent earns its keep on the boring workflows: invoicing, CRM hygiene, scheduling, data entry.
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.