Commit Graph
8326 Commits
Author SHA1 Message Date
Alexis AguilarandMiranda Limonczenko add223d7b3 docs(style-guide): add rules for list lead-ins and UI instruction order (#51632)
## Problem

Two writing patterns came up while editing the Vercel Marketplace guide
in #51630, and the style guide doesn't cover either one.

- **References to a list:** When another sentence sits between a
reference and its list, as in "start from these tabs. Each one opens a
different page:", _these_ has nothing to point back to. Nothing in the
style guide covers this.
- **Order of UI instructions:** Nothing says whether an instruction
names the location or the control first. "Click **Manage** next to
Supabase" asks the reader to look for **Manage** before they know where
it is.

Resolves DOCS-1452.

## Solution

`02-elements.md` gets a new rule for lists and an addition to the
existing step guidance, each with a recommended and a not recommended
example.

- **Point forward to a list with _the following_** (under **Lists**):
When another sentence sits between a reference and its list, use _the
following_, which points forward. When the reference is directly before
the list, _these_ works too.
- **Location before the action** (under **Procedures**): The step
guidance now says that a step can begin with a short location phrase
followed by the imperative verb, and that when a step says where to act,
the location comes first.

The examples use _click_ for buttons, following the `click` and `select`
entries in `WORD_LIST.md`.

## Review instructions

1. Open `apps/docs/style-guide/02-elements.md` in the **Files changed**
tab.
2. Read **Point forward to a list with _the following_** under
**Lists**, and confirm that the examples separate the two cases: a
reference directly before the list, and one with a sentence in between.
3. Read the step guidance at the start of **Procedures**, and confirm
that the examples agree with the `click` entry in `WORD_LIST.md`.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

---------

Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io>
2026-10-16 09:07:04 -07:00
Andrey A. bc27d2661e chore(self-hosted): update 2026-10-16 - 0.8.3 (#51839) 2026-10-16 14:38:49 +03:00
e4ee46854a docs: add Antigravity to Supabase agent plugin docs (#51647)
## What this does

Adds **Antigravity** to the Supabase AI agent plugin docs.

- **Plugin docs** (`AgentPluginsPanel`): Antigravity client between
Cursor and Gemini CLI. The install step is a copyable `agy plugin
install https://github.com/supabase-community/supabase-plugin` (checked
with `agy` 1.4.0: it installs v0.1.17 with both skills and the MCP
server). A note below points to the `/plugin` slash command and
[Antigravity's plugin
docs](https://antigravity.google/docs/plugins/#managing-plugins-by-surface).
- **Icon**: replaces the existing Antigravity icon (MCP client picker
and "Pick your agent" grid share it) with the official full-color icon
from the [Antigravity press assets](https://antigravity.google/press/).
- **"Pick your agent" grid**: Antigravity now shows the "Plugin + MCP"
badge and links to the plugin page.

Plugin support shipped in supabase-community/supabase-plugin
[v0.1.17](https://github.com/supabase-community/supabase-plugin/releases/tag/v0.1.17)
(#66), validated with `agy` 1.3.5 and 1.4.0.

## Testing

Ran the docs app locally at 41bf5af, opened
`/docs/guides/ai-tools/plugins` and selected Antigravity. The icon and
install step render in light and dark mode, both links point to
`https://antigravity.google/docs/plugins/#managing-plugins-by-surface`,
and Claude Code is still the default selection.

<img width="771" height="349" alt="pr51647-antigravity-dark"
src="https://github.com/user-attachments/assets/a4c682f1-a67e-4a89-8060-7bf94adb2388"
/>

<img width="771" height="349" alt="pr51647-antigravity-light"
src="https://github.com/user-attachments/assets/65611703-789c-456e-b03f-b444b1e3958e"
/>


<img width="243" height="284" alt="image"
src="https://github.com/user-attachments/assets/b5c87b73-21d3-4665-ae75-4915b75dfefd"
/>


Closes AI-1315

---------

Co-authored-by: Barry Roodt <barry@jumptag.co.za>
Co-authored-by: Barry Roodt <barry.roodt@supabase.io>
2026-10-16 13:19:29 +02:00
Danny White 3960e6ac41 chore(deps): bump lucide-react to v1 (#51770)
## Problem

Lucide React v1 improves screen reader behaviour (icons are hidden from
assistive tech by default). It also removes brand icons such as GitHub.
We were still on Lucide 0.x across the monorepo.

## Solution

- Move every workspace onto one shared Lucide React v1 version via the
pnpm catalog.
- But Lucide React v1 [deprecated brand
icons](https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md)
- Meaning we need to handle any _old_ brand icons we used from Lucide
0.x.
- Luckily, that was just `GitHubIcon`. So...
- Add a `GithubIcon` in `packages/ui` that matches Lucide’s previous
GitHub icon, and use it wherever we imported GitHub from Lucide.
  - No other Lucide brand icons were in use.
- Studio “Continue with GitHub” sign-in still uses the existing SVG
asset (`github-icon.svg`), not this component.
- Keep the `Icon` suffix import style [recently
introduced](https://github.com/supabase/supabase/pull/51659)
- Monorepo apps now use `catalog` Lucide React v1.

## Review instructions

1. Open [Studio
preview](https://studio-staging-git-dnywh-bump-lucide-react-v1-supabase.vercel.app/dashboard/org)
on a project that is connected to GitHub:
   - Project home → Activity stats “GitHub” row
   - Org project list → GitHub badge on a connected project card/row
- Branches → GitHub link on a branch row, or “Sync with a GitHub branch”
   - Project Settings → Integrations → GitHub integration panel
2. Open
[/kb/guides/sample-guide](https://supabase.com/kb/guides/sample-guide) →
confirm “Go to the GitHub discussion” shows the icon.
3. Open
[/docs/reference/javascript](https://supabase.com/docs/reference/javascript)
→ confirm the header GitHub control still shows the icon. Or
[/docs/guides/troubleshooting/rls-simplified-BJTcS8](https://supabase.com/docs/guides/troubleshooting/rls-simplified-BJTcS8)
→ “View discussion on GitHub”.
2026-10-15 23:00:55 +00:00
Stephen Morgan 09f80f528e docs: reference the ability to use custom dns from VPCE (#51778)
Quick update to privatelink walkthrough in reference to custom DNS
2026-10-16 10:16:52 +13:00
Anthony Lio 0612cbdb27 fix(ui): drop stray tab border (#51657)
## Problem

there's a legacy border style duplicating border after recent rabs
change in docs

## Solution

- removes stray border

| state | preview |
| -------|------|
| before | <img width="913" height="509" alt="image"
src="https://github.com/user-attachments/assets/dba5a5ee-5212-4be2-86c0-e96d9dac41fb"
/> |
| after | <img width="913" height="509" alt="image"
src="https://github.com/user-attachments/assets/1f7d20eb-2f03-45b0-9a2c-4af8fa335784"
/> |

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

1. visit
`/docs/guides/auth/passwords#signing-up-with-an-email-and-password`

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-15 18:20:55 +00:00
Alexis Aguilar 339797498c docs(vercel-marketplace): refresh the Vercel Marketplace guide (#51630)
## Problem

The [Vercel Marketplace
guide](https://supabase.com/docs/guides/integrations/vercel-marketplace)
describes the integration as a Public Alpha, and its Quickstart doesn't
match how readers set it up. The **Deploy with Vercel** button deploys
an example app that doesn't include Supabase. The section on environment
variable sync sits next to the two setup paths, even though it applies
to both. The page also uses promotional phrasing and bare `Note:`
paragraphs where the style guide calls for admonitions.

These issues came up while reviewing #51617, which fills in the **Via
Vercel Marketplace** step.

Resolves DOCS-1451.

## Solution

Manual review plus a review with the `edit-the-docs` skill.

- **Quickstart:** The Quickstart now opens by naming both setup paths, a
starter template and the Vercel Marketplace, and explains that both
create a Supabase project and sync the same environment variables. The
template button deploys the Next.js Supabase starter and installs the
Supabase integration from the Vercel Marketplace, matching the deploy
link on Vercel's Supabase template page.
- **Release status:** The Public Alpha admonition is removed.
- **Overview:** Promotional phrases such as "seamless experience" and
"easy access management" now name the specific behavior: Vercel bills
you, you sign in with your Vercel account, and Vercel team roles carry
over to Supabase.
- **Studio support:** Readers get a click path for each entry point. The
**Integrations** tab opens the Supabase dashboard homepage, and the
**Storage** tab opens a specific project. Both tab names match the
current Vercel dashboard. Each instruction names the location before the
control, and buttons use _click_, per `WORD_LIST.md`.
- **Admonitions:** The permissions note is now a `note` admonition. The
billing cycle note is a `caution` admonition, because a plan change
resets the billing cycle.
- **Capitalization:** Common nouns such as organization, project, and
integration are lowercase.
- **Limitations:** The organization removal bullet now gives the order
of operations: delete the associated projects, then uninstall the
integration.

Two writing patterns from this PR are now proposed as style guide rules
in #51632 (DOCS-1452): using _the following_ when a sentence sits
between a reference and its list, and putting the location before the
action in UI instructions.

## Preview links


https://docs-git-alexisa-docs-1451-supabase.vercel.app/docs/guides/integrations/vercel-marketplace

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-15 09:00:12 -07:00
Alexis AguilarandMiranda Limonczenko bb1a2ab70d feat(docs): add Copy as Markdown and Ask AI to troubleshooting pages (#51501)
Resolves
[DOCS-1334](https://linear.app/supabase/issue/DOCS-1334/add-copy-as-markdown-ask-affordance-to-troubleshooting-pages).

## What this changes

Troubleshooting pages now have the same AI tools as guides: Copy as
Markdown, Ask ChatGPT, and Ask Claude. Readers can copy an article as
markdown, or open it in an AI assistant in one click.

The actions appear in the troubleshooting sidebar, after Keywords. The
heading matches the other sidebar headings. On narrow screens, the
sidebar stacks under the article, so the actions also work on mobile.

<img width="1512" height="908" alt="Screenshot 2026-10-09 at 2 29 13 PM"
src="https://github.com/user-attachments/assets/991c1555-c163-4894-91e5-8701bb1831f8"
/>

<img width="740" height="831" alt="Screenshot 2026-10-09 at 2 32 31 PM"
src="https://github.com/user-attachments/assets/1b9423d4-9f26-4f6f-9c9a-e95d50d7808e"
/>

## How it works

Before this PR, the AI tools section was built directly into the guides
sidebar, so only guides could use it. This PR moves it into its own
component, and guides and troubleshooting pages both render that
component. A future change to these actions, such as adding another
assistant or changing the Ask prompt, then happens in one place and
applies to both page types.

Each page passes a page type to the component. The component includes
that page type in the analytics events it sends when someone copies
markdown or clicks an Ask link. Guides send `guide`, and troubleshooting
pages send `troubleshooting`, so usage on each page type can be measured
separately.

## Open question

This PR adds a `troubleshooting` page type for analytics. It stays in
draft until that value is confirmed. If we reuse `guide` instead, it's a
one-line change.

## Testing

- Copy as Markdown copies the article and shows the "Copied!" state.
- Ask ChatGPT and Ask Claude open with the canonical page URL. ChatGPT
requires you to be logged in, which is also true on existing guide
pages.
- The sidebar layout works at desktop and mobile widths.
- Guide pages look and behave the same as before.

## Possible follow-up

On troubleshooting pages, the sidebar lists Products, Related error
codes, Keywords, AI tools, and then "Is this helpful?". The first four
headings use the sidebar's regular heading style. "Is this helpful?"
still uses the small monospace style from the guides sidebar, so it
stands out.

This PR lets the AI tools component accept a heading style from the page
it's placed on. The feedback component could accept a heading style the
same way. Troubleshooting pages could then pass the regular sidebar
style, and every heading in that sidebar would match.

---------

Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io>
2026-10-15 08:52:14 -07:00
claude[bot]andClaude 4c7014745c feat(studio): add custom OIDC option to third-party auth providers (#51612)
<!-- claude-slack-attribution -->
_Requested by **Stojan Dimitrovski** · [Slack
thread](https://supabase.slack.com/archives/C022071RB2L/p1791475016175969?thread_ts=1791475016.175969&cid=C022071RB2L)_

## Problem

The Management API accepts any OIDC issuer for third-party auth (`POST
/v1/projects/{ref}/config/auth/third-party-auth` with
`oidc_issuer_url`), but the Dashboard only offers Firebase, Clerk,
WorkOS, Auth0 and Amazon Cognito. Users with another OIDC provider have
no way to register it from the Dashboard.

Studio also hides any issuer it does not recognize: `IntegrationCard`
returns `null` for the `custom` type, so an issuer added through the API
never shows up in the list and cannot be deleted from the Dashboard.

## Solution

- Add a "Custom OIDC" item to the Add provider menu on the Third-Party
Auth page.
- New `CreateCustomOidcDialog` with a single required Issuer URL field.
It reuses `useCreateThirdPartyAuthIntegrationMutation`, so query
invalidation and the error toast behave like the other providers. The
URL is sent as typed after trimming whitespace.
- New `isValidOidcIssuerUrl` helper in `ThirdPartyAuthForm.utils.ts`:
the value must be an `https://` URL with a host, no query string, no
fragment, and no embedded credentials.
- The dialog copy is kept short: a one-line description and a single
helper line noting that signing keys are found at the issuer's
`/.well-known/openid-configuration`.
- `IntegrationCard` now renders custom issuers (badge-check icon,
"Custom OIDC" label, Issuer URL, Delete integration) instead of hiding
them. Delete uses the existing flow and permission check.
- The `custom` label changes from "Custom" to "Custom OIDC".
- New docs page
`apps/docs/content/guides/auth/third-party/custom-oidc.mdx` (served at
`/docs/guides/auth/third-party/custom-oidc`). It covers the Dashboard
flow, the Management API alternative, the `role` claim, client setup,
and RLS. It is linked from the third-party auth overview and added to
the docs sidebar. This supersedes the draft docs PR #51611.

Not included: UI for `jwks_url` and `custom_jwks`. The page and menu
keep the same feature gate (`authentication:third_party_auth`) and the
same permission checks as the other providers.

Before: the Add provider menu lists five providers. An issuer that is
not one of them is registered only through the API and does not appear
in the Dashboard.

After: the menu has a sixth item, Custom OIDC. It opens a dialog that
takes an issuer URL, rejects non-HTTPS values with an inline message,
and registers the issuer. The new provider appears in the list and can
be deleted from there.

## Review instructions

1. Open a project's Authentication > Third-Party Auth page and open Add
provider. Check for the new Custom OIDC item.
2. Enter `http://example.com` and submit. The field shows an inline
error and no request is sent.
3. Enter a valid HTTPS issuer URL that serves an OIDC discovery document
and submit. A success toast appears and the provider shows in the list
as Custom OIDC with its Issuer URL.
4. Enter an issuer the API rejects. The API error shows in the existing
error toast and the dialog stays open.
5. Delete the provider with Delete integration and confirm it disappears
from the list.
6. Read the new docs page and check that its Dashboard steps match the
UI.

Local checks:

- `vitest --run components/interfaces/Auth/ThirdPartyAuthForm`: 20 tests
pass (validation helper unit tests plus dialog component tests with
MSW).
- `tsc --noEmit` in `apps/studio`: no new errors.
- ESLint on the directory: no warnings in the new or changed code.
- Prettier is clean on the changed files, including the docs page. The
typos check is clean on the docs page and overview.

I did not run the dialog in a browser against a real project, so there
are no screenshots. The docs app was not built or rendered locally.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

🤖 Generated with [Claude
Code](https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe)

https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe


---
_Generated by [Claude
Code](https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe)_

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-14 19:01:08 +02:00
Wen Bo Xie 626f0d412a docs(branching): explain what a new branch inherits and what each push runs (#51753)
## Problem

Users ask whether the GitHub integration applies migrations and syncs
`config.toml` to a branch on its own or whether they need a GitHub
Action for it but there's no docs clarifying that.

The branching guides also does not have when a new branch inherits from
its base project, where a dashboard branch gets its schema, what the
`configure`, `migrate`, and `deploy` steps read from the repository, and
what the workflow step statuses mean.

## Solution

Added the missing facts to the four pages that already cover each topic,
with no new pages and no moved headings.

- Overview: a "What a new branch starts with" section listing the copied
settings, the placeholder Auth secrets, the webhook default, and where
each branch kind gets its schema.
- GitHub integration: a "What runs on each push" subsection that answers
the FDBKIN-11978 question directly, the `config.toml` sections the
configure step applies and the protected-branch rule, two migrate edge
cases and the `[db.migrations]` switch, and a new "Edge Functions"
subsection on copy-from-base and checksum skips.
- Dashboard: "Where a dashboard branch gets its schema".
- Troubleshooting: the step status table and two new causes under
"Config.toml not applying".

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 15:56:15 +00:00
Wen Bo Xie d46e226af8 docs(cli): update local stack guides for CLI v2.120.0 and v2.121.0 behavior (#51751)
## Problem

The two `supabase stack` guides describe behavior the CLI changed in
v2.120.0 (Oct 6) and v2.121.0 (deploy PR supabase/cli#7104 open). A
reader following them today hits different output than the pages
promise.

  | Guide says | CLI does | Since |
  | --- | --- | --- |
| `stack logs` streams live lines only, no history | Keeps history, adds
`--tail`, `--since`, `--service gateway`, reads while stopped
(supabase/cli#6893) | v2.120.0 |
| Rejected config change fails with `cannot change on the saved stack` |
Fails with `The saved stack cannot adopt these changes`
(supabase/cli#6944) | v2.120.0 |
| Port changes always need a new local project | A stopped project
re-plans ports on next start (supabase/cli#6950) | v2.121.0 |
| No bulk destroy | `destroy` accepts repeated `--stack-id`
(supabase/cli#7000) | v2.121.0 |
| OrioleDB unsupported | `db.orioledb_version` runs in both runtimes
(supabase/cli#6934) | v2.121.0 |
| Nothing about native `pg_cron` | Jobs run in background workers;
earlier versions fail every job (supabase/cli#7039) | v2.121.0 |

The CLI getting-started guide (#50736) also says a container runtime is
required and never mentions the native runtime.

  ## Solution

Updated both stack guides and added one sentence to the getting-started
prerequisites.

- v2.121.0-only behavior is marked "In CLI v2.121.0 or later", with the
earlier behavior stated beside it. The guides' baseline stays at
v2.119.0.
- Every claim was checked against supabase/cli `develop` source and the
commits above.
- The `supabase stack` commands stay out of the generated CLI reference
by design, so these guides remain the only place the flags are
documented.

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 16:45:07 +02:00
Crispy 427d5f4681 chore: catch you all later (#51746)
Bye!
2026-10-14 13:49:10 +00:00
Inder Singh 31a74e8663 fix(self-hosted): align OAuth and OIDC discovery api-gw routes with the platform (#51493) 2026-10-14 15:47:45 +02:00
Kody JacksonandCodesmith 2d7e5f57ed chore(docs / www) - update video links to latest DevRel videos where applicable (#51606)
## Problem

Several outdated (or missing) video references across docs and www apps.

## Solution

Updates these links (and adds where appropriate) to link out to the
newer series on Supabase by @dshukertjr and individual videos by
@dijonmusters

## Preview links


[docs](https://docs-git-kody-devrel-708-update-video-links-supabase.vercel.app/docs)

[www](https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/)

## Review instructions

For marketing folks specifically, sanity check on the
[changes](https://github.com/supabase/supabase/pull/51606/changes#diff-1fb413a22e16c9b7b200e47aa9661c8be240a52a06276ed04c450e3d92c9a12a)
to the features.tsx file, which render to:



Page | Before (live) | After (preview)
-- | -- | --
vector-database | https://supabase.com/features/vector-database |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/vector-database
realtime-postgres-changes |
https://supabase.com/features/realtime-postgres-changes |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-postgres-changes
realtime-broadcast | https://supabase.com/features/realtime-broadcast |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-broadcast
realtime-presence | https://supabase.com/features/realtime-presence |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-presence
deno-edge-functions | https://supabase.com/features/deno-edge-functions
|
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/deno-edge-functions
cli | https://supabase.com/features/cli |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/cli
role-based-access-control |
https://supabase.com/features/role-based-access-control |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/role-based-access-control

---------

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
2026-10-14 08:27:19 -05:00
Paul Cioanca 83ee918e80 chore: remove redundant personnel (#51663)
* Some things are harder to delete than others
* No breaking changes expected

---

<img width="498" height="482" alt="gif"
src="https://github.com/user-attachments/assets/a33ff7da-2815-438d-ac7b-d6b2f91c8404"
/>
2026-10-14 13:06:32 +00:00
21f7e306ee docs(cli): align declarative schema and diff engine docs with CLI behavior (#51609)
## Problem

Four docs pages describe CLI behavior that v2.120.0 no longer has. A
reader following them hits a wrong result in three places.

- The declarative guide tells legacy-engine users who ran `db pull
--declarative` to delete the exported tree. The command also rewrites
`[db.migrations].schema_paths` in `config.toml`, so `db diff` keeps
failing after the delete. The guide also claims the failure happens "on
the first file". The code does not guarantee that.
- The declarative directory moved from `supabase/database` to
`supabase/schemas` in v2.115.0. The CLI warns when it finds a tree at
the old path. No page mentions the move or the warning, and the `db
schema declarative sync` example in the command reference still prints
the old path.
- The command reference marks `--experimental` as required on the
declarative commands. `[experimental.pgdelta] enabled = true` also
unlocks them.

Two smaller gaps: the diff engines page shows how to fall back to
`migra` for one run but not how to try `pg-delta` for one run, and the
guide omits the note `db diff -f` prints when it ignores schema files.

Every claim was checked against the CLI source on `develop` and the
v2.120.0 tag.

## Solution

Docs-only change. Four files, 17 insertions, 8 deletions.

- `declarative-database-schemas.mdx`: corrects the legacy caution,
documents the pre-2.115.0 directory and its warning, adds the `db diff
-f` note.
- `diff-engines.mdx`: adds the single-run opt-in table (`db diff
--use-pg-delta`, `db pull --diff-engine pg-delta`, `--experimental` for
the declarative commands) and the `SUPABASE_EXPERIMENTAL_PG_DELTA`
override. Updates the legacy `db pull --declarative` row. Prettier
realigned the comparison table, which accounts for most of that page's
diff.
- `cli_v1_config.yaml`: `schema_paths` notes the automatic rewrite on
`migra` and the warning on `pg-delta`. `declarative_schema_path` notes
the pre-2.115.0 default.
- `cli_v1_commands.yaml`: fixes the example path and drops `required:
true` from `--experimental` on the two declarative commands. Both match
the spec the CLI generator produces from `develop`.

The command reference is generated from the CLI repo, so the same fixes
are in supabase/cli as a separate PR. Without that, the next release's
reference update reverts them here.

## Review instructions

1. Open the preview for
`/docs/guides/local-development/declarative-database-schemas` and search
for "schema_paths". The legacy caution should say the command rewrites
the setting and tell readers to remove it.
2. On the same page, search for "2.115.0". The directory note should
name the version and both fixes.
3. Open the preview for `/docs/guides/local-development/diff-engines`
and search for "single run". The opt-in table should render, and the
comparison table below it should still align.
4. Open the CLI reference for `db schema declarative sync`. The second
example should print `supabase/schemas`, and `--experimental` should not
show as required.
5. Open the config reference entries for `db.migrations.schema_paths`
and `experimental.pgdelta.declarative_schema_path` and read the added
sentences.
6. Optional source check in supabase/cli `develop`:
`updateDeclarativeSchemaPathsConfig` in
`apps/cli/src/commands/db/shared/pgdelta.write.ts` and
`apps/cli/src/commands/db/schema/declarative/declarative.former-default.ts`
back the two main claims.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

---------

Co-authored-by: avallete <andrew.valleteau@supabase.io>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:53:16 +00:00
Anthony Lio 4b93c5186d chore: bump shiki and catalog entry (#51578)
## Problem

monorepo resolved four different shiki majors _ shiki was never added to
the pnpm catalog so each app kept whatever version it started with.

shiki 4.5.0 stops grammar injections from being registered again on
every language load (shikijs/shiki#1318) and docs worked around the same
problem locally in #50501

## Solution

- adds `shiki: ^4.5.0` to the catalog and points docs, www and marketing
at it
- docs preload guard from #50501 stays but will be ff by moving docs to
lazy language loading in another pr

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

1. open `/docs/guides/database/full-text-search` on the docs preview and
on production side by side _ sql, js, dart and python blocks should have
the same colors in light and dark mode
2. hover a function name in one of the js blocks on that page, the type
popover should still show
3. open the www preview home page, scroll to the frameworks section and
switch a few tabs _ code should be highlighted.
4. open `/go/supabase-stripe-projects` on the www preview _ code block
section should be highlighted the same as production

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 12:46:03 +03:00
Brian-AnandDanny White f1082e28c7 chore: migrate Framer Motion imports to Motion (#51520)
## Problem

Closes #31221.
The applications and shared UI packages still import the former
`framer-motion` package instead of Motion's React entry point.

## Solution

Replace runtime imports, type imports, and three test mocks with
`motion/react` across the consuming workspaces.
Replace the seven direct dependency declarations with `motion:
^11.18.2`.
Preserve the existing animation engine version and all other dependency
resolutions, including the asynchronous `domMax` feature loader.
Historical blog examples remain as published; `framer-motion` remains a
transitive implementation dependency of Motion.

## Review instructions

1. Run `pnpm install --frozen-lockfile` and check the seven dependency
replacements in the lockfile.
2. Open the WWW Auth page and Docs homepage at desktop and mobile
widths, with normal and reduced motion preferences.
3. Open the mobile navigation, expand Product on WWW, and close the menu
using Escape and the close button.
4. Check the existing animation components, shared form validation, and
Studio tests for unchanged behavior.

Validation:

- Studio: 731 test files, 8,334 passing tests and one expected failure,
with `--maxWorkers=4`.
- Shared UI, UI patterns, WWW, and UI library: 615 passing tests.
- `pnpm run typecheck --concurrency=1`: all 16 repository tasks pass.
- All six application source lint scripts and lint ratchets pass;
generated Docs example copies are excluded from local lint.
- Repository Prettier source check, lockfile formatting, and case hazard
check pass.
- WWW: 10 existing end-to-end checks across nine pages.
- Docs: 5 existing guide link and accessibility checks across Database
and Auth.
- WWW and Docs mobile navigation pass at desktop/mobile sizes with
normal/reduced motion; SQL-to-REST translation tabs exercise the
asynchronous feature loader without browser errors.
- Frozen-lockfile installation passes; all existing package and snapshot
resolutions are unchanged.
- Learn and UI library command palettes open, filter results, and close
with Escape without browser errors.
- Independent code review finds no actionable defects.
- `npm run build -- --filter=www --filter=docs --filter=studio
--filter=learn --filter=library --concurrency=1 --continue=always`: all
five affected applications build successfully (9 tasks including
prerequisites); asset uploads disabled for local validation.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
(no docs topics changed)

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-10-14 07:16:00 +00:00
Kody Jackson 3910dda149 chore(docs) - update vercel marketplace mention (#51617)
## Problem

outdated placeholder for the `vercel marketplace` navigation. this is
now live

## Preview URL


https://docs-git-docs-chore-update-vercel-marketplace-mention-supabase.vercel.app/docs/guides/integrations/vercel-marketplace#via-vercel-marketplace
2026-10-13 15:35:40 -07:00
Gonzalo ServatandCopilot App 7642d1c4a4 chore(docs): add Gonzalo Servat to humans.txt (#51581)
## Problem

I recently joined Supabase as part of the Container Engineering team,
and adding myself to `humans.txt` is one of my onboarding tasks.

## Solution

Add my full name, Gonzalo Servat, to the team list in alphabetical
order, between Giuseppe Mandato and Greg Kress.

## Review instructions

1. Confirm Gonzalo Servat appears between Giuseppe Mandato and Greg
Kress.
2. Confirm the rest of the list is unchanged.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-13 15:07:51 -07:00
Jeremias Menichelli 05396e3378 [DOCS-1422] feat: create GitHub workflow or script to fetch troubleshooting (#51365)
## Problem

Currently troubleshooting guides merged in a private repository trigger
an action to open a PR against our Docs project.

From now on, we want the `kb` to host the troubleshooting guides and
take care of all the Github discussion process while improving some of
its parts.

## Solution

With this PR now:
- All files and scripts related to handling the actions and processes
for handling troubleshooting entries and GitHub Discussion creation on
Docs are deleted.
- A new workflow to sync troubleshooting guides with Supabase's
`troubleshooting_entries` table was created with some improvements.
- Now troubleshooting entries are fetched at pre-build in `kb` project
directory.
- When troubleshooting guides are created a new script detects this,
creates the GitHub discussion for it, extracts the URL, and pushes the
row to a db table at `push`.
- When troubleshooting guides are updated, a checksum holding its title
and body is compared, and the GitHub discussion content gets updated.
 
_Note: all troubleshooting content hasn't been migrated for **kb**, so
content not ready is filtered and not placed in the directory. This
allow us to progressively migrate all pages without breaking the build._

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

For the database workflow, sadly, we will have to wait and monitor, but
the fetching mechanism can be tested.

1. Go to the preview link for `kb`
2. Go to Topics > Troubleshooting
3. A new guide should be visible "Partial migrations and schema
inconsistencies from embedded transactions", click on its link
4. A page showing the guide's content should render

<img width="1022" height="810" alt="Screenshot 2026-10-07 at 13 19 17"
src="https://github.com/user-attachments/assets/cbd25a60-8721-4329-907f-f92de894c217"
/>



## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 14:30:58 -03:00
Matt McGill 287c36447a chore(docs): add Matt McGill to humans.txt (#51610)
## Problem

I joined Supabase!

## Solution

I've recorded that I joined Supabase!

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 15:32:36 +00:00
Wen Bo Xie 2ba7352cfe docs: clarify declarative pg_cron job workflow (#51596)
## Problem

The declarative schemas guide does not explain how pg-delta tracks
pg_cron jobs. Its guidance that schema diffs exclude row data can also
suggest that jobs stored in cron.job are excluded.

Readers need to know where to declare jobs, how changes become
migrations, and why jobs without unique names are skipped.

## Solution

Document the declarative workflow for pg_cron jobs, including:

- Declaring jobs in SQL files under supabase/schemas/.
- Giving each job a unique name.
- Generating migrations when job declarations change or are removed.
- The scheduling and unscheduling calls emitted by the engine.

Connect the DML caveat to the extension configuration explanation so
readers understand why supported configuration rows are tracked.

Validation: Prettier, Markdown generation, and git diff --check passed.
The cron workflow was checked against source code but was not executed
in a sandbox.

## Review instructions

1. Open the declarative database schemas guide in the docs preview.
2. Read Data manipulation language and follow the extension
configuration link.
3. In Extension-managed objects, confirm that the cron guidance explains
where to declare jobs, the naming requirement, and the generated
migration behavior.
4. Follow generate and apply a migration and confirm it leads to the
existing workflow.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the /write-the-docs or /edit-the-docs skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 16:45:48 +02:00
Satya Rohith 1b1c495c6a docs: note deno.json/package.json required for .npmrc (#50320)
## Summary
- .npmrc is only read when deno.json or package.json also exists in the
function's directory. Adds a caution note to the private npm packages
section.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Documentation**
- Added a caution explaining that private NPM package configuration
requires a `deno.json` or `package.json` file in the function directory.
- Clarified that `.npmrc` is ignored when neither configuration file is
present.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-13 08:39:38 -06:00
claude[bot]andClaude ffef679f70 chore(docs): add hasResults to docs_search_v2_search_submitted (#51541)
<!-- claude-slack-attribution -->
_Requested by **Pam Chia** · [Slack
thread](https://supabase.slack.com/archives/C076KTY11DF/p1791767641595649?thread_ts=1791767641.595649&cid=C076KTY11DF)_

## Problem

**Before:** `docs_search_v2_search_submitted` (added in #51146) fires
when a Search V2 query settles on either the `results` or the
`noResults` state, but it only sends `query`. A search that found
nothing looks the same as one that found results, and no other Search V2
event carries the outcome, so the no-results rate for Search V2 can't be
computed.

**After:** the event also sends `hasResults`. It's `true` when the
endpoint returned at least one result and `false` when it returned none,
so zero-result searches can be counted and their queries inspected.

## Solution

- `packages/common/telemetry-constants.ts`:
`DocsSearchV2SearchSubmittedEvent` gains a doc-commented `hasResults:
boolean` property.
- `apps/docs/features/SearchV2/SearchV2Dialog.tsx`: the existing fire
site sends `hasResults: searchState.status === 'results'`. The
`useDocsSearchV2` reducer only sets `results` when the response has at
least one hit, and `noResults` otherwise, so the status is exactly the
outcome.

The change is additive: the event name and `query` are unchanged, and
the `loading`, `error`, and `initial` states still don't fire the event.

Linear:
[GROWTH-1330](https://linear.app/supabase/issue/GROWTH-1330/docs-search-v2-add-hasresults-to-docs-search-v2-search-submitted)

## Review instructions

1. Open the docs preview with the Search V2 flag query:
`?docs-search-v2=search-v2-active`.
2. Open search and type a query that returns results. In the network
tab, the `/platform/telemetry/event` request for
`docs_search_v2_search_submitted` has `custom_properties` `{ "query":
"...", "hasResults": true }`.
3. Type a query that returns nothing (for example random characters).
The event has `"hasResults": false`.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
(not applicable: no docs content changed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01JaqCdU2sPkBMbaUmUPW75i

---
_Generated by [Claude
Code](https://claude.ai/code/session_01JaqCdU2sPkBMbaUmUPW75i)_

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-13 10:41:53 -03:00
Drew McLellan e450aa5f85 chore(docs): Add Drew McLellan to humans.txt (#51557)
## Problem

I've joined Supabase and my name is not yet in the humans.txt file.

## Solution

Add my name (Drew McLellan) to the humans.txt file.
2026-10-13 07:46:38 +00:00
Katerina Skroumpelou d303c248d3 docs: drop stale alpha labels from server and middleware reference (#51494)
## Problem

The server and middleware reference pages on supabase.com still carry
alpha labels that were dropped from the source partials weeks ago.
#51031 (Sep 30) removed the alpha wording from the partials and #51276
(Oct 5) added the adapter removal date, but neither change reached the
live site.

The reference build (`apps/docs/scripts/build-reference-content.ts`,
`writeNewMarkdownPartials`) copies a partial to
`docs/ref/<library>/<name>.mdx` only when that file does not exist, and
the page renderer reads from `docs/ref`. Once a page has been seeded,
later edits to the partial are never picked up. The three affected pages
were seeded before those PRs merged.

The UI library MCP page has the same stale wording: it says the
`pipeline` entry form of `withSupabase` is alpha and tracks
`@supabase/middleware` 0.x. Middleware is at 1.x and `@supabase/server`
dropped the alpha label in supabase/server#185.

Linear:
[SDK-2161](https://linear.app/supabase/issue/SDK-2161/remove-the-public-beta-designation-from-supabaseserver).
Companion package PR: supabase/server#192.

## Solution

Copy the current partial bodies over their rendered twins. The
frontmatter is identical in each pair, and the partials are left
untouched:

- `apps/docs/docs/ref/server/frameworks.mdx`: adapters are now described
as deprecated with the December 1, 2026 removal date, the Versions note
tells readers to add `@supabase/middleware` as a direct dependency, the
migration steps include `npm install @supabase/middleware`, and "The
entry form is alpha" is gone.
- `apps/docs/docs/ref/middleware/introduction.mdx`: the "Alpha"
admonition is gone.
- `apps/docs/docs/ref/middleware/usage-examples.mdx`: the entry form
note no longer says alpha.

Rewrite one paragraph in `apps/ui-library/content/docs/headless/mcp.mdx`
so it states the version requirement (`@supabase/server` 1.6.0 or later)
and that the nested form behaves the same, without the alpha or 0.x
claims.

After this PR each `docs/ref` file is byte-identical to its partial, so
`diff` between the two is empty.

## Preview links

| Site | Live | Preview | Search for |
| ---------- |
---------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------
| --------------------------------------- |
| Docs |
[/docs/reference/server/frameworks](https://supabase.com/docs/reference/server/frameworks)
|
[/docs/reference/server/frameworks](https://docs-git-docs-drop-stale-alpha-labels-supabase.vercel.app/docs/reference/server/frameworks)
| `December 1, 2026` |
| Docs |
[/docs/reference/middleware/introduction](https://supabase.com/docs/reference/middleware/introduction)
|
[/docs/reference/middleware/introduction](https://docs-git-docs-drop-stale-alpha-labels-supabase.vercel.app/docs/reference/middleware/introduction)
| `is in alpha` (live only) |
| Docs |
[/docs/reference/middleware/usage-examples](https://supabase.com/docs/reference/middleware/usage-examples)
|
[/docs/reference/middleware/usage-examples](https://docs-git-docs-drop-stale-alpha-labels-supabase.vercel.app/docs/reference/middleware/usage-examples)
| `The entry form of` |
| UI library |
[/ui/docs/headless/mcp](https://supabase.com/ui/docs/headless/mcp) |
[/ui/docs/headless/mcp](https://ui-library-git-docs-drop-stale-alpha-labels-supabase.vercel.app/ui/docs/headless/mcp)
| `Composing` |

## Review instructions

1. Open the live and preview links for the frameworks page side by side.
Search for `alpha`: present on live, absent on preview. Search for
`December 1, 2026`: absent on live, present on preview.
2. Open the middleware introduction. The "Alpha" caution box is gone on
preview.
3. Open the middleware usage examples and expand the CORS example
details. The entry form note reads "needs `@supabase/server` 1.6.0 or
later" with no alpha.
4. Open the UI library MCP page. The paragraph after the `whoami` note
states the version requirement and no longer mentions alpha or 0.x.
5. Optional, in a checkout: `diff
apps/docs/spec/reference/server/v1/partials/frameworks.mdx
apps/docs/docs/ref/server/frameworks.mdx` prints nothing. Same for the
two middleware pages.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

The docs text is copied verbatim from partials that already went through
review in #51031 and #51276. The one rewritten paragraph in the UI
library page follows the Supabase writing style guide.
2026-10-12 11:46:49 +00:00
Guillaume Faas 1c97fe51be docs: move C# SDK from community to official support (#51487)
## Problem

Remove COMMUNITY badge from C# SDK Reference, and fix links pointing to
`supabase community`.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-12 14:48:36 +08:00
Coenen BenjaminandDanny White 853bac960e feat(studio): limit DuckLake managed setup to the current project (#51380)
## Problem

In **Add pipeline**, the managed DuckLake configuration method (**Select
Supabase projects**) lets users pick any project in their organization
for the catalog and for storage. For now, managed DuckLake should only
use the current project.

## Solution

- Rename the option to **Use this Supabase project** and remove the
**Catalog project** and **Storage project** selectors. Users still set
**Metadata schema** and **Bucket**.
- Remove `ducklakeCatalogProjectRef` and `ducklakeStorageProjectRef`
from the form schema, default values, and validation rather than hiding
them, so the form can't carry another project's ref.
`buildDucklakeConfig` sets both `catalogProjectRef` and
`storageProjectRef` to the current project ref, which the config
builders already receive from the URL.
- The bucket list and the **New bucket** dialog always target the
current project. The cross-region warning is removed because it can no
longer trigger.
- `data/replication` (types and API payload mapping) is unchanged. It
still sends `project_ref` for the catalog and storage, now always the
current project.
- Fix in passing: creating a bucket from the dialog now sets the field
with `shouldDirty` and `shouldValidate`, so a stale "Bucket is
required." error clears.
- Edit mode and **Enter connection details** are unchanged.

The DuckLake docs page
(`apps/docs/content/guides/database/replication/pipelines/ducklake.mdx`)
still describes choosing separate projects. It'll be updated in a
follow-up PR that should merge after this one ships.

## Review instructions

1. Open a project, go to **Database** > **Pipelines**, select **Add
pipeline**, and choose **DuckLake**.
2. Under **Configuration method**, check that the first option is **Use
current Supabase project** and that there's no **Catalog project** or
**Storage project** selector.
3. Open the **Bucket** list and check that it shows the current
project's buckets. **New bucket** creates a private bucket in the
current project.
4. Create the pipeline and check that the request sends the current
project ref as both `catalog.project_ref` and `storage.project_ref`.
5. Run the unit tests: `cd apps/studio && pnpm vitest run
components/interfaces/Database/Replication/DestinationPanel/DestinationForm
data/replication`

## Checklist

Check all before review:

- [ ] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-10-12 00:14:22 +00:00
Danny White 7b48b298ee feat(apps): distinguish local development with blue blueprint favicons (#51420)
## Problem

- Local apps are hard to distinguish from hosted apps in browser tabs.

## Solution

- Add blue blueprint icons to local development in all 8 apps and Studio
CLI.
- Keep normal branding for production, hosted staging and self-hosted
Studio.
- Builds on #51419.


| Before | After |
| --- | --- |
| <img width="1290" height="76" alt="CleanShot 2026-10-08 at 13 29
14@2x"
src="https://github.com/user-attachments/assets/72bc50d7-37e0-47d0-8dfd-50e233a443bd"
/> | <img width="1282" height="72" alt="CleanShot 2026-10-08 at 13 30
03@2x"
src="https://github.com/user-attachments/assets/afb15a70-3938-4cff-9b41-dc6c25460b7c"
/> |

## Review instructions

- Start an app locally. Its browser tab should show the blue icon.
- Check Studio CLI uses blue and hosted staging uses white.
- Check production icons are unchanged, including Learn's black and
white icon.
- Run `node scripts/validate-favicons.mjs`. All 16 sets should pass.

Asset and routing checks, formatting and Common/Studio type checks
passed. Full builds have not been run.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
2026-10-12 10:26:51 +11:00
Danny White 325a5a0da7 fix(studio): polish extension installation dialogs (#51463)
## Problem

The enable-extension dialog in #51440 needs clearer installation copy
and a consistent disclosure for custom-schema guidance. On narrow
screens, footer buttons touch and dialog content can scroll sideways.

## Solution

Polish the dialog on top of #51440:

- Explain fixed-schema requirements and hide custom-schema guidance when
the extension requires a specific schema.
- Share the disclosure interaction with the session-expired and
API-hardening dialogs through `ui-patterns/DialogDisclosure`, documented
with a live design-system example.
- Fix narrow-screen overflow and add vertical spacing to shared dialog
footers.
- Refine inline-code styling and update the PostGIS instructions and E2E
button locator.


| After |
| --- |
| <img width="852" height="710" alt="CleanShot 2026-10-09 at 12 17
47@2x"
src="https://github.com/user-attachments/assets/59f6f1e7-9884-4cdb-b678-62b7f88a8ec5"
/> |
| _Standard extension_ |
| <img width="836" height="1092" alt="52254"
src="https://github.com/user-attachments/assets/dbf53d3e-6583-4c3b-8f43-577e0723d9a7"
/> |
| _Standard extension expanded accordion_ |
| <img width="836" height="604" alt="CleanShot 2026-10-09 at 12 20
04@2x"
src="https://github.com/user-attachments/assets/c8e3961f-2683-440c-a2a2-48ccd53c4a17"
/> |
| _Extension with fixed schema_ |

## Review instructions

1. Open `/project/<ref>/database/extensions`. Turn on the toggle for a
disabled `postgres_fdw` extension. Expand **Install in a different
schema** and check its hover, keyboard focus and full-width click
target. Repeat with `pg_cron` or `pgmq`: the intro must say **must**,
and custom-schema guidance must be absent. Cancel without enabling.
2. At 320 px and 375 px, check the extension dialog's alignment,
inline-code rendering, wrapped SQL and stacked **Enable** / **Cancel**
spacing. Confirm the page does not scroll sideways.
3. On a platform project with the Data API enabled, open
`/project/<ref>/integrations/data_api/settings`. Under **Harden Data
API**, click **Harden Data API**. Expand both sections and check the
same trigger behaviour. Confirm completed sections still show their
check icons. Close without applying either action.
4. The session-expired dialog has no direct route. It is rendered by
`apps/studio/hooks/misc/withAuth.tsx` after authentication loading
exceeds 10 seconds. For repeatable local review, temporarily pass
`visible={true}` to its `SessionTimeoutModal` callsite, then open
`/projects`. Expand **Having trouble?** by clicking the text or chevron
and using Enter / Space. Check the help text and controls. Close the
dialog without signing out or clearing site data, then undo the
temporary prop change.
5. In the design system, open
[`/docs/components/dialog#optional-details`](https://design-system-git-dnywh-choreextension-dialog-polish-supabase.vercel.app/design-system/docs/components/dialog#optional-details).
Click **Export results**, then expand **What’s included** with the mouse
and keyboard. The demo imports the same `ui-patterns/DialogDisclosure`
used by Studio.
6. Open another dialog and an alert dialog at a narrow width. Check the
shared 8 px gap between stacked footer buttons. Review inline-code
examples on `/docs/components/typography` for the shared styling change.
2026-10-12 10:18:45 +11:00
Danny White 255a80e219 refactor(apps): standardise existing favicon assets and declarations (#51419)
## Problem

- Favicon files and markup are duplicated across apps.

## Solution

- Replace old files with one ICO, one Apple icon and two manifest icons
per set.
- Share icon markup and add generation notes and scripts.
- Keep existing branding, including Learn's black and white icon.
- Make the border radius match across all apps’ favicons.

## Review instructions

- Check normal app icons and Studio staging in browser tabs.
- Check icons load under `/docs` and `/kb`.
- Run `node scripts/validate-favicons.mjs`. All 8 sets should pass.
2026-10-12 10:18:18 +11:00
Alexis AguilarandMiranda Limonczenko 8617532ae1 fix(docs): remove orphaned cli.mdx and update stale /guides/cli link (#51495)
Resolves
[DOCS-1252](https://linear.app/supabase/issue/DOCS-1252/resolve-e2e-broken-link-errors-for-the-cli-guide).

#48453 updated most `/cli` links to `/local-development`. This PR covers
the remaining `/cli` references.

## Changes

- **Delete `apps/docs/content/guides/cli.mdx`.** The file has had no
route since the October 2024 docs IA reorganization (#29364), which
moved the CLI guides under `local-development/`.
- In production, `/docs/guides/cli` redirects to
`/docs/guides/local-development` through `apps/www/lib/redirects.js`, so
the file's content never renders.
- On Vercel previews, which don't have `www` redirects, the URL returns
404. Docs E2E tests every changed guide file, so any edit to `cli.mdx`
fails the required check.
- Deleting it is safe for Docs E2E, which only scopes added or changed
files. The redirect still covers the old URL.
- **Update the connection-refused troubleshooting page** to link to
`/docs/guides/local-development` instead of the redirected
`/docs/guides/cli`.
- **Point the "Go to Local Dev / CLI" command palette entry at
`/guides/local-development`.** It routed to `/guides/cli`, which only
resolves through the `www` redirect and returns 404 on previews.
- **Remove the unused `cli` navigation menu** from
`NavigationMenu.constants.ts`. No `MenuId` resolves to it, so it was
never rendered, and its links pointed to pages that no longer exist.

Question for @czenko: 
#48453 left `cli.mdx` alone on purpose, describing it as needing a
routing or content decision. Deleting it seemed like the simplest fix,
but is there a reason to keep it? It looks like it's an artifact that
sometimes gets updated because it's being mistaken as a living document.
Also, I believe troubleshooting guides are being currently moved - this
ticket and change might coincide with the new
https://github.com/supabase/troubleshooting repository, but I didn't see
this file existing in there just yet - it's being currently being moved
in this PR
https://github.com/supabase/troubleshooting/pull/330/changes#diff-b5908c6861f711c3a38fba99aa133cdb796f26c27a35e77c674cb21f988a1046
(so I think I should do the link change in that PR and I can remove it
from this PR as to not create merge conflicts or drift). But it makes
questions come up about how broken links are handled in that repository
👀

---------

Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io>
2026-10-09 22:48:36 +00:00
Daniel Chapman 4fcd212d6a Add Daniel Chapman to humans.txt (#51467)
## Problem

I joined the company.

## Solution

Added myself to humans.txt.
2026-10-09 05:50:33 -04:00
Marcus Weinerandsupabase-vercel-tedd[bot] 8c10701cb5 feat(docs): Document TLS ciphers and upcoming CBC removal (#51390)
## Problem

We're soon going to remove CBC-mode ciphers from the HTTP APIs for
projects hosted on the platform.

## Solution

These docs help customers understand what our TLS offering looks like
and helps with the change.

## Review instructions

Check the copy if it's understandable and well written

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

The `/write-the-docs` skill showed these notes:

- The error strings in the troubleshooting table are typical messages,
not taken from Supabase logs or tickets.
- The proxy workaround is my suggestion, not part of the approved comms.
- The openssl command appears on both pages. The troubleshooting
renderer (MDXRemoteBase) doesn't seem to support <$Partial>, and no
troubleshooting article uses one, so I didn't share it.
- Both pages describe a future removal. After November 10 the wording
("will remove", "until the removal date") needs a follow-up edit to
present tense.

---------

Co-authored-by: supabase-vercel-tedd[bot] <336548405+supabase-vercel-tedd[bot]@users.noreply.github.com>
2026-10-09 15:45:08 +07:00
Tina HaandClaude Sonnet 5.5 94f0a0ab1e fix(docs): remove outdated migrations endpoint access note from supabase-for-platforms (#51399)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Docs update

## What is the current behavior?

The "Make database changes" section of the Supabase for Platforms guide
says only select customers can access `POST
/v1/projects/{ref}/database/migrations` and points to a partnerships
form. The endpoint is no longer gated:

- https://github.com/supabase/platform/pull/31058 (merged 2026-03-27)
made the migrations endpoint GA for everyone.
- https://github.com/supabase/platform/pull/36265 (merged 2026-07-28)
removed the outdated beta/partner-only descriptions from the API
reference.

This guide page was not updated alongside them.

## What is the new behavior?

Removes the outdated access admonition. The endpoint description and
example are unchanged.

## Additional context

Confirmed with the Control Plane team that the endpoint is GA and this
page is outdated. Related support ticket: SU-491909.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:18:23 -04:00
Mike Donnalley f918b8ebd6 Add Mike Donnalley to humans.txt (#51451)
## Problem

humans.txt doesn't have my name listed in it.

## Solution

Adds my name to the list of humans.


## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-08 10:44:04 -06:00
Brad Deam 33c5f91e6f chore(docs): Add Brad Deam to humans.txt (#51418) 2026-10-08 11:30:04 +10:30
Miranda Limonczenko 5c68e24faf fix(docs): keep collapsed sidebar group links in the server HTML (#51373)
Part of
[DOCS-1432](https://linear.app/supabase/issue/DOCS-1432/discovery-gather-information-and-data)

## Problem

While doing Discovery for Information Architecture, I found that my
agents were taking 10+ clicks to find a page. This was _really_ bad. But
it turns out it's an accessibility issue; the agent can't _see_ any
nested subnav item.

Allowing the dom to access the subnav without toggling an accordion
allows an agent to freely navigate, completely resolving some of my
failing evals.


## Solution

- **Render a hidden list of each group's links.** A `<ul hidden>` next
to each group holds its links, nested groups included, so they are in
the HTML. The accordion is unchanged, so the sidebar looks and animates
the same as production.
- Checked for accessibility.




## Manual testing

1. Open the [Platform hub on the deploy
preview](https://docs-git-docs-nav-render-collapsed-links-supabase.vercel.app/docs/guides/platform).
In the sidebar, **Single Sign-On** and **Multi-factor Authentication**
are collapsed.
2. Run `curl -s
https://docs-git-docs-nav-render-collapsed-links-supabase.vercel.app/docs/guides/platform
| grep -o 'href="/docs/guides/platform/sso"'`. It prints the link. The
same command against supabase.com prints nothing.
3. Click **Single Sign-On**. It opens and shows its guides, including
SSO with Google Workspace.
4. Click **Single Sign-On** again. It closes. Notice animation is
intact.
2026-10-07 11:57:03 -07:00
Shane AdamsandClaude Sonnet 5.5 6c150d26d9 docs(mgmt-api): clarify rate limits are per endpoint (#51379)
## Problem

The Management API rate limits docs said limits are per user and per
project or organization. They didn't say that each endpoint also has its
own limit, or how requests without a project or organization, and tokens
versus OAuth apps, are counted. The partial also had a typo, a repeated
example, and a tracking-key sentence that listed endpoint as a scope.

## Solution

Edits to `apps/docs/content/_partials/api_rate_limits.mdx`, in one
commit per change type:

1. `docs(mgmt-api): clarify rate limits are per endpoint`: the content
change. It adds the per-endpoint model, the user scope, the `POST
/v1/projects` scoping, and who the limit applies to.
2. **Style**: fixes the `enpoint` typo and the table alignment, removes
the repeated Project A/B paragraph and the `database/context` note that
restated its table rows, unwraps hard-wrapped lines, and aligns bold
labels and wording with the style guide.
3. **Structure**: moves "Rate limit response headers" after "Who the
limit applies to", so the concept sections come before the reference
sections. No headings were renamed, and no inbound anchors to them exist
in `apps` or `packages`.
4. **Technical**: the tracking-key sentence now reads "scope (project or
organization) and the endpoint". It previously listed endpoint as a
scope, which contradicted the scope list.

Not verified against the rate limiter, which isn't in this repo. A
reviewer with access should confirm:

- Requests without a project or organization count against the user.
- `POST /v1/projects` is organization-scoped via `organization_slug`.
- Personal access tokens share the user's limit, and OAuth apps share
the app's limit.
- The tracking-key wording in commit 4 is inferred from the page, not
from code.

## Preview links

| Site | Live | Preview | Search for |
| ---- |
-------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ------------------------------ |
| Docs |
[/docs/reference/api/introduction](https://supabase.com/docs/reference/api/introduction)
|
[/docs/reference/api/introduction](https://docs-git-docs-mgmt-api-rate-limits-per-endpoint-supabase.vercel.app/docs/reference/api/introduction)
| `Who the limit applies to` |

## Review instructions

1. Open the live and preview links side by side and scroll to "Rate
limits".
2. Check that the section order is: Standard rate limit, Rate limit
scope, How rate limits are tracked, Who the limit applies to, Rate limit
response headers, Endpoint exceptions, Best practices.
3. Check that the scope table and the endpoint exceptions tables render
correctly.
4. Review commit by commit, since each commit is one change type.
5. If you can read the rate limiter code, check the unverified claims
listed above.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 10:22:44 -06:00
David McNeil 8083226229 chore: add David McNeil to humans.txt (#51376)
Add David McNeil to humans.txt
2026-10-07 09:59:53 +02:00
Alexis Aguilar 7d47e3bf80 chore(docs): add Alexis Aguilar to humans.txt (#51369)
## Problem

Alexis Aguilar is a new hire and isn't in the `humans.txt` file yet.

## Solution

Adds Alexis Aguilar to the `apps/docs/public/humans.txt` file :)

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Checklist

Check all before review:

- [X] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
2026-10-07 09:59:48 +02:00
Connor Davis 32b16b7397 Add Connor Davis to humans.txt (#51360) 2026-10-06 15:21:43 -04:00
Lovro Mažgon 1a992761c1 chore(docs): Add Lovro Mažgon to humans.txt (#51354)
Add myself to humans.txt
2026-10-06 18:44:08 +02:00
John Jarvis 9a4ab14be2 chore: add John Jarvis to humans.txt (#51182)
## Problem

John Jarvis is missing from `humans.txt`.

## Solution

Add John Jarvis to `apps/docs/public/humans.txt`.

## Review instructions

Confirm the name is spelled correctly in the team list.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
  * Added John Jarvis to the team list.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-06 09:34:55 -07:00
Pamela Chia 240e954390 fix(www): fix partners links and 404 redirects (#51294) 2026-10-06 07:14:38 -07:00
K-Dog (Kevin) 1da25a7e72 chore(hipaa): self-serve PITR (#51342)
There is no reason why HIPAA customers cannot self-serve PITR add-on.
Instead of telling customers to reach out to support, let them
self-serve it.

- Docs also wrongfully stated the need for Small compute add-on.
- Ability to self-serve PITR
- Only 28-day PITR available
- Price is now also correct and displays $0 (pending backend change)

When enabled (marked as HIPAA compliant):
<img width="1128" height="216" alt="Screenshot 2026-10-06 at 1 53 01 PM"
src="https://github.com/user-attachments/assets/d83982e7-c71b-4236-ab29-67f85fc40f39"
/>

When not enabled (marked as HIPAA compliant):
<img width="1132" height="255" alt="Screenshot 2026-10-06 at 1 53 55 PM"
src="https://github.com/user-attachments/assets/f182813b-2163-4905-8cdf-9c69983ec1b9"
/>

<img width="772" height="542" alt="Screenshot 2026-10-06 at 1 56 08 PM"
src="https://github.com/user-attachments/assets/2cd59439-74b9-49d6-90d1-47c8d1722c9f"
/>
2026-10-06 15:11:55 +02:00
6ecf98671a docs(platform): add Platform Webhooks guide and event catalog (#51098)
## Problem

Platform Webhooks (org- and project-level event notifications over the
Management API) has no public documentation. CTRL-1017 asks for a docs
page plus a specification of the available event types, so partners can
integrate without reading the OpenAPI spec or asking engineering
directly.

Closes CTRL-1017.

## Solution

**New guide covering the Management API path, plus an event catalog.**

Adds `apps/docs/content/guides/platform/webhooks.mdx`: concepts and
scoping, creating an endpoint, Standard Webhooks signature verification
and secret rotation, test events, and delivery/retry/ordering behavior.

Adds `apps/docs/content/guides/platform/webhooks/events.mdx`: the events
reference.

- Full payload documentation for the 8 project-lifecycle event types,
and a name-and-trigger table for the 12 branch, member, and billing
types whose payload fields aren't documented.
- Documents `*` for subscribing to every event.
- Access framing states the criterion: available to organizations on an
early access allowlist, with the `403` / `access_disabled` response for
everyone else.
- Nav entry under Platform > Project & Account Management, after
Personal Access Tokens, gated by `fullPlatformEnabled`.

**The page deliberately omits the dashboard UI.** See the first row of
the table below.

## Needs review before merge

| Item | Detail |
|
--------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| **The Studio webhooks UI is not wired to the API, so this page
documents the Management API only** | `PlatformWebhooksPage.tsx:29`
imports `PLATFORM_WEBHOOKS_MOCK_DATA`; `PlatformWebhooks.store.ts` has
no async or network code and hardcodes `createdBy:
'mock-user@supabase.io'`; nothing in `apps/studio` references
`webhooks/endpoints` or `webhooks/deliveries`, even though
`api-types/types/api-v2.d.ts` carries those paths 24 times. #43276
(DEPR-340) described it as "UI-only (with mock data)", and the
`DEPR-340-backend-integration-tracker.md` it pointed to is no longer in
the tree. A dashboard section can be added once the UI calls the API. |
| Possible reference slug collision | Project- and org-scoped operations
share identical `summary` values (both "Create endpoint", both "List
endpoints"). The page links to the reference introduction and names the
**Project webhooks** / **Organization webhooks** tags rather than
deep-linking a generated page. |

## Preview links

**Verified:** the new page returns 200 on the preview; the same path
returns 404 on production, confirming net-new content; the nav entry
renders on the preview build.

### Proof: new page renders on the PR preview

[Open the new page on
preview](https://docs-git-nikrichers-ctrl-1017-set-up-public-doc-fa3960-supabase.vercel.app/docs/guides/platform/webhooks)

<img width="2295" height="8039" alt="Screenshot 2026-10-05 at 11-47-06
Platform Webhooks Supabase Docs"
src="https://github.com/user-attachments/assets/7b1440d3-207d-4828-8593-77140bdcd73f"
/>

<img width="2295" height="12000" alt="Screenshot 2026-10-05 at 11-48-49
Platform Webhook Events Supabase Docs"
src="https://github.com/user-attachments/assets/2808a88e-558e-4f73-a12a-01382cd3f6a2"
/>


## Review instructions

1. Open the [PR
preview](https://docs-git-nikrichers-ctrl-1017-set-up-public-doc-fa3960-supabase.vercel.app/docs/guides/platform/webhooks)
and confirm the page renders as shown.
2. Confirm **Platform Webhooks** appears under **Platform > Project &
Account Management** in the sidebar, after **Personal Access Tokens**.
3. Confirm the five internal-guide values in the second row of the
needs-review table.
4. Decide with the Control Plane team whether the Studio UI ships wired
to the API, which determines when a dashboard section gets added: Studio
UI is slated for Q4, so it will not be shipped together.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Added a Platform Webhooks guide covering endpoint setup, event
delivery, signature verification, test events, retries, retention,
idempotency, ordering, and listener best practices.
* Documented project and organization event types, payload schemas,
event scopes, and versioning, plus access restrictions for organizations
outside the allowlist.
* **Navigation**
* Added Platform Webhooks links, including Overview and Events, to the
platform navigation when the full platform is enabled.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Nik Richers <nik@validmind.ai>
Co-authored-by: Paweł Gulbinowicz <pawel.gulbinowicz@supabase.io>
Co-authored-by: Paweł Gulbinowicz <zamotany@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-10-06 14:30:16 +02:00
Illia Basalaiev 12afe39999 Docs/troubleshoot pg net privileges (#51275)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

New troubleshooting guides related to the current pg_net and pg_dump
extensions' behaviour.

## What is the current behavior?

## What is the new behavior?

Preview:
- [Revoking access to pg_net objects has no effect: no privileges could
be
revoked](https://docs-git-docs-troubleshoot-pg-net-privileges-supabase.vercel.app/docs/guides/troubleshooting/revoking-access-to-pg_net-objects-has-no-effect-0bbc16)
- [Database roles can read request headers queued by
pg_net](https://docs-git-docs-troubleshoot-pg-net-privileges-supabase.vercel.app/docs/guides/troubleshooting/database-roles-can-read-request-headers-queued-by-pg_net-ad6357)
- [pg_dump fails with 'query would be affected by row-level security
policy'](https://docs-git-docs-troubleshoot-pg-net-privileges-supabase.vercel.app/docs/guides/troubleshooting/pg_dump-fails-with-query-would-be-affected-by-row-level-security-policy-1d5783)
- [Custom role inherits privileges that were not explicitly
granted](https://docs-git-docs-troubleshoot-pg-net-privileges-supabase.vercel.app/docs/guides/troubleshooting/custom-role-inherits-privileges-that-were-not-explicitly-granted-ddaa1c)
2026-10-06 11:03:42 +02:00
Pamela Chia 20d752517f feat(docs): record search v2 rollout exposure (#51300) 2026-10-06 01:35:45 -07:00