Skip to content

BuildNot yet confirmed elsewhere1 publisher2 min readPublished

Supabase turns off automatic Data API exposure for new tables on every existing project on 30 October

Supabase will stop exposing new public-schema tables to its Data API automatically on all existing projects on 30 October 2026. Tables created after that date stay invisible to supabase-js until a role is granted access.

The Engineer · Build desk

How we use AISend a correction

Illustration accompanying Supabase turns off automatic Data API exposure for new tables on every existing project on 30 October
Generated illustration
New projects get the setting before existing ones When the new setting reaches new and existing Supabase projects, per the Supabase changelog

Timeline: on 28 April 2026 the new setting became available for new projects, selectable at project creation; on 30 May 2026 it becomes the default for new projects, rolled out over a few weeks; on 30 October 2026 it is applied to all existing projects.

New projects get the setting before existing ones
DateEventClaim
April 28, 2026Available for new projects, selectable at project creation2
May 30, 2026Default for new projects, rolled out over a few weeks3
October 30, 2026Applied to all existing projects4

What happened

  • The new setting became available on 28 April 2026 and can be chosen when a project is created.
  • It becomes the default for new projects on 30 May 2026, rolled out over a few weeks.
  • Existing tables are untouched; the changelog says they "keep their current grants and stay reachable."
  • Apps that reach Postgres only over a direct connection, such as an ORM or psql, are unaffected, according to the changelog.
  • The Security Advisor will flag affected tables before the date, and owners and admins will be emailed.

Why it matters

  • constraint A migration that creates a table and omits grants worked because the old default filled the gap. After 30 October, each such migration needs its own grant statements.
  • exposure A grant to anon or authenticated on a SQL Editor table opens it to every role with a matching grant unless RLS is switched on, because only Dashboard-created tables get RLS by default.
  • decision Teams choose between writing grants table by table and revoking the default privileges so every new table starts closed. The docs give the revoke statements for tables, functions and sequences.

Supabase describes this as a change of default. The docs say Supabase is "changing the platform default to revoke these automatic grants so that exposure becomes opt-in." [9] As things stand, the anon, authenticated and service_role roles all receive select, insert, update and delete on every new table in public without anyone asking [8]. On the new default, a new table needs an explicit Postgres grant before the Data API can see it [18].

The failure is quiet on the database side. The table exists and looks normal, and the app gets an error where it used to get rows [19]. PostgREST returns a 42501 error for a missing grant [7].

The dev.to post offers an audit query against information_schema.role_table_grants and says plainly that it is the post's own query, not Supabase's [10]. The query reports on tables that already exist, and those are untouched, so we'd expect it to look clean the day before the cutover. It cannot tell you about the next table.

The cheaper test is a fresh project. The new setting has been selectable at project creation since 28 April [2], which is 185 days before the 30 October cutover [20]. Run the full migration set against a project created with it on. Any table that needs a grant and lacks one will show up as an error from the Data API [7].

We think grants belong in the same migration file as the create table statement. One file then holds the table, its grants and its RLS policy setup, and a reviewer sees all three in one diff. The docs advise the narrowest grant that will do the job: anonymous clients get read-only access, signed-in users get full access with RLS still enforced, and the service role gets full access only where server code goes through the Data API to reach the table [12]. The post adds its own rule, no write grant to anon unless anonymous writes are the point of the table [17].

Functions need separate care. The docs note that RLS does not apply to functions, so EXECUTE should go only to the roles that need it [15].

What to watch

  • The Security Advisor flags and owner or admin emails that Supabase says will arrive before 30 October, the first list of tables affected on a given project.
  • Any revision to the three dates in the Supabase changelog, since the 30 October cutover for existing projects is the one with no opt-out described in the post.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence55
Adoption
Insufficient
Hype gap
Insufficient
Incentives
Insufficient
Confidence60
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The Supabase changelog states the new rule as: "New tables in the public schema will no longer be exposed to the Data API automatically."

    ReportedSupportedSource: Supabase changelog, as quoted by the dev.to postView cited source
  2. [2]

    On 28 April 2026 the new setting became available for new projects, selectable at project creation.

    ReportedSupportedSource: Supabase changelog, as summarised by the dev.to postView cited source
  3. [3]

    On 30 May 2026 the new setting becomes the default for new projects, rolled out over a few weeks.

    ReportedSupportedSource: Supabase changelog, as summarised by the dev.to postView cited source

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 12, 2026

    Supabase Data API exposure changes on 30 October: grant tables explicitly

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Entities

Loading related stories