<!-- ccr-slack-attribution -->
_Requested by **Francesco Sansalvadore, Nicole Kramer** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1785399057853249?thread_ts=1785399057.853249&cid=C0161K73J1J)_
## 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?
Refactor of the marketing site's legal pages, plus two small content
fixes (removal of duplicated dates, two heading corrections) and two
permanent redirects.
## What is the current behavior?
The documents linked from the Legal Hub are built three different ways:
- `/terms` and `/enterprise-terms` render a plain inline heading with no
breadcrumbs.
- `/sla`, `/support-policy`, `/aup` and `/privacy` are standalone MDX
pages carrying their own layout.
- `/legal/dpa` has a one-off centered heading and grid of its own.
On top of that, the documents that already have a version selector
*also* print a "Last Modified" line inside the document body, so the
same fact is stated twice on the page. On `/terms` and
`/enterprise-terms` the two statements disagree: the selector says
"Version 2 — May 6, 2026" while the body says "Last Modified: 1 May
2026".
`/privacy` handles its history differently again — earlier versions live
at their own archived URLs (`/privacy-260316` and `/privacy-250528`),
strung together by "Previous Version" links at the bottom of each page.
## What is the new behavior?
Every legal page now renders through one shell: `PageHeader` with a
`PageBreadcrumb`, so the Legal Hub is one click away from any document.
- The duplicate "Last Modified" rows are removed from the five versioned
documents. The version selector is now the single place a date appears.
- `/aup` and `/privacy` gain the version selector.
- `/privacy`'s three historical versions are now selectable from the one
page, and the two old archived URLs permanently redirect to it.
- `/sla` and `/support-policy` pick up the shell and breadcrumbs but
intentionally show neither a date nor a selector — neither document has
ever carried one, and Legal asked that the SLA stay that way for now.
Implementation-wise the canonical pattern is the one the Data Processing
Addendum page was already using: `DefaultLayout` > `NextSeo` >
`PageHeader` (with a `breadcrumb` slot) > `MDXProvider` >
`SectionContainer className="prose"` > `LegalDocVersions`. The
standalone MDX pages were moved to `apps/www/data/legal/<slug>/vN.mdx`
as bare content partials, with a new TSX shell taking over the original
route. No route changed except the two archived privacy pages, which
redirect.
Dates were carried across from the "Last Modified" lines being deleted
rather than invented: `/aup` becomes Version 1 — June 1, 2026, and
privacy v1/v2/v3 become May 28 2025, March 16 2026 and May 13 2026.
## Additional context
**This is a stacked PR.** It is sequenced behind three PRs that touch
the same files and should land first: the Terms of Service v3 bump, the
Enterprise SaaS Subscription Agreement v3 bump, and #48481 (DPA
effective date → August 1, 2026). #48481 edits the very "Last Modified"
line this PR removes from the DPA content file, so a trivial conflict
there is expected. This branch will be rebased onto master before it
leaves draft.
**Two contracts now contain a clause that no longer describes the
page.** `apps/www/data/legal/terms/v1.mdx` and `v2.mdx` — and the same
sentence in the MPPA and both integration-partner addenda — still read
"The date on which the Agreement was last modified will be updated at
the top of this Agreement". There is no longer a date in the document
body; it sits in the version selector above it. Left untouched here
because it is contract text, but Legal should re-word it.
**The date mismatch is resolved in favour of the selector.** On `/terms`
and `/enterprise-terms`, deleting the body line leaves May 6, 2026 as
the only date on the page. Nicole Kramer confirmed in Slack that May 6
is the correct date.
**Two headings change visibly**, to line up with the labels used on the
Legal Hub: "Terms of service" → "Terms of Service", and "Service Level
Agreements" → "Service Level Agreement".
**`/legal/dpa` now looks almost identical to
`/legal/customer-resources/data-processing-addendum`** — same heading,
same breadcrumb, different content. The legacy page is a PDF download
plus a signing flow and was deliberately left live, but the overlap is
more obvious than it was. Redirecting it to the versioned page is the
natural follow-up; it is not done here.
**Build verification was incomplete in this environment.** `pnpm
install` could not finish because `npm.jsr.io` is blocked by network
policy (403), so `next build` never gave a real signal. What did run and
pass:
- `tsc --noEmit` on `apps/www`, with output byte-identical to clean
master
- ESLint on every changed file — 0 errors
- Prettier using the repo's actual config
- a direct MDX compile of all 14 `data/legal/**/*.mdx` files using the
app's own MDX options
The one thing left unverified is webpack resolving
`ui-patterns/PrivacySettings` from the privacy content's new directory.
CI will confirm that.
Co-authored-by: Claude <noreply@anthropic.com>
<!-- ccr-slack-attribution -->
_Requested by **Nicole Kramer** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1785399555203219)_
## 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?
Content update — a new version of a published legal agreement.
## What is the current behavior?
The version selector on `/enterprise-terms` offers two versions of the
Enterprise SaaS Subscription Agreement: Version 2 (May 6, 2026) and
Version 1 (April 17, 2026). Version 2 is what the page shows by default.
## What is the new behavior?
**Before:** opening `/enterprise-terms` showed Version 2 — May 6, 2026.
**After:** it shows **Version 3 — August 1, 2026**. Versions 2 and 1 are
unchanged and still reachable from the dropdown (`?version=v2`,
`?version=v1`).
Two files change:
- **New** `apps/www/data/legal/enterprise-terms/v3.mdx` — the Version 3
text, transcribed from the source Word document supplied in the Slack
thread (`2026.07.29 - Supabase - Enterprise Terms.docx`).
- `apps/www/pages/enterprise-terms.tsx` — imports the new MDX and
prepends `{ id: 'v3', label: 'Version 3', effectiveDate: 'August 1,
2026', Component: V3 }` to the `versions` array. Since the array is
newest-first, v3 becomes the default.
## Additional context
### Transcription fidelity
The legal text was not edited, reworded, reordered, or corrected — only
re-rendered in the MDX conventions already used by `v1.mdx` and
`v2.mdx`. This was verified mechanically rather than by eye: markdown
markup was stripped from `v3.mdx` and the result diffed
paragraph-by-paragraph against text extracted directly from the source
document's OOXML.
- **137 paragraphs in the source, 137 in `v3.mdx`, 0 differing.**
- 14 top-level sections and 48 subsections, matching the source's
heading counts exactly.
- All 3 distinct URLs preserved, written as bare URLs per the existing
convention in this file family (remark-gfm autolinks them).
- Pure ASCII apart from 5 `§` characters in the 48 C.F.R. citations,
matching `v1.mdx`/`v2.mdx`.
- Prettier clean; no British spellings that would trip the US-locale
misspell check.
Formatting decisions worth knowing: the source document contains no bold
or italic runs at all, but `v1.mdx` and `v2.mdx` both bold defined terms
and section numbers, so v3 follows that house style for consistent
rendering across the three versions. The source also carries no date or
version line of its own; the `_Last Modified: 1 August 2026_` first line
is repo convention, matching how every other legal MDX in
`apps/www/data/legal/` is written.
### What changed from v2, in the legal text
Structure is identical — same 14 sections, same 48 subsection titles.
Five substantive prose changes:
1. **Preamble** — the effective date is now "the date of last signature
of an Order referencing these terms", replacing v2's unfilled
`[Deal.CloseDate]` merge-field placeholder. "Signature block below"
becomes "signature block in an Order".
2. **New § 1.4 "Data Processing Addendum"** — defined by reference to
`https://supabase.com/legal/customer-resources/data-processing-addendum`,
with a carve-out for a separately executed agreement covering the same
subject matter. Former § 1.4–1.12 shift to § 1.5–1.13; nothing was
removed or reordered.
3. **§ 7.2 Data Processing** replaced — v2's GDPR / UK GDPR / Swiss
clause is gone, replaced by a general compliance paragraph that
incorporates the Data Processing Addendum into the Agreement.
4. **§ 13.3** cross-reference corrected from Section 10.1 (Mutual) to
Section 10.3 (Limited Warranty), which is the clause the refund remedy
actually depends on.
5. **§ 14.4 Amendment and Modification** rewritten — v2 required a
writing executed by both Parties; v3 gives Supabase a unilateral right
to modify by posting a revised version at
`https://supabase.com/enterprise-terms`, effective the first day of the
following calendar month, or at the start of the next Renewal
Subscription Period for Orders with a fixed Subscription Period of 12
months or longer, with non-renewal under § 13.1 as Customer's sole and
exclusive remedy.
Two things carried over verbatim from the source rather than fixed,
since the text must not be edited: § 7.2 is now near-duplicative of §
7.1 (three of its four sentences repeat § 7.1 almost word for word), and
"HIPAA" is used in both § 7.1 and § 7.2 without being defined.
One pre-existing inconsistency, unrelated to this change: `v2.mdx`'s own
first line reads `_Last Modified: 1 May 2026_` while the page lists
Version 2's effective date as `May 6, 2026`. Left alone here.
### Overlap with concurrent work
Two sibling changes are in flight for the same requester today — one
adjusting the new Data Processing Addendum page's dates, one publishing
Terms of Service v3. Neither touches these two files, but all three
touch the `apps/www/data/legal/` tree, and note that § 1.4 above now
links to the DPA page.
[#48483](https://github.com/supabase/supabase/pull/48483) removes the
`_Last Modified:` first line from every versioned legal MDX, on the
principle that the version selector should be the only place a date
appears. It is sequenced to land after this PR, and its file list
predates `v3.mdx`. A three-way merge of the two branches is clean, but
whoever rebases #48483 should add
`apps/www/data/legal/enterprise-terms/v3.mdx` to that removal —
otherwise v3 keeps a body date after v1 and v2 lose theirs.
The `_Last Modified: 1 May 2026` / `May 6, 2026` mismatch on v2 is also
handled in #48483 and is deliberately left alone here, so the same line
isn't touched by two PRs.
Co-authored-by: Claude <noreply@anthropic.com>
<!-- ccr-slack-attribution -->
_Requested by **Nicole Kramer** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1785399344523739)_
## 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?
Content update — adds a new version of the Terms of Service to the
marketing site (`apps/www`).
## What is the current behavior?
`/terms` offers two versions in the version dropdown: **Version 2 (May
6, 2026)**, shown by default, and **Version 1 (July 11, 2025)**.
## What is the new behavior?
`/terms` shows **Version 3 (August 1, 2026)** by default. Version 2 and
Version 1 are still selectable from the version dropdown
(`/terms?version=v2`, `/terms?version=v1`) and are completely unchanged.
Two files:
- **New:** `apps/www/data/legal/terms/v3.mdx` — the full v3 Terms of
Service.
- **Changed:** `apps/www/pages/terms.tsx` — imports `V3` and prepends it
to the `versions` array. Newest-first ordering is required, because
`LegalDocVersions` treats `versions[0]` as the latest.
## Additional context
### The legal text is a verbatim transcription — please review it as
such
It comes from a Word document supplied by Legal, converted with pandoc
and then verified character-exact against the source: **8055 words, 136
blocks, 0 word-level diffs**. Prettier was run over the file and changed
nothing.
**Known typos in the source document were deliberately preserved. Please
do not correct them in review:**
- §1 Definitions contains a **duplicate `d.`** — one `d.` introduces the
Data Processing Addendum definition and the very next item is also
lettered `d.` for the Documentation definition. The list therefore runs
a, b, c, d, d, e … Re-lettering would shift internal cross-references,
so it is left exactly as drafted.
- §12(d) Survival contains a **doubled “and”** — *and Sections 1, 5, 6,
8, 9, 10, 11, and 13, and 14 survive*.
Also preserved verbatim from the source: curly quotes on the Data
Processing Addendum definition only (every other defined term uses
straight quotes), and non-breaking spaces around the hyperlinks.
### Date
The source document carries **no date line of its own**, even though its
§14(d) states that the last-modified date *will be updated at the top of
this Agreement*. August 1, 2026 was specified by the requester, and is
placed in the `_Last Modified: 1 August 2026_` line at the top of the
MDX, following the v1/v2 convention.
As with v1 and v2, the `.mdx` uses `D Month YYYY` while `effectiveDate`
in `terms.tsx` uses US long form (`August 1, 2026`). That split is
pre-existing and intentional.
### New DPA link
§1 of v3 links the Data Processing Addendum page at
`/legal/customer-resources/data-processing-addendum`. This link is new
relative to v2, and the DPA is also incorporated by reference in §7(b).
### No overlap with the concurrent DPA branch
This PR touches only `apps/www/data/legal/terms/v3.mdx` and
`apps/www/pages/terms.tsx` — **zero file overlap** with the branch
updating the DPA page dates.
### Reviewer checklist
- 14 numbered sections (1 Definitions → 14 Miscellaneous), 44 lettered
subsections, 6 roman sub-subsections.
- ALL-CAPS acceptance block at the top; ALL-CAPS AI disclaimer at the
end of §9(b); ALL-CAPS §11 Limitations of Liability.
- Three link targets intact: the DPA page,
`https://supabase.com/privacy`, and `mailto:legal@supabase.io` (×3).
Co-authored-by: Claude <noreply@anthropic.com>
<!-- ccr-slack-attribution -->
_Requested by **Nicole Kramer** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1785399057853249?thread_ts=1785399057.853249&cid=C0161K73J1J)_
## 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?
Content update — moves the Data Processing Addendum's effective date out
by two months.
## What is the current behavior?
The DPA page at `/legal/customer-resources/data-processing-addendum`
shows "Version 1 — June 1, 2026" in the version selector, and the
document body opens with "Last Modified: 1 June 2026".
## What is the new behavior?
Both now read August 1, 2026: the version selector shows "Version 1 —
August 1, 2026" and the document opens with "Last Modified: 1 August
2026".
## Additional context
The page renders a hardcoded `versions` array through the shared
`LegalDocVersions` component, so the effective date lives in the TSX
file; the "Last Modified" line is simply the first line of the MDX
content file. Both were updated, each keeping its file's existing date
format (`M D, YYYY` in the TSX, `D Month YYYY` in the MDX). No other
content changed.
### Not changed — flagging for confirmation
The same June 1, 2026 date appears on a few other surfaces. I left them
alone because they are either different documents or point at a dated
PDF asset that would need to be re-generated and re-uploaded. Let me
know if any of these should move too:
- `apps/www/pages/legal/dpa.tsx` — the legacy `/legal/dpa` page, which
links `Supabase+DPA+260601.pdf`
- `apps/studio/components/interfaces/Organization/Documents/DPA.tsx` —
Studio links that same PDF
- `apps/www/pages/legal/customer-resources/subprocessor-list.tsx` — the
subprocessor list (`June-1-2026.pdf` and a "June 1, 2026" label); a
separate document
- `apps/www/pages/aup.mdx` — the Acceptable Use Policy, "Last Modified:
1 June 2026"; a separate document
Co-authored-by: Claude <noreply@anthropic.com>
## 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?
- Updates the `description` copy of the `realtime-postgres-changes`
entry in `apps/www/data/features.tsx`
- Documents column selection as a key feature
- Clarifies that filters can be applied on one or more columns
- Removes a stale closing paragraph and normalizes the `Benefits`
heading
## What is the current behavior?
The Realtime Postgres Changes feature page lists five key features, does
not mention column selection, describes filtering without noting
multi-column support, and ends with a summary paragraph that is not part
of the approved feature copy.
## What is the new behavior?
- Key feature 3 reads "Granular filtering: Apply filters on one or more
columns to receive only relevant changes."
- New key feature 6 reads "Column selection: Opt in to receive only the
columns you choose in the event payload, with the primary key always
included."
- The `## Benefits:` heading is now `## Benefits`
- The closing paragraph "Supabase's Realtime Postgres Changes feature
provides a powerful tool for creating responsive, real-time applications
while leveraging the full capabilities of your Postgres database." is
removed
## Additional context
- The Realtime team shipped AND filter composition, expanded filter
operators, and column selection on 2026-07-02. Docs were updated on
2026-07-06.
- This change brings the feature page in line with the Notion Features
Page, which is the source of truth for feature page copy.
- Filipe Cabaço (Realtime) approved the content.
- `blogUrl` is intentionally not added in this PR. It will follow
separately once the launch blog post is live.
- Scope is limited to the `realtime-postgres-changes` entry. No other
feature entries were touched and the file was not reformatted. `prettier
--check` passes on the file.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Updated the “Realtime - Postgres changes” feature documentation with
clearer wording for granular filtering and row-level security
integration.
* Added a new bullet explaining column selection, including primary key
inclusion.
* Improved formatting in the benefits section and removed outdated
closing text.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ana <ana1337x@users.noreply.github.com>
<!-- ccr-slack-attribution -->
_Requested by **Nicole Kramer** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1784836047880599?thread_ts=1784836047.880599&cid=C0161K73J1J)_
## What kind of change does this PR introduce?
Feature — a new marketing-site legal page.
## What is the current behavior?
There is no Data Processing Addendum page under Customer Legal
Resources. The only DPA content is a legacy `/legal/dpa` page that links
out to a static PDF.
## What is the new behavior?
**Before:** no DPA page under Customer Legal Resources; DPA content
lived only on the legacy `/legal/dpa` page (static PDF link).
**After:** a new DPA page at
`/legal/customer-resources/data-processing-addendum`, styled like the
Terms of Service page — a version dropdown ready for future versions, a
"Last Modified: 1 June 2026" line, and the full DPA text (14 clauses + 3
schedules). A "Data Processing Addendum" link is added to the Legal Hub
under Customer Legal Resources, using the same FileText icon as Terms of
Service.
**How:**
- New versioned MDX at
`apps/www/data/legal/customer-resources/data-processing-addendum/v1.mdx`.
- New page
`apps/www/pages/legal/customer-resources/data-processing-addendum.tsx`,
modeled on the ToS / integration-partner-addendum pattern and rendering
via the shared `LegalDocVersions` component (`versions` entry: `{ id:
'v1', label: 'Version 1', effectiveDate: 'June 1, 2026' }`).
- Legal Hub link added in `apps/www/pages/legal/index.tsx` with `type:
'document'`.
## Preview
Please review on the Vercel preview deploy. Two URLs to check:
- `/legal/customer-resources/data-processing-addendum`
- `/legal`
## Notes for reviewers
- Content was converted faithfully from the provided .docx (normalized
word-content diff: 5678/5678 words, zero missing/extra). The source has
no tables.
- The legacy `/legal/dpa` page (static PDF link) is left untouched —
flag if it should be redirected to the new route or retired.
- Typecheck/lint could not be run in the build sandbox due to an
unrelated JSR-registry 403 during `pnpm install`; Prettier was run and
passes. Please confirm CI (typecheck + lint) is green.
## Additional context
Version dropdown is single-version for now and is set up to accept
future DPA versions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
_Generated by [Claude
Code](https://claude.ai/code/session_01JA6SATQGc9J8kApnH2NvCz)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
## What kind of change does this PR introduce?
Sync changelog from private supabase/changelog.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Changelog entries now come from the structured changelog repository.
* Added filters for change type, product stage, and self-hosted impact.
* Updated badge UI for affected products and change types with filter
links.
* Changelog detail sidebar now shows lifecycle stage, sunset dates, and
self-hosted impact (when available).
* **Improvements**
* Product category discovery and filtering now use affected products.
* Discussion links show only when legacy discussion data is present.
* RSS feeds and generated changelog markdown now use the updated
metadata.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## What kind of change does this PR introduce?
Bug fix
## What is the current behavior?
The "Join us on Discord" buttons are broken in two places:
- **Studio support sidebar** (`HelpPanel`): on light mode the button
background is not white, so the intended white button with purple icon
and text is broken.
- **www `/support` page** (shared `secondary` button variant): the text
disappears on hover, and the Discord icon is never rendered (always
invisible). Both issues occur on light and dark mode.
## What is the new behavior?
- **Studio support sidebar**: force a white background on all colour
schemes via `bg-white hover:bg-white/90`, matching the existing pattern
in `DiscordCTACard`. The purple icon and text now render correctly on
light mode.
- **Shared `secondary` button variant** (`packages/ui`):
- The icon container used `text-border-muted`, which blended into the
`bg-foreground` button, so the icon was invisible. Changed to
`text-background` to match the button's text colour.
- The hover state used `text-border-stronger`, which had no contrast
against the background, so text disappeared on hover. Changed to
`text-background/80`.
- Removed the ineffective `fill="var(--background-default)"` from
`IconDiscord` on the `/support` page — the SVG path uses `currentColor`,
so the fill prop had no effect.
These `secondary` variant fixes apply globally, so other secondary
buttons benefit too.
| Before | After |
| --- | --- |
| <img width="868" height="642" alt="CleanShot 2026-07-07 at 15 39
42@2x"
src="https://github.com/user-attachments/assets/6897b6ba-311e-43c7-bb5a-7b70017a54cc"
/> | <img width="906" height="610" alt="CleanShot 2026-07-07 at 16 21
31@2x"
src="https://github.com/user-attachments/assets/16104cf0-8ed1-4857-8467-532c1f7fdb5f"
/> |
| <img width="636" height="620" alt="CleanShot 2026-07-07 at 15 24
53@2x"
src="https://github.com/user-attachments/assets/75f55f6c-eaa7-45ee-94fe-eac513126eff"
/> | <img width="656" height="404" alt="CleanShot 2026-07-07 at 16 24
23@2x"
src="https://github.com/user-attachments/assets/35649b23-fcdd-42fd-8140-e4aaf394667e"
/> |
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
* **Style**
* Refreshed secondary button styling for a more consistent look,
including updated hover and loading text/icon colors.
* Improved the “Join us on Discord” button’s background and hover
appearance.
* Simplified the Discord card’s icon rendering to rely on the default
icon styling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Info architecture change around "Partners"
The www "integrations" now become more partner-driven.
`/partners/integrations` -> now Partner Catalog under
`/partners/catalog` (old links redirect to new paths)
Moved them close together in the nav dropdown and in the footer
<img width="494" height="336" alt="Screenshot 2026-07-09 at 11 06 41"
src="https://github.com/user-attachments/assets/a875fef0-0ab8-47ca-8756-d658b27c4892"
/>
<img width="1149" height="665" alt="Screenshot 2026-07-09 at 11 09 48"
src="https://github.com/user-attachments/assets/9631bb72-fe25-4fb4-b1af-9f14a37d02e7"
/>
## /partners
This page remains untouched in this PR, updates to layout, content and
intake form are delegated to #47874
## /partners/catalog
Listed in the
[catalog](https://zone-www-dot-com-git-feat-www-partners-pages-supabase.vercel.app/partners/catalog)
are now partners. Some partners match with a listing.
<img width="1207" height="866" alt="Screenshot 2026-07-09 at 11 14 17"
src="https://github.com/user-attachments/assets/b65216be-976f-4ef5-91f8-1ad49da87b45"
/>
## /partners/catalog/[partner]
Each partner can have one or more "listings" which are either
- simple guides
- foreign data wrappers
- dashboard integrations
Integrations available in the dashboard now all have a prominent
"Install integration" cta to open it in the dashboard [integrations
page](https://supabase.com/dashboard/project/_/integrations).
<img width="1269" height="776" alt="Screenshot 2026-07-09 at 11 16 51"
src="https://github.com/user-attachments/assets/3c7bb715-ffce-4d0a-905f-9a660c3b1f5a"
/>
## Docs
Update docs →
[Preview](https://docs-git-feat-www-partners-pages-supabase.vercel.app/docs/guides/integrations)
- remove "Supabase marketplace"
- use "Dashboard Integrations and Partner Catalog
- update integrations in sidenav to link to updated /partners/catalog/**
listings
<img width="1520" height="696" alt="Screenshot 2026-07-15 at 12 54 47"
src="https://github.com/user-attachments/assets/9f5a2794-4536-4299-97df-9732d3d75b4c"
/>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a Partner Catalog experience with search, category filters,
official-partner toggle, responsive filtering (sidebar + bottom sheet),
grid/list views, and featured partners.
* Added Partner Catalog detail pages with tabbed listings, MDX-rendered
content, image gallery with zoom overlay, and “add/install” actions.
* **Improvements**
* Updated “Become a Partner” layout and form support for prefilled
values and checkbox-group fields (including validation).
* Updated navigation/footer/docs and partner tile links to use Partner
Catalog routes; expanded redirects from legacy integrations paths.
* Added public agent-skills discovery manifest.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Alan Daniel <stylesshjs@gmail.com>
Co-authored-by: Alex Hall <alex.hall@supabase.io>
Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io>
## Summary
- Adds 8 new investor logos: Accel, Craft, Figma, Georgian, GIC, Peak
XV, Salesforce Ventures, Stripe
- Reorders lead investor grid to match design mockup (3 rows of 4)
- Adds per-logo `scale` field to control logo size within each cell
- Adds `grayscaleOnly` field for Salesforce Ventures to preserve tonal
contrast (prevents wordmark from being hidden by `contrast-0` filter)
## Test plan
- [ ] Visit /company and verify all 12 investor logos render correctly
across 3 rows
- [ ] Check logo sizing and order matches the mockup
- [ ] Verify Salesforce Ventures wordmark is visible inside the cloud
shape
- [ ] Check dark mode
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Expanded and reordered the “Our investors” lead cards with additional
entries (including Stripe, Salesforce Ventures, and others).
* Enhanced logo presentation options for lead cards with per-investor
sizing/positioning controls.
* **Bug Fixes**
* Improved lead investor card image rendering by removing internal
scrolling and using an overflow-hidden container with scale-based
sizing.
* Preserved the existing logo filter behavior (opacity-only when
configured, grayscale-only when selected, otherwise the default contrast
treatment).
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
Some customer pages didn't show og-images properly because satori breaks
using svgs.
This PR replaces all customer logos from svgs to pngs.
They're all exported at least 2x to 4x so image quality shouldn't get
worse anywhere.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Updated several customer story pages and related listings to use PNG
logo assets, improving logo rendering consistency across the site.
* Refreshed the customer RSS feed metadata and removed a duplicate entry
so the feed stays up to date and cleaner.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- Updated community stats: 10M+ developers, 100K+ GitHub stars, 200K+
followers, 50K+ SupaTroopers
- Updated funding copy from \"over \$116 million\" to \"\$1 Billion\"
- Added Supabase Series F blog post to Press section
- Changed press articles grid from 3-column to 4-column to match
podcasts layout
- Reduced community stats font size (text-4xl → text-3xl) and added
right padding to prevent overlap with dividers
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
* **Bug Fixes**
* Improved spacing and borders in the community stats grid for cleaner
end-of-list alignment.
* **Style**
* Reduced the community stat number size for better readability.
* Updated the Press articles layout on large screens to show more items
per row.
* **Content Updates**
* Refreshed community stat counts for Developers, GitHub, Twitter, and
Discord.
* Updated “Our investors” copy to **$1 billion**.
* Added **“Supabase Series F”** as the first Press article.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
## 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 / content update to the Legal Hub (`apps/www`).
## What is the current behavior?
The `/legal` hub page (`apps/www/pages/legal/index.tsx`) has a single
section, "Partner Legal Resources." The customer-facing legal documents
(Terms of Service, Support Policy, Service Level Agreement) are only
reachable from the footer "Company" column, which is cluttered.
## What is the new behavior?
- Adds a new **"Customer Legal Resources"** section to the `/legal` hub,
placed **above** "Partner Legal Resources," with links to:
- Terms of Service → `/terms`
- Support Policy → `/support-policy`
- Service Level Agreement → `/sla`
These use the same formatting (document icon + link) as the existing
"Master Partner Program Agreement" entry.
- Removes those same three links (Terms of Service, Support Policy,
Service Level Agreement) from the footer **"Company"** column
(`apps/www/data/Footer.ts`) to declutter it. The "Legal" hub link,
Privacy Policy, Privacy Settings, and Acceptable Use Policy all remain.
The `/terms`, `/support-policy`, and `/sla` URLs are unchanged and
continue to operate exactly as they do today — this only changes where
they're surfaced in navigation.
Note: per discussion, the hidden `/enterprise-terms` page was
intentionally **not** linked from the public hub; it remains
`noindex/nofollow` and reachable only by direct URL.
## Additional context
Visual result (Customer section above Partner section, three matching
links) and footer cleanup match the requested design. No routing,
redirect, or page-content changes.
---
_Generated by [Claude
Code](https://claude.ai/code/session_015kQyGkM9s9XEbA3HSLpeku)_
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a **“Customer Legal Resources”** section to the legal resources
page with links to **Terms of Service**, **Support Policy**, and
**Service Level Agreement**.
* **UI Updates**
* Updated the legal page branding from **“Legal”** to **“Legal Hub”**
and adjusted the layout to a more spacious two-column presentation.
* Updated the footer **Company** links by replacing **“Legal”** with
**“Legal Hub”** and removing the Terms/Support/Service Level links from
that set.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude <noreply@anthropic.com>
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.
YES/NO
## What kind of change does this PR introduce?
Bug fix, feature, docs update, ...
## What is the current behavior?
Please link any relevant issues here.
## What is the new behavior?
Feel free to include screenshots if it includes visual changes.
## Additional context
Add any other context or screenshots.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Refreshed theming across the UI to use modern color expressions and
shared theme variables (including OKLCH-based gradients), improving
consistency for charts, code blocks, overlays, icons, and decorative
backgrounds.
* **Bug Fixes**
* Improved light/dark color and gradient consistency across axis/grid
styling, reference lines, buttons/badges, sidebar accents, loaders, and
other visual components.
* **Documentation**
* Updated styling/theming guidance to align with the revised semantic
token system and the updated theme variable usage patterns.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
### Logo positioning bug on Safari
#### Before
<img width="1538" height="1404" alt="CleanShot 2026-07-01 at 07 11
55@2x_b0d735b7df6470afb861f4e82cfeed554743cec621475197e07ff39a98c5c506"
src="https://github.com/user-attachments/assets/dc8483bd-5a2a-4d89-9b90-d0ab3529b4b5"
/>
#### After
<img width="1177" height="526" alt="Screenshot 2026-07-01 at 15 25 59"
src="https://github.com/user-attachments/assets/e5ab66eb-56eb-4f1b-8a66-783aafad069d"
/>
### Uniform h1 styling
#### Before
Font-weight too heavy
<img width="721" height="504" alt="Screenshot 2026-07-01 at 15 55 53"
src="https://github.com/user-attachments/assets/4dc4e157-f746-4626-9ec7-5e893d7155ba"
/>
#### After
<img width="693" height="410" alt="Screenshot 2026-07-01 at 15 56 04"
src="https://github.com/user-attachments/assets/c012d6e5-0889-4466-b2b2-56d1c9516e27"
/>
### AI Builders platform card
### Before
<img width="675" height="573" alt="Screenshot 2026-07-01 at 16 18 31"
src="https://github.com/user-attachments/assets/a34e2fde-115b-45e8-8d44-9fc32c22c0a1"
/>
### After
<img width="640" height="576" alt="Screenshot 2026-07-01 at 16 18 23"
src="https://github.com/user-attachments/assets/45ebf1c7-6508-40de-a755-dda17824979a"
/>
### Logo theme-awareness on 404 page
#### Before
<img width="1053" height="670" alt="Screenshot 2026-07-02 at 11 22 45"
src="https://github.com/user-attachments/assets/d1f45cc8-00ad-48ad-a21a-3b92bf6097f0"
/>
#### After
<img width="1053" height="666" alt="Screenshot 2026-07-02 at 11 22 28"
src="https://github.com/user-attachments/assets/8b6435aa-da87-46f3-9d5c-750f8222edb1"
/>
---
Plus other minor padding/spacing issues:
- remove customer stories in homepage
- use correct container width and align "Use Supabase with [framework]"
section
- restore default `--font-sm` sizing as it resulted too small for www
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes / UI Improvements**
* Refined spacing, layout, and responsive styling across multiple
homepage sections.
* Improved featured logo positioning and adjusted community/hero copy
sizing.
* Updated site typography for better readability and wrapping.
* Refreshed the 404 experience with a smoother reveal animation and
consistent layout.
* Updated deep dark-mode behavior to apply only during launch weeks.
* **Performance**
* Lazy-loaded multiple homepage sections to improve initial load and
perceived speed.
* **SEO / New Features**
* Added a dedicated 404 page that disables indexing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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 some minor fixes on the stats from state of startups servey 2026.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Updated several survey narrative captions with refreshed statistics
and wording.
* Adjusted the displayed percentages for age cohort trends, Europe
growth, model provider usage, and AI-written code adoption.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
## Problem
Our `<Button>` component breaks the default `button` contract by
redefining the `type` prop to set its variant (`primary`, `default`,
etc) instead of the button type (`submit`, `button`, etc).
This is confusing and forces to write more code when using it with
shadcn components that expect/inject the standard button props.
## Solution
- rename the `type` prop to `variant`
- rename the `htmlType` prop to `type`
- propagate the changes where necessary
- format code
## How to test
As this is just prop renaming, if it builds it's ok
---------
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
## 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?
Update the career page stats
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Updated the career page company metrics: team members increased to
350+, countries expanded to 60+, and total capital raised updated to
$1B.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
## 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?
Fixed a missing link in the Hosted Postgres page
Added the missing solution pages to the Footer
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Updates**
* Restructured footer Solutions section to dynamically include
additional solution categories, providing more comprehensive navigation
options
* Enhanced Hosted Postgres feature description with a direct link to
Multigres for improved accessibility
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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?
Created a new solution page for Hosted Postgres.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added Hosted Postgres solution with a dedicated landing page (hero,
features, pricing comparison, security, results, CTAs)
* Introduced a reusable pricing comparison table component
* Enhanced feature grids to support optional headers and richer icon
options
* **Updates**
* Updated company stats (databases managed → 44M, daily launches → 200K,
registered developers → 9M)
* Added Hosted Postgres link to Solutions navigation
* **Refactor**
* Consolidated and exported component prop interfaces for cleaner prop
contracts
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Terry Sutton <saltcod@gmail.com>
## Context
As per PR title
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/4cf07471-a0c1-449d-9759-a0ccb3456e09"
/>
Also resolves FE-3565
Closes mobile menu when a link is clicked
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Improvements**
* Mobile menu now closes reliably when selecting more navigation items
(Modules, various Developers/Solutions links and footer links).
* Enhanced link focus and interaction behavior in the mobile menu for
clearer keyboard/touch feedback.
* **New Features**
* Navigation links can now accept optional click handlers, enabling
custom onClick behavior.
* **Refactor**
* Internal reorganization of mobile menu styling and link composition to
simplify maintenance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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?
The 2026 State of Startups page is missing several selected pull quotes,
the Outlook chapter ends on a single static quote, and the "Thank you"
footer still renders the 2025 participants list as a static wrap of ~60
companies.
## What is the new behavior?
- Wires the six selected pull quotes for chapters 1–4 and 7 (with
section-level support so the Solo Founders quote sits inside its
section). `SurveyPullQuote` now accepts optional author position and
avatar.
- Replaces the Outlook chapter quote with a new
`SurveyPullQuoteCarousel` that rotates between four labelled quotes
(Burn out, Pace of change, Competition, Runway) and reuses the existing
stipple/checker timer-bar pattern.
- Replaces the participants list with all 326 verified 2026 entries and
renders them via a new `ParticipantsCarousel` — five horizontal marquee
rows scrolling at different speeds and alternating directions, pausing
on hover, with edge fades and `prefers-reduced-motion` support.
## Additional context
Participants list sourced from the verified
`state-of-startups-2026-companies-software-verified.csv` export.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Rotating quote carousels for survey chapters with progress indicators
and subtle animations
* Animated participants display as multi-row scrolling marquees
* Optional author position and avatar shown with quotes
* Reduced-motion support to disable animations
* **Updates**
* Refreshed State of Startups 2026 content and expanded participants
list
<!-- review_stack_entry_start -->
[](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/46401?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)
<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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 — ports real 2026 survey data and narrative into the existing
`apps/www/app/state-of-startups` page.
## What is the current behavior?
The 2026 page renders the pre-launch `<RegisterContent />` signup form
(`SHOW_RESULTS = false`), and the 2026 chart components still query
`responses_2025` via the unsuffixed 2025 RPCs. The chapter narrative in
`state-of-startups-2026.tsx` is placeholder copy cloned from 2025, and
there are no charts for any of the new-in-2026 survey questions (auth
provider, share of AI-generated code, paid AI/product subscriptions,
agent building, MCP adoption).
## What is the new behavior?
- Flips `SHOW_RESULTS` to `true` so `/state-of-startups` renders
`<StateOfStartups2026Content />`.
- Repoints the 14 carry-over chart components to `responses_2026` and
calls `_2026`-suffixed RPC siblings (the original 2025 RPCs stay intact
so the 2025 page can live at its own URL).
- Adds 5 new chart components — `AuthProviderChart`,
`AICodebasePercentChart`, `PaidSubscriptionsChart`,
`BuildingAgentsChart`, `MCPAdoptionChart` — and wires them into
`SurveyChapterSection`'s chart registry.
- Rewrites `state-of-startups-2026.tsx` into 8 chapters with real 2026
narrative, pull quotes, and summarized answers from the source-of-truth
`supabase/state-of-startups` repo.
- Adds `.context/**` to `.prettierignore` so the scratch directory
holding the companion SQL migrations is ignored.
## Additional context
Backend changes live in the separate `supabase/state-of-startups` repo /
project `iddgenoqmqztnnefcbwp`: a `responses_2026` table, 5 new
2026-only RPCs, and 14 `_2026`-suffixed siblings of the existing RPCs
(drafts staged under `.context/sos-2026-survey-sql/` locally, not in
this PR). This PR's chart fetches will error until those migrations are
applied and `2026-responses.arrayified.csv` is loaded.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Released State of Startups 2026 results with a year selector,
preloaded results cache for faster viewing, and hourly revalidation.
* Added new interactive charts (AI codebase share, auth providers,
biggest challenges, building agents, MCP adoption, paid subscriptions,
location) and updated many charts for 2026; charts now show “added in
2026” when not available.
* **UX**
* Reworked page layout: floating table of contents relocated, year
toggle added, and animations simplified for smoother transitions.
* **Documentation**
* Restructured survey narrative into new thematic chapters, revised
chapter content, stats, and visuals.
* **Chores**
* Updated formatting ignore rules to skip generated/context files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- Adds a reusable `<LegalDocVersions />` component (dropdown below the
page header) that swaps the active legal doc version inline via shallow
query-param routing (`?version=v1`).
- Converts `/terms` and `/enterprise-terms` from MDX to TSX pages and
moves their content into versioned MDX under
`apps/www/data/legal/<doc>/v1.mdx`.
- Seeds `v2.mdx` for both docs as a copy of v1 with the effective date
bumped to 6 May 2026 — the actual v2 language edits from legal will land
in a follow-up commit.
## Behavior
- `/terms` and `/enterprise-terms` default to v2 (latest); search
engines and bare URLs always see the latest.
- `/terms?version=v1` (and equivalent for enterprise) renders v1.
- Selecting a version updates the URL via `router.replace({ shallow:
true })` — no full page reload, browser back/forward works.
- Selecting the latest version clears the `version` query param.
- Existing `/docs/company/terms → /terms` redirect still works.
`noindex/nofollow` preserved on `/enterprise-terms` (both via meta and
the existing header rule).
## Out of scope
- The 5 v2 provision edits per agreement (lands in a follow-up once
Legal hands over the final language).
- `/privacy` and other legal pages — those keep their current pattern.
Linear:
[FE-3121](https://linear.app/supabase/issue/FE-3121/update-legal-terms-pages-and-add-version-selector)
## Test plan
- [ ] Visit `/terms` — defaults to v2, dropdown shows "Version 2 — May
6, 2026" and "Version 1 — July 11, 2025"
- [ ] Visit `/terms?version=v1` — renders v1
- [ ] Select v1 from the dropdown — URL becomes `?version=v1`, content
swaps without full page reload (no document request in Network tab)
- [ ] Select v2 — URL drops the `version` param, latest renders
- [ ] Browser back/forward steps through prior selections
- [ ] Repeat the above on `/enterprise-terms`
- [ ] Confirm `/enterprise-terms` is still `noindex, nofollow`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Version selector and new Terms & Enterprise Terms pages allowing users
to switch between historical agreement versions.
* MDX-based legal documents now render as components for improved
content loading.
* **Documentation**
* Added v2 Terms and v2 Enterprise subscription agreements; v1 documents
adjusted and typography normalized for consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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?
Content update: new blog post and feature page copy refresh for
Branching.
## What is the current behavior?
- No blog post exists announcing no-Git branching as the default
workflow.
- The Branching feature page (`/features/branching`) references
"Branching 2.0 (currently in public alpha)" and frames dashboard
branching as secondary to Git-based branching.
## What is the new behavior?
- New blog post: "Branching without Git is now the default"
(`apps/www/_blog/2026-04-branching-without-git-is-now-the-default.mdx`)
- Updated feature page (`apps/www/data/features.tsx`):
- Subtitle: "Test and preview changes using Supabase Branches." → "Test
schema changes without touching production."
- Intro: removes stale alpha framing; leads with dashboard branching as
the default.
- New "Two ways to branch" section covering dashboard and Git-based
workflows side by side.
- "When to use branching" replaces old Benefits/Valuable-for sections;
adds AI agents as a use case.
## Additional context
N/A
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Dashboard-based branching is now the default, letting you create
branches, edit schemas, review diffs, and merge to production without
Git.
* Two branching options offered: Dashboard branching or Git-based
branching (both supported).
* New pg-delta schema diff engine (alpha) powers automatic migration
generation; available in CLI behind a flag.
* AI-driven workflows supported for automatic branch creation and merge
actions.
* **Documentation**
* Updated guides and blog post explaining the new branching options,
workflow, and getting started links.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ana <ana1337x@users.noreply.github.com>
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.
YES
## What kind of change does this PR introduce?
New case study for Cofounder (General Intelligence). Plan is to publish
when they launch on Monday.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a new Cofounder customer story page with full article, quotes,
assets, and next-steps
* Inserted Cofounder into the customer listings and site feeds
* **UX**
* Product filter labels now show "Supabase for Platforms" for the
platforms product
* **Chores**
* Updated RSS feed metadata to include the new story
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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?
Adding a new Feature page for Custom Identity Providers
## What is the current behavior?
There is no feature page for Custom Identity Providers.
## What is the new behavior?
Adds a Custom Identity Providers entry to features.tsx, covering both
Custom OIDC Providers (auto-discovery via issuer URL) and Custom OAuth2
Providers (manual endpoint configuration). The page lives at
/features/custom-oidc-providers and links to the existing docs at
/docs/guides/auth/custom-oauth-providers.
## Additional context
N/A
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a "Custom Identity Providers" feature card and documentation
entry to explain integrating custom OIDC providers; now generally
available and supported for self‑hosted deployments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ana <ana1337x@users.noreply.github.com>
This PR migrates the whole monorepo to use Tailwind v4:
- Removed `@tailwindcss/container-queries` plugin since it's included by
default in v4,
- Bump all instances of Tailwind to v4. Made minimal changes to the
shared config to remove non-supported features (`alpha` mentions),
- Migrate all apps to be compatible with v4 configs,
- Fix the `typography.css` import in 3 apps,
- Add missing rules which were included by default in v3,
- Run `pnpm dlx @tailwindcss/upgrade` on all apps, which renames a lot
of classes
- Rename all misnamed classes according to
https://tailwindcss.com/docs/upgrade-guide#renamed-utilities in all
apps.
---------
Co-authored-by: Jordi Enric <jordi.err@gmail.com>
This PR preps the monorepo for a migration to Tailwind v4:
- Bump all Tailwind dependencies and libraries to the latest possible
version, while still compatible with Tailwind 3.
- Cleans up obsolete Tailwind 3 specific options and configs.
- Cleans up unused CSS files and fixes the CSS imports.
- Migrates all `important` uses in `@apply` lines to using the `!`
prefix.
- Move `typography.css` to the `config` package and import it from the
apps.
- Migrated all occurrences of `flex-grow`, `flex-shrink`,
`overflow-clip` and `overflow-ellipsis` since they're deprecated and
will be removed in Tailwind 4.
- Make the default theme object typesafe in the `ui` package.
- Migrate all `bg-opacity`, `border-opacity`, `ring-opacity` and
`divider-opacity` to the new format where they're declared as part of
the property color.
- Bump and unify all imports of `postcss` dependency.
## Summary
Adds `/<page>.md` routes for 10 marketing/product pages (homepage, auth,
database, edge-functions, realtime, storage, vector, pricing,
modules/cron, modules/queues) so AI agents can fetch clean markdown
instead of parsing JS-rendered HTML. Also advertises the markdown
alternate via `<link rel="alternate" type="text/markdown">` on marketing
and docs pages so agents can discover it.
Pricing is generated dynamically via `generatePricingContent()` (single
source of truth with `/llms.txt` and `/llms-full.txt`); the other nine
slugs are bundled at build time from `content/md/*.md` into a
`MD_CONTENT` map.
Supersedes #44891 (rebased fresh off current master to avoid a 9-commit
replay over rename/rename conflicts created by #44897).
## Changes
- New `/api-v2/md/[...slug]` route handler returns the bundled markdown
(or dynamic pricing) with `Content-Type: text/markdown`,
`X-Content-Type-Options: nosniff`, and appropriate cache headers
- Middleware rewrites `/<slug>.md` and `Accept: text/markdown` to the
API route for the `MD_PAGES` allowlist; trailing-slash variants
(`/auth/`) are normalized so they resolve the same as `/auth`
- Build-time codegen `scripts/generateMdContent.mjs` scans `content/md/`
and emits `app/api-v2/md/content.generated.ts` exporting both
`MD_CONTENT` (Map) and `MD_PAGES` (Set, incl. dynamic `pricing`). Fails
the build on slug collision between `content/md/` and `DYNAMIC_SLUGS`.
Adding a new marketing `.md` is just dropping a file in `content/md/`
(also update `PRODUCT_OVERVIEW_LINKS` in `/llms.txt` since that list is
editorial).
- 8 permanent redirects `/llms/<product>.txt` → `/<product>.md` so
legacy URLs in caches and downstream `llms.txt` copies keep working
- `/llms.txt` product overview now references `.md` URLs (incl.
`modules/cron`, `modules/queues`); `/llms-full.txt` iterates
`MD_CONTENT.values()` (homepage first, then alphabetical) and appends
dynamic pricing
- `/llms/[slug]` route slimmed to proxy SDK reference files (`js.txt`,
`dart.txt`, etc.) since redirects handle product slugs and pricing;
pricing branch retained as fallback in case redirects are bypassed
- `apps/www/pages/_app.tsx` injects the alternate link conditionally
based on `MD_PAGES`; `/pricing` (app router) sets it via page metadata
- `apps/docs/app/page.tsx` (the `/docs` root) sets the text/markdown
alternate to `/llms-full.txt`; per-guide pages override with their
specific `.md` URL via `genGuideMeta` in `GuidesMdx.utils.tsx`. Other
docs pages (reference, troubleshooting) inherit nothing.
- `apps/www/.vercelignore`: replaces the prior `*.md`/`README.md` rules
with `*.md` + `!content/md/**/*.md` so Edge Function READMEs and future
scratch `.md` files aren't silently shipped to the build artifact
- Drops `apps/www/data/llms/*.txt` and the related
`outputFileTracingIncludes`
- Test coverage for the new middleware branches: `.md` suffix rewrite
(allowlisted vs. fall-through), `Accept: text/markdown` content
negotiation, trailing-slash normalization
## Testing (Vercel preview)
Local dev server smoke tests passing on `:3771` after each iteration.
Re-verified on the preview URL after the latest hardening commit:
- [x] `curl -I https://<preview>/llms/auth.txt` — expect `308 Permanent
Redirect` to `/auth.md`
- [x] `curl https://<preview>/auth.md | head -3` — expect `# Supabase
Auth`
- [x] `curl https://<preview>/pricing.md | head -3` — expect `# Supabase
Pricing` with current tier values
- [x] `curl https://<preview>/modules/cron.md | head -3` — expect `#
Supabase Cron`
- [x] `curl -H 'Accept: text/markdown' https://<preview>/ | head -3` —
expect `# Supabase` (homepage.md)
- [x] `curl https://<preview>/llms.txt` — Product Overview section lists
`.md` URLs and includes Cron + Queues
- [x] `curl https://<preview>/llms-full.txt | grep -E '^# Supabase
(Cron\|Queues\|Pricing)'` — Cron and Pricing each match once; Queues
matches twice (marketing module + existing docs guide)
- [x] View source on `/`, `/pricing`, `/database` — expect `<link
rel="alternate" type="text/markdown" href="/<slug>.md">`
- [x] View source on `/docs` — expect `<link rel="alternate"
type="text/markdown" href="/llms-full.txt">`
- [x] View source on a docs guide page (e.g., `/docs/guides/auth`) —
expect per-guide `.md` alternate; reference/troubleshooting pages should
NOT emit a markdown alternate
- [x] `curl -I https://<preview>/auth.md` — expect
`X-Content-Type-Options: nosniff`
- [x] `curl -I -L -H 'Accept: text/markdown' https://<preview>/auth/` —
should resolve to markdown content (trailing-slash normalization, with
Vercel's auto-redirect)
## Linear
- fixes GROWTH-760
## Follow-up (separate PR)
GROWTH-760 also asks about extending `.md` to blog/customers/events.
Different mechanism (path-prefix middleware, MDX read at request time
via `gray-matter`) so it deserves its own review. Will open a follow-up
PR after this lands.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Serve prebuilt and dynamic Markdown docs via new markdown endpoints
and routing; pages now advertise markdown alternates (including
pricing).
* Added Cron and Queues module documentation pages.
* **Documentation**
* Minor formatting tweaks to Realtime and Storage docs.
* **Chores**
* Added build-time Markdown content generation and adjusted
ignore/deploy rules for generated files.
* Added redirects from legacy text-based product URLs to new markdown
pages.
* **Tests**
* Expanded tests for markdown routing and content-negotiation behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Problem
While trying to update `react` to version `19`, I noticed type related
errors that can be fixed in version `18`, mostly usage of `JSX.Element`
instead of `ReactNode`.
## Solution
- Use `ReactNode` instead of `JSX.Element`
- Fix some invalid usage of `rechart`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
* **Refactor**
* Standardized React component type annotations across the codebase for
improved type consistency and flexibility.
* Updated component prop types to accept a broader range of renderable
content.
* **Bug Fixes**
* Adjusted chart layout positioning to improve visual alignment.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
The docs build had a fragile implicit dependency on www's filesystem
(`../../../apps/www/public/llms`), flagged by the docs team in #44670.
Rather than formalising that dependency with a shared package, this PR
eliminates it entirely by making www the sole owner of llms content
assembly.
**How it works now:**
`/llms/[slug]` handles all `/llms/*.txt` requests via a 3-step cascade:
1. Dynamic content — `pricing.txt` generated at request time from
`shared-data` imports
2. Local file — product overviews read from `data/llms/`
3. Docs proxy — reference docs (guides, js, dart, etc.) fetched from the
docs app
No hardcoded slug lists, so adding new content just works.
**What changed:**
- `apps/docs/scripts/llms.ts` trimmed to only generate per-source
reference files — www now owns `llms.txt`, `llms-full.txt`, and product
overviews
- Removed `generateLlmsPricing.mjs` build script — pricing generated
dynamically from `shared-data`
- Removed llms rewrites from `rewrites.js` — routes handle everything
with consistent `Cache-Control: public, s-maxage=3600,
stale-while-revalidate=86400`
- Product overview `.txt` files moved from `public/llms/` → `data/llms/`
so all requests go through routes for consistent caching
**Docs team concerns from GROWTH-773:**
| Concern | Resolution |
|---------|-----------|
| Docs build depends on www files at a fragile relative path | Path
removed — docs no longer reads from www |
| www restructuring breaks docs with no obvious connection | Eliminated
— no cross-app filesystem dependency |
| No build order enforcement between www and docs | Not needed — docs
doesn't depend on www's build output |
## To test
- `curl <preview>/llms.txt` — markdown index with doc + product overview
links
- `curl <preview>/llms-full.txt` — combined product overviews + docs
content
- `curl <preview>/llms/pricing.txt` — dynamically generated pricing
tables
- `curl <preview>/llms/auth.txt` — product overview from local file
- `curl <preview>/llms/guides.txt` — proxied from docs app
- `curl <preview>/llms/nonexistent.txt` — 404
- Verify `Cache-Control` header on all responses
---------
Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Added a comprehensive "Taxes" FAQ explaining when sales tax/VAT/GST is
charged (jurisdiction and billing-address dependent), invoice
presentation, prepaid credit treatment, and marketplace purchases
* Clarified rollout timeline and advance email notices (May 1–June 30,
2026)
* Explained Tax ID requirements, where to provide them, handling
missing/incorrect addresses, and tax-exemption submission process
* Added a corresponding pricing FAQ entry and dedicated support path for
tax questions
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## 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?
- Removed a webinar from the on demand page
- Made some changes to the Startups solution page at the request of the
startups team
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Adjusted event availability settings
* Updated page messaging and call-to-action text on the startups
solution page
<!-- end of auto-generated comment: release notes by coderabbit.ai -->