mirror of
https://github.com/supabase/supabase.git
synced 2026-10-08 02:45:07 +03:00
poc/explorer-prototype
19672
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ae9615fa54 | recently updated | ||
|
|
d6afe2af1c | bg | ||
|
|
a267c84f46 | connections | ||
|
|
14a6d22f08 | dismiss template | ||
|
|
df6d7c78a0 | add templates | ||
|
|
a1c69e9bfb | refine | ||
|
|
302df2b2f7 | more refine | ||
|
|
ffe35b95d3 | home state | ||
|
|
2a008973c0 | prototype refine | ||
|
|
0eeef6982f | explorer prototype | ||
|
|
1123a74813 |
spike(docs): chunk Management API reference into one page per endpoint (#48547)
## I have read the CONTRIBUTING.md file. YES ## What kind of change does this PR introduce? This is an experimental spike that splits the Management API reference into one statically-generated page per endpoint, instead of the single monolithic page that currently renders all ~172 operations at `/reference/api`. Relates to DOCS-1268. ## What is the current behavior? - Linear item: Spike: chunk Management API reference into one page per endpoint - `/reference/api/introduction` (and every other API deep link) renders one ~35MB page containing all 172 endpoints, per `known-issues.md`'s "Reference page length" note — a known UX/LLM issue with no per-endpoint pages today - All API reference "navigation" is actually `preventDefault` + `pushState` + `scrollIntoView` within that one page (see `Reference.navigation.client.tsx`) ## What is the new behavior? - New `generateStaticParamsForApi()` in `Reference.utils.ts` emits one static param per API operation slug (~172 pages), independent of the SDK static-params generator - Fixed the permanent `/docs/reference/api` -> `/docs/reference/api/start` redirect in `apps/www/lib/redirects.js` (`start` was never a real content slug — it only worked because the old routing collapsed every sub-path to the monolith); now points straight at `introduction`, and `/start` itself still redirects there so old links/bookmarks don't 404 - `middleware.ts` only normalizes the bare `/reference/api` request now; `/reference/api/<slug>` falls through to the real per-operation page (or 404s if the slug is unknown) - `Reference.apiPage.tsx` branches on the resolved slug: no slug now redirects to `/reference/api/introduction` (the monolith-rendering branch is removed entirely — `ClientLibIntroduction`/`RefSections` are no longer used in this file), a slug renders just that one section via the existing `SectionSwitch`/`ApiEndpointSection`/`MarkdownSection` — no duplicated rendering logic - `Reference.navigation.tsx` / `Reference.navigation.client.tsx` gained an opt-in `realNavigation` prop; only the API reference's two `<ReferenceNavigation>` call sites set it, so SDK/CLI/self-hosting sidebar behavior is byte-for-byte unchanged - Per-operation page metadata (title/description/canonical URL) ### Explicitly out of scope for this spike - `internals/generate-reference-markdown.ts` (the LLM `api.md` export) — still a single file, not split per endpoint - Any change to SDK, CLI, or self-hosting reference rendering or navigation - A hypothetical 2+-segment API path (`/reference/api/foo/bar`) previously collapsed silently to the monolith; it now 404s. Not reachable by any existing internal link today. ## Additional context - Worktree: `~/GitHub/supabase/supabase-worktrees/nrichers/nikrichers/docs-1268-spike-chunk-management-api-reference-into-one-page-per` - Verification: | Check | Result | | --- | --- | | `pnpm typecheck` (apps/docs) | ✅ pass | | `GET /reference/api` (bare) | ✅ 307, redirects to `/reference/api/introduction` (monolith removed) | | `GET /reference/api/introduction` | ✅ 200, new chunked page | | `GET /reference/api/v1-get-performance-advisors` | ✅ 200, new chunked page — confirmed via content size (~1.5MB vs ~35.5MB monolith) and heading-count diffing that only one operation renders | | `GET /reference/api/not-a-real-slug` | ✅ 404, confirms new static params + `dynamicParams=false` work as designed | | `GET /reference/cli`, `GET /reference/self-hosting-storage` | ✅ 200, unaffected — same shared nav components, no `realNavigation` passed | | `GET /reference/javascript`, `GET /reference/python` | ⚠️ 404 locally — not a regression; these need `codegen:references:new` output + `dev:secrets:pull` (internal env vars) that weren't run in this sandbox, unrelated to any file this PR touches | ### Before & After **Example (left: prod; right: PR)** <img width="2664" height="1667" alt="image" src="https://github.com/user-attachments/assets/c00e59ab-208b-44fb-be52-80270404fcc5" /> Preview is deployed: https://vercel.com/supabase/docs/43RzVCY6MkAbUuaDxdf9dPz7qsBu | Before (production) | After (PR preview) | | --- | --- | | - [Bare `/reference/api` (redirects to Introduction)](https://supabase.com/docs/reference/api)<br>- [Introduction](https://supabase.com/docs/reference/api/introduction)<br>- [Get performance advisors](https://supabase.com/docs/reference/api/v1-get-performance-advisors)<br>- [Get security advisors](https://supabase.com/docs/reference/api/v1-get-security-advisors)<br>- [Create log drain](https://supabase.com/docs/reference/api/v2-create-log-drain)<br>- [Delete log drain](https://supabase.com/docs/reference/api/v2-delete-log-drain)<br>- [Get project function combined stats](https://supabase.com/docs/reference/api/v1-get-project-function-combined-stats)<br>- [Get project logs](https://supabase.com/docs/reference/api/v1-get-project-logs)<br>- [Get project logs all](https://supabase.com/docs/reference/api/v1-get-project-logs-all)<br>- [Get project usage api count](https://supabase.com/docs/reference/api/v1-get-project-usage-api-count)<br>- [Get project usage request count](https://supabase.com/docs/reference/api/v1-get-project-usage-request-count)<br>- [List log drains](https://supabase.com/docs/reference/api/v2-list-log-drains)<br>- [Update log drain](https://supabase.com/docs/reference/api/v2-update-log-drain)<br>- [Create a sso provider](https://supabase.com/docs/reference/api/v1-create-a-sso-provider)<br>- [Create legacy signing key](https://supabase.com/docs/reference/api/v1-create-legacy-signing-key)<br>- [Create project signing key](https://supabase.com/docs/reference/api/v1-create-project-signing-key)<br>- [Create project tpa integration](https://supabase.com/docs/reference/api/v1-create-project-tpa-integration)<br>- [Delete a sso provider](https://supabase.com/docs/reference/api/v1-delete-a-sso-provider)<br>- [Delete project tpa integration](https://supabase.com/docs/reference/api/v1-delete-project-tpa-integration)<br>- [Get a sso provider](https://supabase.com/docs/reference/api/v1-get-a-sso-provider)<br>- [Get auth service config](https://supabase.com/docs/reference/api/v1-get-auth-service-config)<br>- [Get legacy signing key](https://supabase.com/docs/reference/api/v1-get-legacy-signing-key)<br>- [Get project signing key](https://supabase.com/docs/reference/api/v1-get-project-signing-key)<br>- [Get project signing keys](https://supabase.com/docs/reference/api/v1-get-project-signing-keys)<br>- [Get project tpa integration](https://supabase.com/docs/reference/api/v1-get-project-tpa-integration)<br>- [List all sso provider](https://supabase.com/docs/reference/api/v1-list-all-sso-provider)<br>- [List project tpa integrations](https://supabase.com/docs/reference/api/v1-list-project-tpa-integrations)<br>- [Remove project signing key](https://supabase.com/docs/reference/api/v1-remove-project-signing-key)<br>- [Update a sso provider](https://supabase.com/docs/reference/api/v1-update-a-sso-provider)<br>- [Update auth service config](https://supabase.com/docs/reference/api/v1-update-auth-service-config)<br>- [Update project signing key](https://supabase.com/docs/reference/api/v1-update-project-signing-key)<br>- [Apply project addon](https://supabase.com/docs/reference/api/v1-apply-project-addon)<br>- [List project addons](https://supabase.com/docs/reference/api/v1-list-project-addons)<br>- [Remove project addon](https://supabase.com/docs/reference/api/v1-remove-project-addon)<br>- [Accept invite external jit access](https://supabase.com/docs/reference/api/v1-accept-invite-external-jit-access)<br>- [Apply a migration](https://supabase.com/docs/reference/api/v1-apply-a-migration)<br>- [Authorize jit access](https://supabase.com/docs/reference/api/v1-authorize-jit-access)<br>- [Create login role](https://supabase.com/docs/reference/api/v1-create-login-role)<br>- [Delete invite external jit access](https://supabase.com/docs/reference/api/v1-delete-invite-external-jit-access)<br>- [Delete jit access](https://supabase.com/docs/reference/api/v1-delete-jit-access)<br>- [Delete login roles](https://supabase.com/docs/reference/api/v1-delete-login-roles)<br>- [Disable readonly mode temporarily](https://supabase.com/docs/reference/api/v1-disable-readonly-mode-temporarily)<br>- [Enable database webhook](https://supabase.com/docs/reference/api/v1-enable-database-webhook)<br>- [Generate typescript types](https://supabase.com/docs/reference/api/v1-generate-typescript-types)<br>- [Get a migration](https://supabase.com/docs/reference/api/v1-get-a-migration)<br>- [Get a snippet](https://supabase.com/docs/reference/api/v1-get-a-snippet)<br>- [Get backup schedule](https://supabase.com/docs/reference/api/v1-get-backup-schedule)<br>- [Get database metadata](https://supabase.com/docs/reference/api/v1-get-database-metadata)<br>- [Get database openapi](https://supabase.com/docs/reference/api/v1-get-database-openapi)<br>- [Get jit access](https://supabase.com/docs/reference/api/v1-get-jit-access)<br>- [Get jit access config](https://supabase.com/docs/reference/api/v1-get-jit-access-config)<br>- [Get pooler config](https://supabase.com/docs/reference/api/v1-get-pooler-config)<br>- [Get postgres config](https://supabase.com/docs/reference/api/v1-get-postgres-config)<br>- [Get project pgbouncer config](https://supabase.com/docs/reference/api/v1-get-project-pgbouncer-config)<br>- [Get readonly mode status](https://supabase.com/docs/reference/api/v1-get-readonly-mode-status)<br>- [Get ssl enforcement config](https://supabase.com/docs/reference/api/v1-get-ssl-enforcement-config)<br>- [Invite external jit access](https://supabase.com/docs/reference/api/v1-invite-external-jit-access)<br>- [List all backups](https://supabase.com/docs/reference/api/v1-list-all-backups)<br>- [List all snippets](https://supabase.com/docs/reference/api/v1-list-all-snippets)<br>- [List jit access](https://supabase.com/docs/reference/api/v1-list-jit-access)<br>- [List migration history](https://supabase.com/docs/reference/api/v1-list-migration-history)<br>- [Patch a migration](https://supabase.com/docs/reference/api/v1-patch-a-migration)<br>- [Read only query](https://supabase.com/docs/reference/api/v1-read-only-query)<br>- [Remove a read replica](https://supabase.com/docs/reference/api/v1-remove-a-read-replica)<br>- [Restore pitr backup](https://supabase.com/docs/reference/api/v1-restore-pitr-backup)<br>- [Rollback migrations](https://supabase.com/docs/reference/api/v1-rollback-migrations)<br>- [Run a query](https://supabase.com/docs/reference/api/v1-run-a-query)<br>- [Setup a read replica](https://supabase.com/docs/reference/api/v1-setup-a-read-replica)<br>- [Update backup schedule](https://supabase.com/docs/reference/api/v1-update-backup-schedule)<br>- [Update database password](https://supabase.com/docs/reference/api/v1-update-database-password)<br>- [Update jit access](https://supabase.com/docs/reference/api/v1-update-jit-access)<br>- [Update jit access config](https://supabase.com/docs/reference/api/v1-update-jit-access-config)<br>- [Update pooler config](https://supabase.com/docs/reference/api/v1-update-pooler-config)<br>- [Update postgres config](https://supabase.com/docs/reference/api/v1-update-postgres-config)<br>- [Update ssl enforcement config](https://supabase.com/docs/reference/api/v1-update-ssl-enforcement-config)<br>- [Upsert a migration](https://supabase.com/docs/reference/api/v1-upsert-a-migration)<br>- [Activate custom hostname](https://supabase.com/docs/reference/api/v1-activate-custom-hostname)<br>- [Activate vanity subdomain config](https://supabase.com/docs/reference/api/v1-activate-vanity-subdomain-config)<br>- [Check vanity subdomain availability](https://supabase.com/docs/reference/api/v1-check-vanity-subdomain-availability)<br>- [Deactivate vanity subdomain config](https://supabase.com/docs/reference/api/v1-deactivate-vanity-subdomain-config)<br>- [Get hostname config](https://supabase.com/docs/reference/api/v1-get-hostname-config)<br>- [Get vanity subdomain config](https://supabase.com/docs/reference/api/v1-get-vanity-subdomain-config)<br>- [Update hostname config](https://supabase.com/docs/reference/api/v1-update-hostname-config)<br>- [Verify dns config](https://supabase.com/docs/reference/api/v1-verify-dns-config)<br>- [Bulk update functions](https://supabase.com/docs/reference/api/v1-bulk-update-functions)<br>- [Create a function](https://supabase.com/docs/reference/api/v1-create-a-function)<br>- [Delete a function](https://supabase.com/docs/reference/api/v1-delete-a-function)<br>- [Deploy a function](https://supabase.com/docs/reference/api/v1-deploy-a-function)<br>- [Get a function](https://supabase.com/docs/reference/api/v1-get-a-function)<br>- [Get a function body](https://supabase.com/docs/reference/api/v1-get-a-function-body)<br>- [List all functions](https://supabase.com/docs/reference/api/v1-list-all-functions)<br>- [Update a function](https://supabase.com/docs/reference/api/v1-update-a-function)<br>- [Count action runs](https://supabase.com/docs/reference/api/v1-count-action-runs)<br>- [Create a branch](https://supabase.com/docs/reference/api/v1-create-a-branch)<br>- [Delete a branch](https://supabase.com/docs/reference/api/v1-delete-a-branch)<br>- [Diff a branch](https://supabase.com/docs/reference/api/v1-diff-a-branch)<br>- [Disable preview branching](https://supabase.com/docs/reference/api/v1-disable-preview-branching)<br>- [Get a branch](https://supabase.com/docs/reference/api/v1-get-a-branch)<br>- [Get a branch config](https://supabase.com/docs/reference/api/v1-get-a-branch-config)<br>- [Get action run](https://supabase.com/docs/reference/api/v1-get-action-run)<br>- [Get action run logs](https://supabase.com/docs/reference/api/v1-get-action-run-logs)<br>- [List action runs](https://supabase.com/docs/reference/api/v1-list-action-runs)<br>- [List all branches](https://supabase.com/docs/reference/api/v1-list-all-branches)<br>- [Merge a branch](https://supabase.com/docs/reference/api/v1-merge-a-branch)<br>- [Push a branch](https://supabase.com/docs/reference/api/v1-push-a-branch)<br>- [Reset a branch](https://supabase.com/docs/reference/api/v1-reset-a-branch)<br>- [Restore a branch](https://supabase.com/docs/reference/api/v1-restore-a-branch)<br>- [Update a branch config](https://supabase.com/docs/reference/api/v1-update-a-branch-config)<br>- [Update action run status](https://supabase.com/docs/reference/api/v1-update-action-run-status)<br>- [Authorize user](https://supabase.com/docs/reference/api/v1-authorize-user)<br>- [Exchange oauth token](https://supabase.com/docs/reference/api/v1-exchange-oauth-token)<br>- [Oauth authorize project claim](https://supabase.com/docs/reference/api/v1-oauth-authorize-project-claim)<br>- [Revoke token](https://supabase.com/docs/reference/api/v1-revoke-token)<br>- [Assign organization member role](https://supabase.com/docs/reference/api/v2-assign-organization-member-role)<br>- [Create an organization](https://supabase.com/docs/reference/api/v1-create-an-organization)<br>- [Get an organization](https://supabase.com/docs/reference/api/v1-get-an-organization)<br>- [Get organization entitlements](https://supabase.com/docs/reference/api/v1-get-organization-entitlements)<br>- [List all organizations](https://supabase.com/docs/reference/api/v1-list-all-organizations)<br>- [List organization members](https://supabase.com/docs/reference/api/v1-list-organization-members)<br>- [List organization members](https://supabase.com/docs/reference/api/v2-list-organization-members)<br>- [List organization roles](https://supabase.com/docs/reference/api/v2-list-organization-roles)<br>- [Create organization invitations](https://supabase.com/docs/reference/api/v2-create-organization-invitations)<br>- [Get profile](https://supabase.com/docs/reference/api/v1-get-profile)<br>- [Cancel a project restoration](https://supabase.com/docs/reference/api/v1-cancel-a-project-restoration)<br>- [Create a project](https://supabase.com/docs/reference/api/v1-create-a-project)<br>- [Create private link association](https://supabase.com/docs/reference/api/v2-create-private-link-association)<br>- [Delete a project](https://supabase.com/docs/reference/api/v1-delete-a-project)<br>- [Delete network bans](https://supabase.com/docs/reference/api/v1-delete-network-bans)<br>- [Delete private link association](https://supabase.com/docs/reference/api/v2-delete-private-link-association)<br>- [Get all projects for organization](https://supabase.com/docs/reference/api/v1-get-all-projects-for-organization)<br>- [Get available regions](https://supabase.com/docs/reference/api/v1-get-available-regions)<br>- [Get database disk](https://supabase.com/docs/reference/api/v1-get-database-disk)<br>- [Get disk utilization](https://supabase.com/docs/reference/api/v1-get-disk-utilization)<br>- [Get network restrictions](https://supabase.com/docs/reference/api/v1-get-network-restrictions)<br>- [Get postgres upgrade eligibility](https://supabase.com/docs/reference/api/v1-get-postgres-upgrade-eligibility)<br>- [Get postgres upgrade status](https://supabase.com/docs/reference/api/v1-get-postgres-upgrade-status)<br>- [Get project](https://supabase.com/docs/reference/api/v1-get-project)<br>- [Get project disk autoscale config](https://supabase.com/docs/reference/api/v1-get-project-disk-autoscale-config)<br>- [Get services health](https://supabase.com/docs/reference/api/v1-get-services-health)<br>- [List all network bans](https://supabase.com/docs/reference/api/v1-list-all-network-bans)<br>- [List all network bans enriched](https://supabase.com/docs/reference/api/v1-list-all-network-bans-enriched)<br>- [List all projects](https://supabase.com/docs/reference/api/v1-list-all-projects)<br>- [List available restore versions](https://supabase.com/docs/reference/api/v1-list-available-restore-versions)<br>- [List private link associations](https://supabase.com/docs/reference/api/v2-list-private-link-associations)<br>- [Modify database disk](https://supabase.com/docs/reference/api/v1-modify-database-disk)<br>- [Patch network restrictions](https://supabase.com/docs/reference/api/v1-patch-network-restrictions)<br>- [Pause a project](https://supabase.com/docs/reference/api/v1-pause-a-project)<br>- [Preview a project transfer](https://supabase.com/docs/reference/api/v2-preview-a-project-transfer)<br>- [Restart a project](https://supabase.com/docs/reference/api/v1-restart-a-project)<br>- [Restore a project](https://supabase.com/docs/reference/api/v1-restore-a-project)<br>- [Transfer a project](https://supabase.com/docs/reference/api/v2-transfer-a-project)<br>- [Update a project](https://supabase.com/docs/reference/api/v1-update-a-project)<br>- [Update network restrictions](https://supabase.com/docs/reference/api/v1-update-network-restrictions)<br>- [Upgrade postgres version](https://supabase.com/docs/reference/api/v1-upgrade-postgres-version)<br>- [Get realtime config](https://supabase.com/docs/reference/api/v1-get-realtime-config)<br>- [Shutdown realtime](https://supabase.com/docs/reference/api/v1-shutdown-realtime)<br>- [Update realtime config](https://supabase.com/docs/reference/api/v1-update-realtime-config)<br>- [Get postgrest service config](https://supabase.com/docs/reference/api/v1-get-postgrest-service-config)<br>- [Update postgrest service config](https://supabase.com/docs/reference/api/v1-update-postgrest-service-config)<br>- [Bulk create secrets](https://supabase.com/docs/reference/api/v1-bulk-create-secrets)<br>- [Bulk delete secrets](https://supabase.com/docs/reference/api/v1-bulk-delete-secrets)<br>- [Create project api key](https://supabase.com/docs/reference/api/v1-create-project-api-key)<br>- [Delete project api key](https://supabase.com/docs/reference/api/v1-delete-project-api-key)<br>- [Get pgsodium config](https://supabase.com/docs/reference/api/v1-get-pgsodium-config)<br>- [Get project api key](https://supabase.com/docs/reference/api/v1-get-project-api-key)<br>- [Get project api keys](https://supabase.com/docs/reference/api/v1-get-project-api-keys)<br>- [Get project legacy api keys](https://supabase.com/docs/reference/api/v1-get-project-legacy-api-keys)<br>- [List all secrets](https://supabase.com/docs/reference/api/v1-list-all-secrets)<br>- [Update pgsodium config](https://supabase.com/docs/reference/api/v1-update-pgsodium-config)<br>- [Update project api key](https://supabase.com/docs/reference/api/v1-update-project-api-key)<br>- [Update project legacy api keys](https://supabase.com/docs/reference/api/v1-update-project-legacy-api-keys)<br>- [Get storage config](https://supabase.com/docs/reference/api/v1-get-storage-config)<br>- [List all buckets](https://supabase.com/docs/reference/api/v1-list-all-buckets)<br>- [Update storage config](https://supabase.com/docs/reference/api/v1-update-storage-config) | - [Bare `/reference/api` (redirects to Introduction)](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api)<br>- [Introduction](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/introduction)<br>- [Get performance advisors](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-performance-advisors)<br>- [Get security advisors](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-security-advisors)<br>- [Create log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-log-drain)<br>- [Delete log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-delete-log-drain)<br>- [Get project function combined stats](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-function-combined-stats)<br>- [Get project logs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-logs)<br>- [Get project logs all](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-logs-all)<br>- [Get project usage api count](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-usage-api-count)<br>- [Get project usage request count](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-usage-request-count)<br>- [List log drains](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-log-drains)<br>- [Update log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-update-log-drain)<br>- [Create a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-sso-provider)<br>- [Create legacy signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-legacy-signing-key)<br>- [Create project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-signing-key)<br>- [Create project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-tpa-integration)<br>- [Delete a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-sso-provider)<br>- [Delete project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-project-tpa-integration)<br>- [Get a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-sso-provider)<br>- [Get auth service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-auth-service-config)<br>- [Get legacy signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-legacy-signing-key)<br>- [Get project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-signing-key)<br>- [Get project signing keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-signing-keys)<br>- [Get project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-tpa-integration)<br>- [List all sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-sso-provider)<br>- [List project tpa integrations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-project-tpa-integrations)<br>- [Remove project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-project-signing-key)<br>- [Update a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-sso-provider)<br>- [Update auth service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-auth-service-config)<br>- [Update project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-signing-key)<br>- [Apply project addon](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-apply-project-addon)<br>- [List project addons](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-project-addons)<br>- [Remove project addon](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-project-addon)<br>- [Accept invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-accept-invite-external-jit-access)<br>- [Apply a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-apply-a-migration)<br>- [Authorize jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-authorize-jit-access)<br>- [Create login role](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-login-role)<br>- [Delete invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-invite-external-jit-access)<br>- [Delete jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-jit-access)<br>- [Delete login roles](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-login-roles)<br>- [Disable readonly mode temporarily](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-disable-readonly-mode-temporarily)<br>- [Enable database webhook](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-enable-database-webhook)<br>- [Generate typescript types](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-generate-typescript-types)<br>- [Get a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-migration)<br>- [Get a snippet](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-snippet)<br>- [Get backup schedule](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-backup-schedule)<br>- [Get database metadata](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-metadata)<br>- [Get database openapi](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-openapi)<br>- [Get jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-jit-access)<br>- [Get jit access config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-jit-access-config)<br>- [Get pooler config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-pooler-config)<br>- [Get postgres config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-config)<br>- [Get project pgbouncer config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-pgbouncer-config)<br>- [Get readonly mode status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-readonly-mode-status)<br>- [Get ssl enforcement config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-ssl-enforcement-config)<br>- [Invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-invite-external-jit-access)<br>- [List all backups](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-backups)<br>- [List all snippets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-snippets)<br>- [List jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-jit-access)<br>- [List migration history](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-migration-history)<br>- [Patch a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-patch-a-migration)<br>- [Read only query](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-read-only-query)<br>- [Remove a read replica](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-a-read-replica)<br>- [Restore pitr backup](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-pitr-backup)<br>- [Rollback migrations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-rollback-migrations)<br>- [Run a query](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-run-a-query)<br>- [Setup a read replica](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-setup-a-read-replica)<br>- [Update backup schedule](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-backup-schedule)<br>- [Update database password](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-database-password)<br>- [Update jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-jit-access)<br>- [Update jit access config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-jit-access-config)<br>- [Update pooler config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-pooler-config)<br>- [Update postgres config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-postgres-config)<br>- [Update ssl enforcement config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-ssl-enforcement-config)<br>- [Upsert a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-upsert-a-migration)<br>- [Activate custom hostname](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-activate-custom-hostname)<br>- [Activate vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-activate-vanity-subdomain-config)<br>- [Check vanity subdomain availability](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-check-vanity-subdomain-availability)<br>- [Deactivate vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-deactivate-vanity-subdomain-config)<br>- [Get hostname config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-hostname-config)<br>- [Get vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-vanity-subdomain-config)<br>- [Update hostname config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-hostname-config)<br>- [Verify dns config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-verify-dns-config)<br>- [Bulk update functions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-update-functions)<br>- [Create a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-function)<br>- [Delete a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-function)<br>- [Deploy a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-deploy-a-function)<br>- [Get a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-function)<br>- [Get a function body](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-function-body)<br>- [List all functions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-functions)<br>- [Update a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-function)<br>- [Count action runs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-count-action-runs)<br>- [Create a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-branch)<br>- [Delete a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-branch)<br>- [Diff a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-diff-a-branch)<br>- [Disable preview branching](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-disable-preview-branching)<br>- [Get a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-branch)<br>- [Get a branch config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-branch-config)<br>- [Get action run](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-action-run)<br>- [Get action run logs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-action-run-logs)<br>- [List action runs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-action-runs)<br>- [List all branches](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-branches)<br>- [Merge a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-merge-a-branch)<br>- [Push a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-push-a-branch)<br>- [Reset a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-reset-a-branch)<br>- [Restore a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-a-branch)<br>- [Update a branch config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-branch-config)<br>- [Update action run status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-action-run-status)<br>- [Authorize user](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-authorize-user)<br>- [Exchange oauth token](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-exchange-oauth-token)<br>- [Oauth authorize project claim](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-oauth-authorize-project-claim)<br>- [Revoke token](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-revoke-token)<br>- [Assign organization member role](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-assign-organization-member-role)<br>- [Create an organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-an-organization)<br>- [Get an organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-an-organization)<br>- [Get organization entitlements](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-organization-entitlements)<br>- [List all organizations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-organizations)<br>- [List organization members](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-organization-members)<br>- [List organization members](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-organization-members)<br>- [List organization roles](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-organization-roles)<br>- [Create organization invitations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-organization-invitations)<br>- [Get profile](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-profile)<br>- [Cancel a project restoration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-cancel-a-project-restoration)<br>- [Create a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-project)<br>- [Create private link association](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-private-link-association)<br>- [Delete a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-project)<br>- [Delete network bans](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-network-bans)<br>- [Delete private link association](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-delete-private-link-association)<br>- [Get all projects for organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-all-projects-for-organization)<br>- [Get available regions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-available-regions)<br>- [Get database disk](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-disk)<br>- [Get disk utilization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-disk-utilization)<br>- [Get network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-network-restrictions)<br>- [Get postgres upgrade eligibility](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-upgrade-eligibility)<br>- [Get postgres upgrade status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-upgrade-status)<br>- [Get project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project)<br>- [Get project disk autoscale config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-disk-autoscale-config)<br>- [Get services health](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-services-health)<br>- [List all network bans](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-network-bans)<br>- [List all network bans enriched](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-network-bans-enriched)<br>- [List all projects](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-projects)<br>- [List available restore versions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-available-restore-versions)<br>- [List private link associations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-private-link-associations)<br>- [Modify database disk](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-modify-database-disk)<br>- [Patch network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-patch-network-restrictions)<br>- [Pause a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-pause-a-project)<br>- [Preview a project transfer](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-preview-a-project-transfer)<br>- [Restart a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restart-a-project)<br>- [Restore a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-a-project)<br>- [Transfer a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-transfer-a-project)<br>- [Update a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-project)<br>- [Update network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-network-restrictions)<br>- [Upgrade postgres version](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-upgrade-postgres-version)<br>- [Get realtime config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-realtime-config)<br>- [Shutdown realtime](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-shutdown-realtime)<br>- [Update realtime config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-realtime-config)<br>- [Get postgrest service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgrest-service-config)<br>- [Update postgrest service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-postgrest-service-config)<br>- [Bulk create secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-create-secrets)<br>- [Bulk delete secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-delete-secrets)<br>- [Create project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-api-key)<br>- [Delete project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-project-api-key)<br>- [Get pgsodium config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-pgsodium-config)<br>- [Get project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-api-key)<br>- [Get project api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-api-keys)<br>- [Get project legacy api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-legacy-api-keys)<br>- [List all secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-secrets)<br>- [Update pgsodium config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-pgsodium-config)<br>- [Update project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-api-key)<br>- [Update project legacy api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-legacy-api-keys)<br>- [Get storage config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-storage-config)<br>- [List all buckets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-buckets)<br>- [Update storage config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-storage-config) | 174 links per column: the bare `/reference/api` route plus all 173 API reference sections (Introduction + 172 operations). The bare-route link now redirects to Introduction on *both* sides (production already did via the `apps/www` fix earlier in this PR; the preview now matches, since the monolith-rendering branch is removed). For the other 173 links, production still resolves every one to today's same ~35MB monolith (all 172 endpoints on one page, regardless of which slug you clicked), while the preview serves each as its own individual per-endpoint page — click through any pair to compare page weight/content directly. ### Test plan - [ ] Open the PR preview and confirm `/reference/api/introduction` and a handful of `/reference/api/<operation-slug>` URLs render as individual pages (not the full monolith) - [ ] Confirm the API reference sidebar navigates between real pages (URL changes, page reloads) without console errors - [ ] Confirm `/reference/javascript/...`, `/reference/cli`, and `/reference/self-hosting-*` render exactly as they do on production (no regression) - [ ] Confirm `/reference/api` (bare) now redirects to `/reference/api/introduction` instead of rendering all 172 operations <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added individual pages for Management API operations with operation-specific titles, descriptions, metadata, and share previews. * API reference navigation now supports full page navigation between sections and operations. * **Bug Fixes** * Updated API reference routing to preserve direct links to operation pages. * Unknown API operations now return a not-found page. * **Documentation** * Updated Management API links and redirects to use the new API introduction page. * Bare API reference URLs now redirect to the introduction. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Nik Richers <nik@validmind.ai> |
||
|
|
b17a33fb26 |
fix: cleanup privatelink documentation (#48466)
Some light copy cleanup for privatelink documentation based on feedback. Fixes PRODSEC-232 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated PrivateLink guidance with revised architecture, supported ports, routing, and security group instructions. * Added labeled connectivity tests for direct PostgreSQL and PgBouncer connections. * Added connection-string examples for both connection methods. * Replaced public-connectivity instructions with optional network restriction steps and reorganized limitations guidance. * Refined PrivateLink availability wording across platform security documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
3c903b7dfa |
Add Elastic Tile to Supabase Metrics API page (#48564)
## 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? Feature ## What is the current behavior? Elastic is not added as a tile in metrics API page. ## What is the new behavior? Now Elastic is supporting Supabase metrcis ingestion, hence it should be listed in the Metrics page. ![Uploading Screenshot 2026-08-03 at 4.31.46 PM.png…]() <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added Elastic as a supported metrics integration in the documentation. - Added an Elastic integration card with community labeling and a link to Elastic’s documentation. - Added Elastic to the monitoring metrics navigation and Metrics API guide resources. - Added Elastic branding and iconography to the metrics integration listings for easier recognition. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io> |
||
|
|
405d789e27 |
docs(www): add launch video to Supabase Pipelines feature page (#48654)
## 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? - Sets `heroImage` on the `supabase-pipelines` entry in `apps/www/data/features.tsx` to the "Introducing Supabase Pipelines" YouTube embed ## What is the current behavior? `/features/supabase-pipelines` has an empty `heroImage`, so the hero renders the fallback icon block instead of media. ## What is the new behavior? - The feature page hero renders the launch video, using the same `youtube-nocookie.com/embed/<id>` format as the other 22 feature entries with video heroes ## Additional context N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Content Updates** * Updated the Supabase Pipelines feature presentation to display a YouTube video as its hero visual. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Ana <ana1337x@users.noreply.github.com> |
||
|
|
56946d8171 | docs: add workaround to avoid noisy logs when PostgREST is disabled (#48021) | ||
|
|
ae1c260a1f |
Add Rand Arete to humans.txt (#48658)
## 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? Just adding myself to humans.txt <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated the team information page to include Rand Arete as a member of the Supabase remote team. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
49ad6546d4 |
docs: add Deployment & Branching cross-link on Database overview (#48509)
## 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? Adds a cross-link from the Database overview's "Next steps" section to the Deployment & Branching guide, so readers who land on Database looking for Branching docs can find them without guessing at top-level nav. Closes DOCS-1263. ## What is the current behavior? - Linear item: [DOCS-1263](https://linear.app/supabase/issue/DOCS-1263/add-deployment-and-branching-cross-link-on-database-overview-next) - User feedback: someone looking for Branching docs expected them under Products → Database. The canonical docs live under Build → Deployment & Branching (`/guides/deployment`, with Branching at `/guides/deployment/branching`). That placement stays correct (it's a preview/deploy workflow, not a Database product guide) — the miss is that Database overview's "Next steps" grid has no link out to it. ## What is the new behavior? - Added a "Deployment & Branching" card to `databaseNextSteps` in `apps/docs/data/content-listings/database.data.ts`, linking to `/guides/deployment` (the Deployment & Branching hub, not a Branching-only link) - No nav changes, no URL redirects, no Features sidebar work ## Additional context - Worktree: `~/GitHub/supabase/supabase-worktrees/nrichers/docs-1263-add-deployment-branching-cross-link-on-database-overview` - Change is a single data-file addition (`databaseNextSteps` array), rendered on `/guides/database/overview` via `<ContentListings id="database-next-steps" />` - Verification: reviewed diff for correct schema shape (matches existing `ContentListingGroup` items, e.g. the existing cross-product `Backups` → `/guides/platform/backups` entry) ### Proof: Database overview "Next steps" now links out to Deployment & Branching **Verified:** docs preview deploy (pass) · both URLs return `200` · new card renders next to "Roles and permissions" and links to `/guides/deployment` ### Before & After | [Before (production)](https://supabase.com/docs/guides/database/overview) | [After (PR preview)](https://docs-git-nikrichers-docs-1263-add-deployment-br-fd2915-supabase.vercel.app/docs/guides/database/overview) | | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | |  |  | - **Before:** https://supabase.com/docs/guides/database/overview - **After:** https://docs-git-nikrichers-docs-1263-add-deployment-br-fd2915-supabase.vercel.app/docs/guides/database/overview ### Test plan - [x] Visit `/guides/database/overview` on the PR preview and confirm the "Next steps" grid shows a **Deployment & Branching** card - [x] Confirm the card links to `/guides/deployment` (not `/guides/deployment/branching`) - [x] Confirm no other Next steps cards, nav items, or redirects changed Co-authored-by: Nik Richers <nik@validmind.ai> |
||
|
|
d8491cc0cc |
Remove unvalidated pricing, improve direction to help users (#48534)
## 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 fix/update ## What is the current behavior? Shows pricing information that is not accurate/approved yet ## What is the new behavior? helpful docs, which indicate pricing may be relevant and the future and already directs users to help management tools ## Additional context NA <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated Logs pricing and quota guidance to clarify that details may change before billing enforcement begins. * Replaced preliminary pricing tables and billing examples with notices that finalized information will be published later. * Expanded usage optimization guidance for log ingestion and querying, including filtering, time ranges, polling, and database logging recommendations. * Directed readers to per-SKU pages for the latest pricing, quotas, billing, and optimization information. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
80866c6f22 | docs(self-hosted): add updating how-to (#48535) | ||
|
|
c8954e6054 |
docs(security): add GDPR, ISO 27001, and DDoS coverage to security guide (#48449)
## 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? This is a docs-only content update to the `/docs/guides/security` landing page and its neighboring guides. It adds a dedicated GDPR compliance guide, and surfaces ISO 27001 and DDoS protection coverage that Supabase already provides but wasn't listed anywhere in the docs security guide. Closes DOCS-354. ## What is the current behavior? - In `/docs/guides/security`, there is no mention of GDPR, ISO 27001 or DPA request potential, despite Supabase docs covering these partially in one place or another. - Confirmed by auditing `apps/docs/content/`: zero mentions of GDPR/data residency, zero DPA content or link to `/legal/dpa`, zero ISO 27001 mentions, and only incidental/wrong-audience mentions of DDoS protection (a pen-testing exclusion, a Storage CDN aside, a fail2ban troubleshooting article for banned users). - `regions.mdx` only frames region choice as a performance decision, with no data-residency/compliance angle. - This is a parallel docs-side counterpart to #48403 (marketing `/security` page content additions), which is adding the same GDPR/Data Residency/DPA/DDoS topics on `apps/www`. This PR does not modify `apps/www` — see that PR for the marketing-page changes. ## What is the new behavior? - New guide: `apps/docs/content/guides/security/gdpr-compliance.mdx` covering data residency (including the nuance that the "Europe" general region grouping includes non-EU jurisdictions UK and Switzerland) and the Data Processing Agreement (DPA), linked to `/legal/dpa`. - Added to the sidebar nav under Security → Compliance, alongside SOC 2 and HIPAA. - `apps/docs/content/guides/security.mdx`: added an ISO 27001 paragraph (dashboard certificate link, matching the existing SOC 2/HIPAA pattern) and a GDPR pointer paragraph to `## Compliance`; added a DDoS protection paragraph (Cloudflare CDN + fail2ban) to `## Platform configuration`. - `apps/docs/content/guides/platform/regions.mdx`: added a "Data residency" section clarifying that general region groupings may span non-matching jurisdictions, and specific regions should be used when strict jurisdictional residency is required. ## Additional context - Worktree: `~/GitHub/supabase/supabase-worktrees/nikrichers/docs-354-security-landing-page` - Note: Supabase's subprocessor list was considered for the GDPR guide but omitted — both candidate links (`/legal/customer-resources/subprocessor-list` and `/legal/privacy#subprocessors`) are not yet publishable/live. Follow up once Legal publishes that page. **Verification:** | Check | Result | | ------------------------------------ | ----------------------------------------------------------------------------------------------------- | | `pnpm lint:mdx` on changed/new files | Pass (0 errors, 0 warnings on touched files) | | `pnpm build:guides-markdown` | Fails on `master` too (unrelated missing `ai-skills.json` generated file) — not caused by this change | | Local render (`pnpm dev:docs`) | All three pages return 200; new copy, nav entry, and all links/anchors verified to resolve | ### Proof: Reviewers should believe: the security landing page and regions guide now list GDPR/ISO 27001/DDoS coverage that was previously missing, and the new GDPR guide renders correctly with working links, where before it 404'd. ### Before & After **`/docs/guides/security`** — ISO 27001, GDPR, and DDoS paragraphs now present: | [Before (production)](https://supabase.com/docs/guides/security) | [After (PR preview)](https://docs-git-nikrichers-docs-354-security-landing-page-supabase.vercel.app/docs/guides/security) | | ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | |  |  | **`/docs/guides/platform/regions`** — new "Data residency" section: | [Before (production)](https://supabase.com/docs/guides/platform/regions) | [After (PR preview)](https://docs-git-nikrichers-docs-354-security-landing-page-supabase.vercel.app/docs/guides/platform/regions) | | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | |  |  | **`/docs/guides/security/gdpr-compliance`** — net-new page, no production URL exists yet (404 before this PR): | Before (production) | [After (PR preview)](https://docs-git-nikrichers-docs-354-security-landing-page-supabase.vercel.app/docs/guides/security/gdpr-compliance) | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | |  | ### Test plan ```text - [ ] Visit /docs/guides/security — confirm ISO 27001, GDPR, and DDoS paragraphs render under the right headings - [ ] Visit /docs/guides/security/gdpr-compliance — confirm it renders and appears in the sidebar under Compliance (next to SOC 2, HIPAA) - [ ] Visit /docs/guides/platform/regions — confirm the new "Data residency" section renders before "General regions" - [ ] Confirm links resolve: /docs/guides/security/gdpr-compliance, /docs/guides/platform/regions#specific-regions, /legal/dpa, /dashboard/org/_/documents ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Documentation - Added a GDPR Compliance entry to the Compliance navigation. - Updated security documentation with ISO 27001 certification details, clearer GDPR guidance, and expanded protection information. - Clarified regional data residency guidance, including primary project data and GDPR considerations. - Made minor wording and formatting improvements to the GDPR compliance guide. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Nik Richers <nik@validmind.ai> |
||
|
|
a0cec24f49 |
Remove references to fly (#48648)
## Context As per PR title - should not have any visual nor functional change <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Changes** - Standardized infrastructure, region, and database configuration around AWS-based environments. - Removed Fly.io-specific region and provider options from project creation, instance sizing, and infrastructure settings. - Enabled disk validation, spend-cap eligibility, backup restoration, and extension setup consistently across supported projects. - Updated billing and region displays to use the applicable AWS configuration. - **Bug Fixes** - Corrected project-specific restrictions that could incorrectly hide configuration and billing controls. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
8e3e14f198 |
Joshen/fe 4064 add a toast callout for feature preview (#48645)
## Context Adds a banner toast for the database connections feature preview <img width="315" height="322" alt="image" src="https://github.com/user-attachments/assets/8caaab88-10a0-4a06-b678-25fc9c44dd81" /> ## Other changes As the observability page currently has a number of banner toasts (metrics API, unified logs, index advisor for query performance), am opting to REMOVE the metrics API's banner toast by virtue of how long its been around for. Mainly to prevent over stacking of banner toasts as it can be annoying. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a dismissible Database Connections banner with SQL examples and a link to its feature preview. * Banner dismissal and CTA interactions are now tracked. * Dismissed banners can reappear when reintroduced. * **Bug Fixes** * Banners are hidden after the feature is enabled or dismissed. * Improved banner handling to prevent duplicate active banners. * **Changes** * Replaced the Metrics API banner with the Database Connections banner. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
94bc3f8d07 |
docs(csharp): add C# snippets (#48537)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added C# examples across API, authentication, database, Realtime, and Storage guides. * Expanded authentication coverage for passwordless, phone, anonymous, identity linking, SSO, sign-out, and social login providers. * Added database examples for queries, functions, joins, JSON, arrays, search, PostGIS, and custom schemas. * Added Realtime examples for broadcasts, presence, subscriptions, and database changes. * Added Storage examples for buckets, uploads, downloads, transformations, CDN purging, and resumable transfers. * Included C# error-handling guidance and relevant reference links. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
5c5d7bcc63 |
docs: fix quickstart catalog gaps (#48618)
## 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. Getting Started page is the most visited page in the docs at the moment: https://supabase.com/docs/guides/getting-started. Looking at all 19 guides, they appear to have drifted apart because there was never a written standard for what a quickstart must contain. Additionally, we are missing some frameworks, languages, and ORMs quickstarts. Phase 1 (this PR) fixes broken numbering, duplicated steps, and dead-end pages. Later phases bring all 19 guides into line with a single "definition of done" contract (error handling in samples, env vars everywhere, consistent Connect-panel pattern). The end goal is that every quickstart, regardless of framework, gives the same complete, trustworthy path from zero to a working app. ## What is the new behavior? 1. SvelteKit and Hono cards added to the [homepage grid](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs) (FrameworkQuickstarts.tsx). Only added the most popular missing frameworks to the grid. 2. [Rails](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs/guides/getting-started/quickstarts/ruby-on-rails#2-install-agent-skills-optional): Add missing second step (Agent Skills), add next steps at the end (point 6) 3. [Laravel](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs/guides/getting-started/quickstarts/laravel#6-set-up-the-postgres-connection-details): Remove duplicated instruction to create project from step 6. 4. [Refine](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs/guides/getting-started/quickstarts/refine#5-update-supabaseclient-with-environment-variables): In step 5, create .env file (VITE_SUPABASE_URL, VITE_SUPABASE_PUBLISHABLE_KEY), and the client reads them via import.meta.env, matching the Vite-based refine-supabase preset. 5. [Hono](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs/guides/getting-started/quickstarts/hono#6-set-up-the-required-environment-variables) TODO resolved: In step 6, add the "Open Connect panel" Button with the generic api_settings.mdx partial call, identical to the Flask and Expo pattern. 6. Next steps added to the 9 guides missing it at the end of the guide, linking to the framework tutorial or Auth, UI components, data import, and Storage (Flutter, Kotlin, Laravel, Nuxt, RedwoodJS, Refine, Ruby on Rails, SolidJS, and Vue). 7. Remove 4 stale screenshots from RedwoodJS and Refine, along with their now-orphaned image assets under apps/docs/public/img/. The surrounding text already covers what they showed; they weren't Connect-panel screens, so the Button pattern didn't apply as a replacement. 8. Add [Supabase Agent Skills](https://docs-git-docs-fix-quickstart-catalog-gaps-supabase.vercel.app/docs/guides/getting-started/quickstarts/nextjs#4-install-agent-skills-optional) purpose and benefits for the user 9. Start all guides from creating Supabase project ## Additional context Add any other context or screenshots. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Documentation - Added SvelteKit and Hono quickstarts with icons and documentation links. - Expanded Agent Skills guidance across framework quickstarts, including current authentication, SSR, and migration patterns. - Improved project creation, Connect panel, API configuration, and credential setup instructions. - Added framework-specific “Next steps” resources for Auth, database imports, Storage, UI components, and libraries. - Clarified PostgreSQL SSL, password encoding, connection, and environment-variable requirements. - Replaced outdated screenshots with clearer setup guidance and relevant examples. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
9006e33f11 |
Add categories for feature previews (#48641)
## Context Given that our number of feature previews have been expanding, am opting to group them into categories for easier understanding of the context of each feature preview. Ideally we're able to tag all feature previews into categories (or add more categories), but leaving the unclassified ones under "others" for now <img width="936" height="661" alt="image" src="https://github.com/user-attachments/assets/b48bd9a2-fe33-4cb0-9288-1cd9c8264da0" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Feature previews are now organized into expandable categories. * Observability and database previews are grouped for easier browsing. * Uncategorized previews remain available under an “Others” section. * Existing feature selection options and sorting behavior are preserved. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
76257f164b |
fix(studio): align storage row icon weight (#48480)
## What kind of change does this PR introduce? Bug fix stacked on #48478. ## What is the current behavior? Storage Explorer renders the custom closed-folder icon at `1.5` but leaves the Lucide open-folder icon at its default `2`. The duplicated file-picker implementation also uses a different set of stroke-width overrides. ## What is the new behavior? A shared `StorageRowIcon` renders loading, open and closed folder, image, audio, video and generic file icons at `1.5` across Storage Explorer, row editing and the bucket file picker. Test by comparing open and closed folders and file-type rows in Storage Explorer and the bucket file picker. | Before | After | | --- | --- | | <img width="524" height="336" alt="CleanShot 2026-08-03 at 18 38 06@2x" src="https://github.com/user-attachments/assets/15eb8b9f-69fc-4eee-8428-d7ec26dce8dc" /> | <img width="522" height="328" alt="CleanShot 2026-08-03 at 18 39 20@2x" src="https://github.com/user-attachments/assets/17b7dddd-8d36-421c-8356-c9c1bd7456e8" /> | | _Thicker image and file icon compared to folder icon_ | _Every icon has the same stroke thickness_ | <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Improvements** * Standardized file, folder, media, and loading icons across storage views. * Improved visual consistency with unified icon sizing, styling, and stroke width. * **Tests** * Added coverage for loading, folder, media, and generic file icon states. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
fc69c45985 |
Bring database connections to feature preview (#48638)
## Context As per PR title - brings Database Connections into feature preview Should be working for both hosted + self-host/local Also adjusts existing feature previews to remove "New" - Platform webhooks - Temporary database access <img width="600" alt="image" src="https://github.com/user-attachments/assets/b18ae8ca-ce0b-4649-975c-e70749a87dcd" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a Database Connections preview highlighting live activity, query blocking detection, session termination, and AI-assisted summaries. * Added access to project-specific observability connections from the preview. * Added a Database Connections entry to the observability menu when enabled. * **Improvements** * Updated feature previews and labels, including changes to “new” status indicators. * Added controls to manage Database Connections preview visibility. * **Bug Fixes** * Improved blocker detection so results respect the selected role filters. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
3f5ac679e0 |
fix(studio): redirect to feature preview route after enabling (#48637)
Enabling a feature preview that has a route (e.g. Column-level
privileges) closed the modal but never navigated to the feature's page
on the TanStack runtime (local + staging). The modal closed itself via a
nuqs query-param update *and* called `router.push` — the queued nuqs
flush navigates to the pathname it captured before the push, landing
after the redirect and reverting it. The Next runtime was unaffected
because the stock nuqs pages adapter patches the URL shallowly via the
history API instead of navigating.
**Changed:**
- When the enabled preview has a `getRoute`, skip the explicit
`toggleFeaturePreviewModal(false)` — `router.push(route)` navigates
without the `featurePreviewModal` param, which is what closes the modal.
One URL update instead of two racing ones; works on both runtimes.
- Previews without a route keep the explicit close (unchanged behavior).
## To test
- On a project page, open Feature Previews (avatar menu), select
**Column-level privileges**, click **Enable feature** → modal closes and
you land on `/project/{ref}/database/column-privileges` with the "We've
taken you to where you can try it out." toast (no bounce back to the
previous page)
- Repeat with **Disable Advisor rules** → lands on
`/project/{ref}/advisors/rules/security`
- Enable a preview without a route (e.g. **PG Delta Diff**) → modal
closes, stays on the current page, "It's now active across the
dashboard." toast
- Disable a preview → modal stays open, "disabled" toast, no navigation
- Verified locally on the TanStack runtime; worth a quick click-through
on the Vercel preview (Next runtime) too
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved feature activation navigation to prevent conflicting URL
updates.
* Non-route features continue to close the preview modal and display the
activation confirmation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
|
||
|
|
73c9dbfa52 |
fix(studio): standardise custom icon weight (#48478)
## What kind of change does this PR introduce? Bug fix and internal tooling update. Resolves FE-3472. ## What is the current behavior? Custom Studio icons use inconsistent source stroke widths, and some child-level styling prevents component props from overriding them. Mixed custom and Lucide icon sets can therefore appear uneven. ## What is the new behavior? Custom stroke icons use a root-level `stroke-width="1.5"`; fill-only logos use `stroke="none"`. The build validates that contract and regenerated components preserve existing exports and props. Studio applies the same `1.5` weight across Reports categories and uses one shared destination icon mapping in the replication selector, destination rows and diagram. | Before | After | | --- | --- | | <img width="418" height="516" alt="56398" src="https://github.com/user-attachments/assets/6afa7042-e6be-40e7-9911-af2f61238c9d" /> | <img width="390" height="550" alt="CleanShot 2026-07-30 at 17 12 37@2x" src="https://github.com/user-attachments/assets/870f49cf-c8fa-40db-8be8-2eb5f264ff4a" /> | | <img width="510" height="734" alt="CleanShot 2026-07-30 at 17 19 28@2x" src="https://github.com/user-attachments/assets/a5b2c088-dcd2-4907-976b-5820794d06e3" /> | <img width="554" height="742" alt="CleanShot 2026-07-30 at 17 16 06@2x" src="https://github.com/user-attachments/assets/ed3a77c4-5d94-4ca7-b9e4-1403b725a981" /> | ## Testing At 100% zoom, compare custom and Lucide icon weight in: - Reports: **Add your first chart** and **Add block** - Database > Replication: the destination selector, destination rows and replication diagram - Command menu (`⌘K`): **Search Database Tables**, **Search RLS Policies**, **Search Edge Functions** and **Search Storage** - Authentication > Users: right-click a user row and compare the context-menu icons - Database > Schema Visualizer: open a table node overflow menu - A paused project: **Export your data > Download backups** <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added consistent destination icons across replication panels, rows, and diagrams. * Updated instance health and metric icons for clearer identification. * Standardized icon stroke weight and reduced default icon stroke thickness. * **Documentation** * Clarified custom icon requirements, default properties, and validation guidance. * **Bug Fixes** * Improved consistency of icon rendering across replication destinations and reports. * **Tests** * Added coverage for icon SVG validation and replication destination icon rendering. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
99e66029c8 |
docs: document the supabase-js /tracing opt-in subpath (#48529)
## What kind of change does this PR introduce? Documentation update for `apps/docs/content/guides/monitoring-and-debugging/client-side-tracing.mdx`. As of `@supabase/supabase-js` 2.112.0 (supabase/supabase-js#2583), the OpenTelemetry integration moved out of the main bundle into an opt-in subpath. Enabling trace propagation now takes two steps: `import '@supabase/supabase-js/tracing'` at the application entry point, plus the existing `tracePropagation: true` client option. Guide changes: - Requirements: documents the subpath import (2.112.0+), the loud-resolution behavior when `@opentelemetry/api` is missing, the one-time warning when the runtime isn't loaded, the version note for 2.106.0–2.111.x (no import there), and that the CDN/UMD build does not support tracing. - Both code samples now start with the subpath import. - Troubleshooting: new first check (runtime not loaded → one-time console warning), updated `@opentelemetry/api` semantics per version, new CDN/UMD entry. The JS reference (`typeSpec.json`) is regenerated automatically by the docs-update pipeline from the supabase-js spec and is not touched here. **Timing note:** merge once 2.112.0 is promoted to `latest` (currently on `beta`/`canary`) so the guide doesn't get ahead of the stable release. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated client-side tracing guidance for `@supabase/supabase-js` 2.112.0 and later. * Added setup examples for the required one-time opt-in import. * Clarified behavior when tracing dependencies are missing and documented CDN usage limitations. * Expanded troubleshooting guidance for runtime loading, module resolution, and UMD usage. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
2c53ca4a79 |
Support listing and reading custom reports from Assistant (#48530)
## Context This is pre-requisite work for adding support to managing custom reports from the Assistant. Planning to break this into a number of PRs, briefly - Adding read support for custom reports - Adding write support for custom reports - Adding run support for custom reports - Should be able to infer data from the results then This PR starts with adding support for listing and reading custom reports from the Assistant ## Other changes involved - Updates setting up of the home page report to have better title and description - Swaps the variant of the ToggleGroup in the SQL block for custom reports as the default variant blends into the background color of the PopoverContent ## To test - [ ] Assistant should be able to list custom reports + read its contents <img width="428" height="755" alt="image" src="https://github.com/user-attachments/assets/6a15b660-c0ee-4a06-984c-87eff3943eec" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added AI-assisted tools to list reports and retrieve report details, including chart counts, layouts, configurations, and SQL-backed chart information. - Added clearer empty-state messaging when no snippets are available. - **Improvements** - New homepage reports now use the name “Homepage Report” and include a descriptive project-home summary. - Updated query controls with refreshed visual styling. - Improved content requests to support additional request context. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
022b374f2d |
show Stripe Projects errors inline (#48472)
## What kind of change does this PR introduce? Bug fix. ## What is the current behavior? Stripe Projects confirmation failures only appear in a toast. The existing **Unable to load authorization** Admonition is a separate error state shown when the account request itself cannot be loaded. ## What is the new behavior? Confirmation failures remain visible below the authorisation actions, clear on retry, and do not also trigger a toast. They use the shared `InterstitialActionError`. | Before | After | | --- | --- | | <img width="1024" height="759" alt="Authorize Stripe Projects Supabase" src="https://github.com/user-attachments/assets/83cb3144-9ddb-46b7-bfce-970497be61e2" /> | <img width="1024" height="759" alt="Authorize Stripe Projects Supabase" src="https://github.com/user-attachments/assets/bccedde9-9935-457b-a980-0c80499f2f27" /> | ## To test These instructions visually check the after state on this branch. Opening an invalid `ar_id` without the hardcodes only exercises the existing load-error Admonition, which this PR does not change. ### After on this branch 1. In `apps/studio/pages/partners/stripe/projects/login.tsx`, replace the `confirmationError` assignment with: ```tsx const confirmationError = 'Failed to authorize Stripe Projects: Test error' ``` 2. In the same file, replace the block beginning with `const linkedOrg` and ending with `interstitialDescription` with: ```tsx const linkedOrg = { name: 'Example Organization' } const emailMatches = true const displayName = primaryEmail ?? username ?? 'reviewer@example.com' const isPending = false const isConfirmed = false const isConfirming = false const isError = false const showAuthorizationState = true const interstitialDescription = 'This will create an organization on your behalf in Supabase' ``` 3. While signed in locally, open `http://localhost:8082/partners/stripe/projects/login?ar_id=test`. 4. Confirm the error appears below **Authorize Stripe Projects** and **Cancel**. No real Stripe request is required. 5. Revert both temporary edits. ### Before on master (optional) 1. Check out `master`. 2. In `apps/studio/pages/partners/stripe/projects/login.tsx`, replace the block beginning with `const linkedOrg` and ending with `interstitialDescription` with the same block from step 2 above. Do not add `confirmationError`. 3. While signed in locally, open `http://localhost:8082/partners/stripe/projects/login?ar_id=test`. 4. Click **Authorize Stripe Projects**. 5. Confirm the failed confirmation appears in a toast beginning **Failed to confirm account request**. 6. Revert the temporary edit before changing branches. ## Additional context Stacked on #48471. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit * **Bug Fixes** * Authorization errors during Stripe Projects login are now displayed inline in both authorization flows. * Authorization remains available after a failed confirmation attempt. * Failed authorization requests no longer trigger an additional toast notification. * Previous errors are cleared when retrying authorization. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
c0f1ef51fb |
feat(docs): migrate resources and getting-started to ContentListings (#48517)
## What kind of change does this PR introduce? Docs update / follow-up to #48379. ## What is the current behavior? `/guides/resources` and `/guides/getting-started` hand-roll `GlassPanel` grids in MDX. They look like ContentListings cards after the chrome PR, but they do not use the shared data files, so they miss PostHog `docs_content_listing_clicked` telemetry and the CONTRIBUTING contribution path. ## What is the new behavior? Those pages use `<ContentListings id="…" />` backed by `resources.data.ts` and `getting-started.data.ts`, same pattern as storage. - Section-level `$Show` wrappers stay for framework / web / mobile blocks - Nimbus stays a `$Partial` behind `$Show` - New optional per-item `feature` field gates SDK links (e.g. Flutter / Swift / Kotlin) without splitting whole sections - CONTRIBUTING notes when to use `feature` vs a partial-level `$Show` ## To test Compare the following against `master`: - [Resources](https://docs-git-dnywh-docs-content-listings-resources-239158-supabase.vercel.app/docs/guides/resources): overview, migrate, and postgres grids; icons in light/dark - [Getting started](https://docs-git-dnywh-docs-content-listings-resources-239158-supabase.vercel.app/docs/guides/getting-started): overview, use cases, framework quickstarts, web demos, mobile tutorials; nimbus partial when enabled - Click a card and confirm `docs_content_listing_clicked` fires with the expected `listingId` Everything should look and feel the same. It’s just that we’re using `ContentListings` instead of `GlassPanel` grids. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added centralized Getting Started and Resources content listings, including quickstarts, demos, tutorials, migration guides, and Postgres resources. - Added feature-based visibility controls for individual content listing items. - **Improvements** - Disabled content is now automatically hidden from documentation pages and generated Markdown. - Pages and sections with no available content are omitted entirely. - External documentation links are more secure. - Updated contribution guidance with instructions and examples for feature flags. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
e7796315d2 |
fix sheets stealing focus (#48521)
## What kind of change does this PR introduce? Bug fix. Resolves DEPR-539. ## What is the current behavior? When a focused child unmounts, Radix can move focus to the Sheet wrapper and break the expected tab order. Several callsites suppress the wrapper's tabindex individually. ## What is the new behavior? Sheet still focuses its first interactive child when opened, but the wrapper itself is no longer focusable by default. Callers can opt in with an explicit `tabIndex` when needed. ## Additional context ### Testing Compare this Studio experience on both this branch and `master`: 1. Open any project with an Edge Function. 2. Go to **Edge Functions**, open the function, then click **Test**. 3. Under **Headers**, click **Add Headers**. Click the first header key input, then Tab slowly through the header inputs and remove buttons. On `master`, focus can jump to the whole Sheet. On this branch, focus stays on the controls in order. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved keyboard focus behavior across sheets and panels. * Sheets now focus the first available interactive element when opened, without adding unnecessary focus targets. * Preserved support for programmatic focus and prevented focus from unexpectedly moving to the sheet when focused content is removed. * Updated authentication, integrations, connection, logging, storage, and other sheet interfaces consistently. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
7a77760a10 |
fix(studio): confirm before discarding dirty replication destination forms (#48522)
## What kind of change does this PR introduce? Bug fix (dirty form dismissal for Replication destination sheets), plus small docs/skill updates so agents pick up the existing modality pattern. ## What is the current behavior? Closing the Add/Edit destination sheet (Cancel, Escape, or backdrop) discards in-progress form state with no confirm. Same for the nested Create publication sheet. ## What is the new behavior? Dirty closes go through `useConfirmOnClose` + `DiscardChangesConfirmationDialog`, matching other Studio sheets. Successful submit still closes without prompting. Also: skills + `forms.mdx` now point at Modality “Dirty form dismissal”. | After | | --- | | <img width="1024" height="759" alt="Replication Database Chisel Toolshed Supabase" src="https://github.com/user-attachments/assets/6f568a2a-c76b-442a-b592-d638bb36adc4" /> | ### How to test 1. Studio → Database → Replication → **Add destination** (any pipelines type with access). 2. Change a field so the form is dirty. 3. Try Cancel, Escape, and backdrop click → discard dialog appears; **Keep editing** stays open; **Discard changes** closes. 4. Submit successfully with a valid config → sheet closes with no discard dialog. 5. Repeat for **Edit destination** from a destination row menu. 6. Optional: Add destination → create a new publication from the publication picker → dirty that nested sheet and dismiss the same way. 7. Optional: Add destination → Read Replica → change region → dismiss → discard dialog; deploy still closes without prompting. ## Additional context Sheet owns the close guard; forms report dirty via a ref because RHF lives in the child. Nested `NewPublicationPanel` wires the guard locally. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added unsaved-changes tracking to replication destination and publication forms. - Added confirmation prompts before closing forms with unsaved changes via Cancel, Escape, or backdrop dismissal. - Forms now reset appropriately after successful submission or confirmed dismissal. - **Documentation** - Updated form and UI pattern guidance to document dirty-form dismissal behavior for sheets and dialogs. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com> |
||
|
|
eef0f57309 |
fix(studio): clarify Storage columns keyboard focus and selection (#48222)
## What kind of change does this PR introduce? Accessibility / UX fix ([DEPR-630](https://linear.app/supabase/issue/DEPR-630)). ## What is the current behavior? In Storage **As columns** view, keyboard select is unclear: the checkbox stays hidden until hover, so Tab/Space selection is hard to see. The row actions (three dots) menu also shows a browser default blue outline on Tab. ## What is the new behavior? Same icon/checkbox swap as list/hover, but also on keyboard focus: - Checkbox replaces the icon on hover, `:focus-within`, and when selected (no layout shift) - Checkbox becomes visible when focused via keyboard (without needing hover) - Row gets an inset outline while the checkbox is focused - Folders have no checkbox (non-focusable spacer only) - Row actions trigger uses `focus-ring` instead of the browser blue outline | Before | After | | --- | --- | | <img width="1046" height="362" alt="CleanShot 2026-07-31 at 14 37 47@2x" src="https://github.com/user-attachments/assets/9b827627-17e6-49a6-87a3-1253b4cef1da" /> | <img width="1046" height="390" alt="CleanShot 2026-07-31 at 14 37 13@2x" src="https://github.com/user-attachments/assets/2fd2b426-a8e2-4fda-b1ba-4df728b7b2f1" /> | | _Checkbox focussed but not visually shown_ | _Checkbox focussed and visually shown_ | ## To test 1. Open the **Studio preview** for this PR. 2. Go to **Storage → Files** → open a bucket with several files. 3. Set view to **As columns**. 4. Tab until a **file** checkbox is focused. **Expect:** - Icon is replaced by the checkbox (same slot; neighbouring row icons should not look shifted) - Checkbox visible without hovering - Row shows an inset outline 5. Press **Space** to select. Checkbox stays in the icon slot; selection background applies. 6. Hover another file. Same icon to checkbox swap as before. 7. Tab to the three-dot actions control on a row. Expect the shared focus ring (not a blue browser outline); the menu icon should become visible. 8. Folders: no checkbox in the tab order; click icon/name still opens the folder. 9. Smoke **As list**. Same swap behaviour. ## Additional context From Kemal's DEPR-621 review. |
||
|
|
f7454cf94e |
feat(studio): oauth impersonation warning on authorize (#48162)
## What kind of change does this PR introduce? Feature + docs. Stacked on #48161 (logo contract / [DEPR-604](https://linear.app/supabase/issue/DEPR-604/define-connect-logo-asset-and-variant-contract)). ## What is the current behavior? After #48161, curated logos only resolve from allowlisted `redirect_uri` hosts. A requester can still present a trusted partner **name** (e.g. Claude) while redirecting to an unrelated remote host; the UI shows Supabase alone but does not call out the mismatch. ## What is the new behavior? - Shows a caution admonition when the requester name looks like a trusted partner (Claude, Cursor, ChatGPT/OpenAI, Perplexity) but `redirect_uri` is a **remote** host outside that partner's allowlist. - Skips localhost / loopback redirects for the caution (common for local MCP clients); those still get curated logos when the name matches a trusted partner. - Highlights the footer redirect URL in warning colour when the caution is shown. - Documents the behaviour in the Connect interstitials pattern. ### To test Real MCP clients (Claude, Cursor, etc.) only send users to **production** `/authorize`, so you cannot drive a local or preview Studio build from those tools. Use a Network override instead: 1. Start Studio and sign in (`pnpm dev:studio`, or use the [Vercel preview](https://studio-staging-git-danny-oauth-impersonation-warning-supabase.vercel.app/)). 2. Open `/dashboard/authorize?auth_id=foo` (any `auth_id` is fine; the real response may 404) ([Vercel preview](https://studio-staging-git-danny-oauth-impersonation-warning-supabase.vercel.app/dashboard/authorize?auth_id=foo)). 3. DevTools → **Network** → find `GET …/platform/oauth/authorizations/foo` (or whatever id you used). 4. Right-click → **Override content** (enable Local Overrides / pick a folder if prompted). 5. Paste one of the payloads below (status **200**), save, then reload the authorize page. 6. Keep `expires_at` in the future so the request does not look expired. #### Impersonation caution (trusted name + remote non-allowlisted redirect) Expect: - Supabase alone (no curated Claude mark) - Caution: “Redirect does not match this app name” - Footer redirect URL in warning colour ```json { "name": "Claude", "website": "https://claude.ai", "icon": null, "domain": "claude.ai", "redirect_uri": "https://evil.com/callback", "expires_at": "2099-01-01T00:00:00.000Z", "scopes": ["organizations:read", "projects:read"], "approved_at": null, "registration_type": "dynamic" } ``` | Preview | | --- | | <img width="764" height="958" alt="Authorize Claude Supabase" src="https://github.com/user-attachments/assets/e6eee016-5710-41ba-9925-87511e009e22" /> | #### Localhost MCP: no caution Expect curated Claude + Supabase pair (name match + loopback), **no** caution, normal footer colour. Local MCP clients often use loopback redirects. ```json { "name": "Claude", "website": "https://claude.ai", "icon": null, "domain": "claude.ai", "redirect_uri": "http://127.0.0.1:42813/callback", "expires_at": "2099-01-01T00:00:00.000Z", "scopes": ["organizations:read", "projects:read"], "approved_at": null, "registration_type": "dynamic" } ``` | Preview | | --- | | <img width="764" height="958" alt="Authorize Claude Supabase" src="https://github.com/user-attachments/assets/79f36865-3c8e-43e5-9490-24288efc74aa" /> | #### Legitimate curated partner: no caution Expect curated Cursor + Supabase pair, no admonition, normal footer colour. ```json { "name": "Cursor", "website": "https://cursor.com", "icon": null, "domain": "cursor.com", "redirect_uri": "https://cursor.com/callback", "expires_at": "2099-01-01T00:00:00.000Z", "scopes": ["organizations:read", "projects:read"], "approved_at": null, "registration_type": "dynamic" } ``` | Preview | | --- | | <img width="764" height="958" alt="56164" src="https://github.com/user-attachments/assets/412333a3-a74f-42eb-9f63-d56b6a26bf91" /> | #### Unrelated name + remote redirect: no caution Expect Supabase alone (no icon), no admonition. ```json { "name": "Acme Tools", "website": "https://evil.com", "icon": null, "domain": "evil.com", "redirect_uri": "https://evil.com/callback", "expires_at": "2099-01-01T00:00:00.000Z", "scopes": ["organizations:read", "projects:read"], "approved_at": null, "registration_type": "dynamic" } ``` | Preview | | --- | | <img width="764" height="958" alt="Authorize Acme Tools Supabase" src="https://github.com/user-attachments/assets/dab24817-5c26-4aa1-a447-796c4af5868b" /> | <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Added an OAuth caution when a requester name matches a known partner but uses an unapproved remote redirect host. - Improved trusted partner logo selection for localhost/loopback redirects while preserving safe fallbacks for untrusted redirects. - **Documentation** - Updated Connect interstitial guidance for redirect mismatches and localhost/loopback behavior. - **Tests** - Expanded coverage for caution visibility, messaging, localhost logo pairing, and trusted redirect scenarios. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
2b26da360e |
show API and AWS authorization errors inline (#48471)
## What kind of change does this PR introduce? Bug fix and design-system update. ## What is the current behavior? API authorisation and AWS Marketplace action failures use transient toasts. The inline action-error treatment introduced for organisation invitations is implemented locally. ## What is the new behavior? Action failures remain visible below their actions and clear on retry or organisation change. This PR adds a shared `InterstitialActionError` component, updates the connect-interstitial guidance and demo to use it, and retroactively applies it to `OrganizationInvite`. Mutation errors are read directly from their mutation hooks rather than copied into component state. | Before | After | | --- | --- | | <img width="1024" height="759" alt="Authorize API Access Supabase" src="https://github.com/user-attachments/assets/9520aff3-496d-44b1-b5b5-02b331872e32" /> | <img width="1024" height="759" alt="Authorize API Access Supabase" src="https://github.com/user-attachments/assets/2d09e337-573a-45b5-80ac-7c546ed1401d" /> | | <img width="1024" height="759" alt="Link AWS Marketplace Supabase" src="https://github.com/user-attachments/assets/bb1a4581-0399-432a-8037-d84ab15ecc4b" /> | <img width="1024" height="759" alt="Link AWS Marketplace Supabase" src="https://github.com/user-attachments/assets/f9d43cd9-c661-42ed-91c0-e45ccb9c19f5" /> | _Note since taking that AWS screenshot: the error message now replaces the prior footer text. I.e. “Learn more about billing through AWS.” is now gone when an error message is present._ ## To test ### AWS Marketplace For a visual check with local Studio running: 1. In `apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.tsx`, immediately before `if (!buyerId)`, temporarily add: ```tsx return ( <AwsMarketplaceInterstitial> <div className="flex flex-col gap-5"> <InterstitialAccountRow displayName="reviewer@example.com" /> <OrganizationSelector organizations={[ { name: 'Example Organization', slug: 'example-organization', plan: { id: 'pro', name: 'Pro' }, } as Organization, ]} selectedSlug="example-organization" disabled onSelect={() => undefined} /> <div className="flex flex-col gap-5"> <div className="flex flex-col gap-2"> <Button variant="primary" block> Link organization </Button> <InterstitialActionError error="Failed to link organization: Test error" /> </div> <p className="text-center text-xs text-foreground-lighter text-balance"> <InlineLink href={`${DOCS_URL}/guides/platform/aws-marketplace`}> Learn more </InlineLink>{' '} about billing through AWS. </p> </div> </div> </AwsMarketplaceInterstitial> ) ``` 2. Open `http://localhost:8082/aws-marketplace-onboarding?buyer_id=test` while signed in. 3. Confirm the error appears below **Link organization** with a divider. Remove the temporary return before committing anything. ### API authorization For a visual check with local Studio running: 1. In `apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Valid.tsx`, immediately before `if (isLoading)`, temporarily add: ```tsx return ( <ApiAuthorizationMainView approvalState="indeterminate" form={form} requester={{ name: 'Test App', website: 'https://example.com', icon: null, domain: 'example.com', scopes: [], expires_at: '2099-01-01T00:00:00.000Z', approved_at: null, registration_type: 'static', }} organizations={{ _tag: 'success', organizations: [ { name: 'Example Organization', slug: 'example-organization' } as Organization, ], }} requestedOrganizationSlug={undefined} actionError="Failed to authorize request: Test error" onOrganizationChange={() => undefined} onApprove={() => undefined} onDecline={() => undefined} /> ) ``` 2. Open `http://localhost:8082/authorize?auth_id=test` while signed in. 3. Confirm the error appears below the authorisation actions with a divider. Remove the temporary return before committing anything. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added consistent inline error messaging for authorization, organization invitations, and AWS Marketplace onboarding. * Error messages now appear within the relevant interstitial and replace supporting footer content until resolved. * Retry and action buttons remain available after failed operations. * **Bug Fixes** * AWS Marketplace linking failures no longer trigger toast notifications. * Billing guidance is hidden while an onboarding error is displayed. * **Tests** * Added coverage for authorization, cancellation, and AWS Marketplace failure states. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com> |
||
|
|
3a3661019f |
docs: update architecture diagram and references from Kong to Envoy (#48557)
## 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? This is a docs update. The shared architecture diagram and several docs pages still described Kong as Supabase's API gateway, even though the hosted platform has run Envoy since 2025. Both diagram variants are rebuilt with real, accessible text — the originals rendered every label as an outlined vector path with zero `<text>` elements — so the gateway name can be kept current going forward, and the platform-facing prose that named Kong directly is updated to Envoy. Closes DOCS-1262. ## What is the current behavior? - The architecture diagram (used on the Architecture overview, Auth architecture, Self-hosting Docker, and Contributing guide pages) shows "KONG / docs.konghq.com" as the gateway box - The Architecture overview page has a "Kong (API gateway)" component section - The Auth architecture page states "Kong API gateway. This is shared between all Supabase products." - `README.md` and `apps/docs/public/humans.txt` credit Kong instead of Envoy ## What is the new behavior? - Rebuilt `supabase-architecture.svg` and `supabase-architecture--light.svg` with real `<text>` elements; the gateway box now reads "ENVOY / envoyproxy.io" with identical layout, colors, and shadows otherwise - Updated the diagram alt text and the "Kong (API gateway)" section (now "Envoy (API gateway)", with the correct docs link, license, and language) on the Architecture overview page - Updated the "Kong API gateway" bullet and diagram alt text on the Auth architecture page - Updated the Kong credit to Envoy in `README.md` and `apps/docs/public/humans.txt` **Intentionally excluded:** - Self-hosted Docker Compose pages (`docker.mdx`, `enable-mcp.mdx`, `self-hosted-auth-keys.mdx`, `self-hosted-envoy.mdx`, `self-hosted-functions.mdx`, `self-hosted-proxy-https.mdx`) — these describe the self-hosted stack, which still defaults to Kong today and is already owned by an open PR (#48153) that flips that default - `i18n/README.*.md` (29 files) — translation risk without native-speaker review; only the English `README.md` was updated ## Open questions - [ ] #48153 merges and the self-hosted default actually flips to Envoy — once it does, revisit the self-hosting Docker Compose pages excluded from this PR and the self-hosting-analytics reference TODO - [ ] Confirm whether all legacy platform instances have fully migrated to Envoy — until then, this PR's wording says "Envoy" without claiming Kong is gone everywhere (some legacy instances may still silently be on Kong) - [ ] Current Envoy response header names confirmed for the logs guide TODO (`x-kong-proxy-latency` / `x-kong-upstream-latency`) - [ ] i18n README translations (29 files) follow up separately with native-speaker review ## Additional context - Verification: rendered both new SVGs with `rsvg-convert` and visually diffed against the originals — layout, spacing, colors, and shadows are pixel-equivalent; only the top-box label text changed | Check | Result | | --- | --- | | `rsvg-convert` render, dark variant | pass — diagram unchanged except gateway label | | `rsvg-convert` render, light variant | pass — diagram unchanged except gateway label | | Preview URL, Architecture overview | pass — 200 | | Preview URL, Auth architecture | pass — 200 | ### Before & After #### [Architecture overview](https://supabase.com/docs/guides/getting-started/architecture) | [Before (production)](https://supabase.com/docs/guides/getting-started/architecture) | [After (PR preview)](https://docs-git-nikrichers-docs-1262-architecture-docs-84e339-supabase.vercel.app/docs/guides/getting-started/architecture) | | --- | --- | |  |  | #### [Auth architecture](https://supabase.com/docs/guides/auth/architecture) | [Before (production)](https://supabase.com/docs/guides/auth/architecture) | [After (PR preview)](https://docs-git-nikrichers-docs-1262-architecture-docs-84e339-supabase.vercel.app/docs/guides/auth/architecture) | | --- | --- | |  |  | ### Test plan - [ ] Diagram renders correctly in both light and dark mode on the preview - [ ] "Envoy (API gateway)" section reads correctly on the Architecture overview page - [ ] Auth architecture bullet reads "Envoy API gateway" - [ ] The two TODO-marked follow-ups (logs guide, self-hosting-analytics) are acceptable to leave for later rather than block this PR --------- Co-authored-by: Nik Richers <nik@validmind.ai> Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io> |
||
|
|
e88a3723e1 |
feat(studio): add PostHog session replay with masked-by-default policy (#48515)
## 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? Telemetry feature. ## What is the current behavior? - Session replay is off, and nothing in the code keeps it off. - `packages/common/posthog-client.ts` sets no recording config at all. - So PostHog's project setting alone decides, for every app sharing that project. - Studio, www and docs share one project. - Studio shows customer data almost everywhere: SQL editor, table rows, connection strings, API keys. - posthog-js masks inputs by default. It does not mask rendered text. - [GROWTH-1055](https://linear.app/supabase/issue/GROWTH-1055) ## What is the new behavior? - `posthogClient.init()` takes a masking config, and disables recording when it gets none. - Studio passes one behind `NEXT_PUBLIC_POSTHOG_SESSION_REPLAY`. - Every other app passes nothing, so it never loads the recorder. - Studio masks all text and all inputs. - `data-ph-capture="true"` opts one element's text back in. Unused so far. - Canvas is blocked, because it records as images that text masking cannot reach. - Query strings and fragments are stripped from recorded URLs, where auth callbacks carry tokens. - Request and response bodies are never recorded. - Console logs are never recorded, since masking only reaches DOM text. - Masking is set in code, so PostHog's settings cannot loosen it. - Consent gating is unchanged. Nothing records before a user accepts. ## Additional context - Recording needs three things: this env var, the PostHog project toggle, and user consent. - All three are off or unset, so merging this changes nothing at runtime. - `NEXT_PUBLIC_POSTHOG_SESSION_REPLAY` goes into Vercel on Preview scope first, to test on a preview build. - Production scope comes later, once we are ready to record there. - `NEXT_PUBLIC_*` is inlined at build time, so each scope needs a rebuild afterwards. - Text inside HTML attributes (`title`, `alt`, `href`) is still recorded as-is. - posthog-js exposes no hook for masking attributes, so covering it needs `ph-no-capture` per component. - Staging has no server-side masking config, so that is where this gets verified. - Plan: enable recording on staging, verify masked text on a preview, then decide on production. - Network timing stays on for the dashboard performance work. Payloads stay off. - Tests cover both masking functions and the config values. ## Screenshots https://github.com/user-attachments/assets/aa064a04-f977-4453-a3da-2fe0cdcead08 <img width="889" height="651" alt="CleanShot 2026-07-31 at 10 13 43" src="https://github.com/user-attachments/assets/f1d07946-fd68-42b2-89f1-d201bc605638" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit * **New Features** * Added privacy-focused session replay for Studio. * Text and form inputs are masked by default, with explicit opt-in capture. * Network recordings remove query strings and fragments. * Headers, request bodies, canvas data, and console logs are excluded. * **Bug Fixes** * Improved whitespace and capture-attribute handling during masking. * Session replay remains disabled without a masking policy or explicit enablement. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
ec64135f9d |
perf(pg-meta): scope column privileges query to a single table (#48553)
## 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? Performance improvement ## What is the current behavior? The column privileges page in Studio only ever renders one table, but the underlying query still `aclexplode`s every column in the whole schema and filters the result client-side. ## What is the new behavior? Adds a scoped SQL path that prunes `pg_class`/`pg_namespace` to the requested schema+table before exploding ACLs, gated behind the `pgMetaScopedIntrospection` flag, with a plan-guard test asserting `pg_class`/`pg_attribute` stay index-driven. Studio's query hook and cache keys now thread the selected table through so column-privilege invalidation and cold-load races are scoped correctly, and the page fetches per-table instead of per-schema. ## Additional context <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Improvements** * Column privileges are now scoped to the selected schema and table for more accurate results. * Changing schemas automatically updates the table selection and refreshes the displayed privileges. * Privilege updates now refresh only the relevant schema, table, and column data. * Loading states are handled more accurately when no table is selected. * **Bug Fixes** * Improved consistency between scoped and unscoped column privilege results, including table-, column-, and grant-option privileges. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
d47747477d |
docs(blog): add Introducing Supabase Evals launch post (#48505)
## 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? - Adds a new blog post announcing the open-source `supabase/evals` benchmark, published at `/blog/introducing-supabase-evals` (date 2026-07-31) - Adds the post's images (`og.png`, `thumb.png`, and an inline benchmark-results chart) under `apps/www/public/images/blog/introducing-supabase-evals/` ## What is the current behavior? N/A. No existing post for this launch. ## What is the new behavior? - New MDX post `apps/www/_blog/2026-07-31-introducing-supabase-evals.mdx`, author `matt_rossman`, category `product` - Post covers what Supabase Evals is, why we built it, how the benchmark and regression suites work, key findings, and where agents struggle ## Additional context - Opened as a draft. Content is still under review in Notion, so this is not ready to merge yet. - Part of the Introducing Supabase Evals launch (Tier 2, target 2026-07-31). - Images are placeholders pending final assets from Brand Design if needed. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added a new blog post introducing Supabase Evals, an open-source benchmark for evaluating AI coding agents on real Supabase tasks. * Described how evaluations run, how scoring works, retry behavior, update cadence, and common failure areas. * Included links to explore results and shared plans for expanding scenarios, improving scoring rigor, and adding feedback capabilities. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Ana <ana1337x@users.noreply.github.com> Co-authored-by: Matt Rossman <22670878+mattrossman@users.noreply.github.com> |
||
|
|
320111b06b |
fix(docs): replace hardcoded heading tags in 4 shared components (#48456)
Closes DOCS-1261 _WAVE plugin shows headers creating jumps in hierarchy. Preview on the left:_ <img width="1022" height="417" alt="Screenshot 2026-07-29 at 2 42 07 PM" src="https://github.com/user-attachments/assets/f5e3bd09-8dbf-45e3-8a7f-70d7334fd25b" /> <img width="408" height="663" alt="Screenshot 2026-07-29 at 2 44 33 PM" src="https://github.com/user-attachments/assets/6b952a81-40e5-4a9d-b08a-190c71575cac" /> ## Problem Four shared components in `apps/docs` render a hardcoded heading tag no matter where they're used: - `NamedCodeBlock` renders a code block's filename as an `<h6>` - `ProjectConfigVariables` renders a variable label as an `<h6>` - `StepHikeCompact.Details` renders a step title as an `<h3>` - `IconPanel` renders its title as an `<h5>` Since these are fixed, they often land in the wrong spot in a page's heading order (like an h6 right after an h2), which breaks navigation for screen reader users. This showed up in the [header hierarchy triage report](https://app.notion.com/p/supabase/Playwright-E2E-Triage-Reports-3ab5004b775f81e3bc60d058fa5a02c1) — fixing these 4 components alone resolves 72 of the 159 heading-order violations found. ## Solution Swapped the heading tag in each component for a `<span>` with the same classes. None of these are really "headings" for the content that follows, so they shouldn't be in the tag tree at all. The one wrinkle: this codebase applies heading font weight/family through a global CSS rule keyed off the tag name (h1-h6), not something the tag gives you for free. So each span now sets that styling explicitly, plus a margin to match what was there before. Nothing else changed — same classes, same layout. ## Manual testing Staging preview: https://docs-git-ui-header-hierarchy-supabase.vercel.app Check that each one still looks right: - [NamedCodeBlock](https://docs-git-ui-header-hierarchy-supabase.vercel.app/docs/guides/self-hosting/docker) — filenames above the code blocks - [ProjectConfigVariables](https://docs-git-ui-header-hierarchy-supabase.vercel.app/docs/guides/auth/quickstarts/react-native) — the "Project URL" / "Publishable key" labels (this page also has a `NamedCodeBlock` inside the numbered steps) - [StepHikeCompact](https://docs-git-ui-header-hierarchy-supabase.vercel.app/docs/guides/database/beekeeper-studio) — the step titles ("Create a new connection", etc.) - [IconPanel](https://docs-git-ui-header-hierarchy-supabase.vercel.app/docs/guides/resources) — the "Auth0" / "Firebase Auth" panel titles under "Migrate to Supabase" I also ran typecheck, lint, and the docs test suite locally — all green. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Style** * Updated headings and labels across documentation and UI components for more consistent typography. * Improved spacing, font weight, and block-level layout for project variables, step details, code tabs, and icon panels. * Preserved existing text content and conditional display behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> |
||
|
|
81523d5d8c |
fix(docs): fix heading-order skips in guide and troubleshooting content (#48459)
Closes DOCS-1260 _See WAVE plugin no longer flags a jump in header hierarchy. Preview on left._ <img width="708" height="699" alt="Screenshot 2026-07-29 at 2 30 11 PM" src="https://github.com/user-attachments/assets/be5bf335-9e03-474f-8215-06fa505ab2db" /> ## Problem Beyond the 4 shared components fixed in [#48456](https://github.com/supabase/supabase/pull/48456), the [header hierarchy report](https://app.notion.com/p/supabase/Playwright-E2E-Triage-Reports-3ab5004b775f81e3bc60d058fa5a02c1) found plain content headings that skip a level. For example, you may see a `##` followed directly by an `####`. Jumps in headers breaks page navigation for screen reader users, who jump between headings expecting each level to nest one at a time. ## Solution Adjusted heading levels across the affected guide and troubleshooting pages so every section nests correctly, with no skipped levels. **Staging previews:** | Page | Preview | | --- | --- | | `/guides/api/rest/postgrest-error-codes` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/api/rest/postgrest-error-codes) | | `/guides/auth/oauth-server/getting-started` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/auth/oauth-server/getting-started) | | `/guides/database/custom-postgres-config` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/custom-postgres-config) | | `/guides/database/drizzle` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/drizzle) | | `/guides/database/extensions` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/extensions) | | `/guides/database/extensions/pgaudit` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/extensions/pgaudit) | | `/guides/database/postgres-js` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/postgres-js) | | `/guides/database/replication/manual-replication-monitoring` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/replication/manual-replication-monitoring) | | `/guides/database/replication/manual-replication-setup` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/replication/manual-replication-setup) | | `/guides/database/replication/pipelines-monitoring` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/database/replication/pipelines-monitoring) | | `/guides/functions/debugging-tools` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/debugging-tools) | | `/guides/functions/development-tips` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/development-tips) | | `/guides/functions/examples/auth-send-email-hook-react-email-resend` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/examples/auth-send-email-hook-react-email-resend) | | `/guides/functions/examples/image-manipulation` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/examples/image-manipulation) | | `/guides/functions/examples/semantic-search` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/examples/semantic-search) | | `/guides/functions/examples/send-emails` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/examples/send-emails) | | `/guides/functions/examples/sentry-monitoring` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/examples/sentry-monitoring) | | `/guides/functions/wasm` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/functions/wasm) | | `/guides/getting-started` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/getting-started) | | `/guides/platform/aws-marketplace` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/aws-marketplace) | | `/guides/platform/aws-marketplace/faq` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/aws-marketplace/faq) | | `/guides/platform/billing-faq` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/billing-faq) | | `/guides/platform/ipv4-address` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/ipv4-address) | | `/guides/platform/migrating-within-supabase/backup-restore` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/migrating-within-supabase/backup-restore) | | `/guides/platform/privatelink` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/platform/privatelink) | | `/guides/queues/api` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/queues/api) | | `/guides/resources` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/resources) | | `/guides/security/hipaa-compliance` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/security/hipaa-compliance) | | `/guides/security/security-testing` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/security/security-testing) | | `/guides/security/soc-2-compliance` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/security/soc-2-compliance) | | `/guides/self-hosting` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/self-hosting) | | `/guides/storage/cdn/fundamentals` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/cdn/fundamentals) | | `/guides/storage/debugging/logs` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/debugging/logs) | | `/guides/storage/production/scaling` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/production/scaling) | | `/guides/storage/schema/helper-functions` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/schema/helper-functions) | | `/guides/storage/serving/image-transformations` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/serving/image-transformations) | | `/guides/storage/uploads/resumable-uploads` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/storage/uploads/resumable-uploads) | | `/guides/troubleshooting/an-invalid-response-was-received-from-the-upstream-server-error-when-querying-auth-RI4Vl-` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/an-invalid-response-was-received-from-the-upstream-server-error-when-querying-auth-RI4Vl-) | | `/guides/troubleshooting/are-all-features-available-in-self-hosted-supabase-THPcqw` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/are-all-features-available-in-self-hosted-supabase-THPcqw) | | `/guides/troubleshooting/avoiding-timeouts-in-long-running-queries-6nmbdN` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/avoiding-timeouts-in-long-running-queries-6nmbdN) | | `/guides/troubleshooting/database-api-42501-errors` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/database-api-42501-errors) | | `/guides/troubleshooting/disabling-prepared-statements-qL8lEL` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/disabling-prepared-statements-qL8lEL) | | `/guides/troubleshooting/discovering-and-interpreting-api-errors-in-the-logs-7xREI9` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/discovering-and-interpreting-api-errors-in-the-logs-7xREI9) | | `/guides/troubleshooting/edge-function-504-error-response` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/edge-function-504-error-response) | | `/guides/troubleshooting/high-cpu-and-slow-queries-with-error-must-be-a-superuser-to-terminate-superuser-process` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/high-cpu-and-slow-queries-with-error-must-be-a-superuser-to-terminate-superuser-process) | | `/guides/troubleshooting/how-postgres-chooses-which-index-to-use-_JHrf4` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/how-postgres-chooses-which-index-to-use-_JHrf4) | | `/guides/troubleshooting/how-to-change-max-database-connections-_BQ8P5` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/how-to-change-max-database-connections-_BQ8P5) | | `/guides/troubleshooting/how-to-interpret-and-explore-the-postgres-logs-OuCIOj` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/how-to-interpret-and-explore-the-postgres-logs-OuCIOj) | | `/guides/troubleshooting/how-to-migrate-from-supabase-auth-helpers-to-ssr-package-5NRunM` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/how-to-migrate-from-supabase-auth-helpers-to-ssr-package-5NRunM) | | `/guides/troubleshooting/http-api-issues` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/http-api-issues) | | `/guides/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM) | | `/guides/troubleshooting/interpreting-supabase-grafana-cpu-charts-9JSlkC` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/interpreting-supabase-grafana-cpu-charts-9JSlkC) | | `/guides/troubleshooting/interpreting-supabase-grafana-io-charts-MUynDR` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/interpreting-supabase-grafana-io-charts-MUynDR) | | `/guides/troubleshooting/new-branch-doesnt-copy-database` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/new-branch-doesnt-copy-database) | | `/guides/troubleshooting/not-receiving-auth-emails-from-the-supabase-project-OFSNzw` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/not-receiving-auth-emails-from-the-supabase-project-OFSNzw) | | `/guides/troubleshooting/resolving-500-status-authentication-errors-7bU5U8` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/resolving-500-status-authentication-errors-7bU5U8) | | `/guides/troubleshooting/resolving-cannot-execute-update-in-a-read-only-transaction-on-transaction-pooler-connections-ef582c` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/resolving-cannot-execute-update-in-a-read-only-transaction-on-transaction-pooler-connections-ef582c) | | `/guides/troubleshooting/resolving-database-hostname-and-managing-your-ip-address-pVlwE0` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/resolving-database-hostname-and-managing-your-ip-address-pVlwE0) | | `/guides/troubleshooting/rls-simplified-BJTcS8` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/rls-simplified-BJTcS8) | | `/guides/troubleshooting/security-of-anonymous-sign-ins-iOrGCL` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/security-of-anonymous-sign-ins-iOrGCL) | | `/guides/troubleshooting/supabase--your-network-ipv4-and-ipv6-compatibility-cHe3BP` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/supabase--your-network-ipv4-and-ipv6-compatibility-cHe3BP) | | `/guides/troubleshooting/supabase-grafana-memory-charts` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/supabase-grafana-memory-charts) | | `/guides/troubleshooting/supavisor-faq-YyP5tI` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/supavisor-faq-YyP5tI) | | `/guides/troubleshooting/tracking-postgres-role-activity-to-specific-dashboard-users-8d3715` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/tracking-postgres-role-activity-to-specific-dashboard-users-8d3715) | | `/guides/troubleshooting/transferring-from-cloud-to-self-host-in-supabase-2oWNvW` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/transferring-from-cloud-to-self-host-in-supabase-2oWNvW) | | `/guides/troubleshooting/understanding-postgresql-explain-output-Un9dqX` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/understanding-postgresql-explain-output-Un9dqX) | | `/guides/troubleshooting/understanding-postgresql-logging-levels-and-how-they-impact-your-project-KXiJRm` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/understanding-postgresql-logging-levels-and-how-they-impact-your-project-KXiJRm) | | `/guides/troubleshooting/vercel-integration-environment-variables-not-syncing-for-persistent-git-branches-b9191e` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/vercel-integration-environment-variables-not-syncing-for-persistent-git-branches-b9191e) | | `/guides/troubleshooting/why-are-there-gaps-in-my-postgres-id-sequence-Frifus` | [Preview](https://docs-git-docs-heading-hierarchy-supabase.vercel.app/docs/guides/troubleshooting/why-are-there-gaps-in-my-postgres-id-sequence-Frifus) | ## Manual testing 1. See affected pages. Recommend running a browser plugin like WAVE and selecting the **Structure** tab. 2. See the headings do not skip. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Documentation** * Standardized heading hierarchy across many guides and troubleshooting articles to improve readability and navigation. * Updated several documentation link targets to the correct new locations. * Reformatted multiple sections (including replication monitoring, Edge Functions, Storage, authentication, security, and networking) without changing instructions. * Queue Data API docs were restructured via heading-level adjustments (no operational changes). * Billing FAQ received clearer, more detailed payment-failure and tax guidance, plus related link updates. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> |
||
|
|
e241a21a9a |
fix: ESLint errors relating to accessibility in table editor, API Key and Access Token (#48479)
## 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? Added aria-label attributes and Tooltip to buttons ## What is the current behavior? alt attributes and Tooltip were missing ## What is the new behavior? Buttons have now aria-label attributes and Tooltip. ## Additional context No visual changes have been made. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Accessibility Improvements** * Added tooltips and improved accessible labeling for filter removal, sort controls, and action menu triggers. * Enhanced “More actions”/“More options” tooltips and aria-labels for API keys and access tokens. * Updated token scope selection and token banner close actions to use clearer tooltip messaging. * Wrapped panel close control with a tooltip and added an aria-label for clearer screen reader support. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
bc95a2f19a |
fix(studio): edge func exec time formatting in reports (#48539)
## 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? Fixes Edge Function Execution Time chart within our observability reports time formatting. This also fixes the non-hovered state which would lose the `ms` formatting. | Before | After | |--------|--------| | <img width="2160" height="652" alt="cleanshot_2026-07-29_at_02 15 53_2x" src="https://github.com/user-attachments/assets/cfd6dbc2-f283-4379-a133-581c76990cb5" /> | <img width="797" height="314" alt="Screenshot 2026-07-31 at 14 30 48" src="https://github.com/user-attachments/assets/f5f1ace5-b6ef-43db-aebd-e10d31631013" /> | <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Improved execution-time chart formatting with clearer millisecond values, thousands separators, and configurable precision. * Chart highlights now support custom value formatting alongside existing number, percentage, and byte formats. * **Bug Fixes** * Non-finite execution-time values now display safely as `0ms`. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
9b51678fcf |
Revert "feat: update mgmt api docs (#48282)" (#48545)
## What kind of change does this PR introduce?
Revert
## What is the current behavior?
#48282 auto-updated the mgmt API docs spec files
(`apps/docs/spec/api_v1_openapi.json`,
`apps/docs/spec/api_v2_openapi.json`,
`apps/docs/spec/common-api-sections.json`, and the deparsed transform
files).
## What is the new behavior?
Reverts those spec/transform files back to their state prior to #48282.
This reverts commit
|
||
|
|
00d12c305c |
Include Migration steps in changelog bodySection (#48496)
## 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? Feature / refactor ## What is the current behavior? The changelog entry parser extracts `## Migration steps` as a separate field (`migrationSteps`), and the `bodySection` stops before it. This requires consumers to handle migration steps separately from the main body content. ## What is the new behavior? The `bodySection` now includes `## Migration steps` as part of the rendered body content. The `migrationSteps` field has been removed from the `ChangelogEntry` type. The `bodySection` extraction now stops at internal-only planning sections (`## Rollout timeline`, `## Comms timeline`) instead of at migration steps, allowing migration steps to be included in the public-facing body. ## Additional context - Updated `parseChangelogEntryFile` to extract `bodySection` through migration steps, excluding only internal planning tables - Updated the `ChangelogEntry` type documentation to clarify that `bodySection` includes migration steps - Added a test case verifying that migration steps are included in the rendered body while internal sections are excluded - This simplifies the API by consolidating public body content into a single field https://claude.ai/code/session_01X5ikaawVPZwMT5C2dWUyJY <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Improvements** * Changelog entries now include all public content following the Body section, including relevant subsections and rollout information. * Migration guidance is included directly within the main changelog body for a clearer reading experience. * Internal notes, communications, and planning details remain excluded from displayed changelog content. * Unmatched internal markers now correctly hide all subsequent content from public changelogs. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
4adef69037 |
feat: update mgmt api docs (#48282)
This PR updates mgmt api docs automatically. Co-authored-by: phamhieu <689843+phamhieu@users.noreply.github.com> |
||
|
|
50e1eb7436 |
chore(eslint): bump eslint-config-next to v16 for useEffectEvent (#48458)
## 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? Chore / build (ESLint config upgrade + lint cleanup). ## What is the current behavior? `eslint-plugin-react-hooks` v5 (pulled in transitively by `eslint-config-next` v15) doesn't recognize stable `useEffectEvent`, so every effect that calls an effect-event handler needs an `eslint-disable react-hooks/exhaustive-deps` to silence a false positive. There are 30 such dead disables across Studio. ## What is the new behavior? Bumps `eslint-config-next` to v16, which pulls in `eslint-plugin-react-hooks` v7 whose `exhaustive-deps` understands `useEffectEvent`, and removes the 30 now-dead disable directives (and their orphaned explanatory comments). Supporting changes: - **Flat-config migration**: v16 is a native flat-config array (v15 was eslintrc), so `eslint-config-supabase` now spreads it directly instead of bridging through `FlatCompat`. - **React Compiler rules off**: v16 enables react-hooks v7's `recommended`, which layers the React Compiler lint rules on top of the two classic rules. These are switched off (derived dynamically from what next enables) to keep this change scoped to the `exhaustive-deps` improvement. - **Plugin-registration fallout** (v16 scopes plugin registration to a file glob rather than registering globally like FlatCompat did): stop re-registering `@typescript-eslint` (shared) and `jsx-a11y` (studio); scope our react / react-hooks / jsx-a11y rule overrides (studio, www) to v16's plugin glob so they don't error on files outside it (e.g. `.cjs`). - **Lint surface preserved**: v16's glob newly includes `.mts`/`.cts` (v15 didn't lint them), which surfaced pre-existing errors in tooling scripts. The shared config keeps the prior surface by leaving `.mts`/`.cts` unlinted; linting them is left as a separate change. - **Ratchet**: rebaselines `@tanstack/query/exhaustive-deps` 9 → 89. v15 forced next's `@babel/eslint-parser` onto `.ts` files, hiding these deps; v16 parses `.ts` with `@typescript-eslint/parser` and correctly surfaces the intentional `connectionString`-excluded-from-`queryKey` pattern. Worth a follow-up to review whether any are real cache-correctness bugs. - Drops three now-dead devDeps from `eslint-config-supabase`: `@eslint/eslintrc`, `@eslint/js`, `@typescript-eslint/eslint-plugin`. Verified locally: `turbo run lint` → 7/7 packages pass with 0 errors; Studio `lint:ratchet` passes; Prettier clean on changed files; typecheck unaffected. ## Additional context <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Refined linting configuration and removed outdated lint suppressions across Studio. * Updated Next.js linting support and refreshed related development configuration. * Expanded lint baseline coverage for query-related code. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |