Commit Graph
35266 Commits
Author SHA1 Message Date
Terry SuttonandCopilot 4d68aec185 Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-24 12:41:11 -02:30
Terry SuttonandCopilot 1750743a26 Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-24 12:40:47 -02:30
Terry Sutton 0dc25167df more 2026-03-24 12:30:50 -02:30
Terry Sutton 869dfad8d1 chore: update GitHub integration wording 2026-03-24 12:29:35 -02:30
Joshen Lim c3f7318dbc Couple of minor UI nudges in edge functions UI (#44123)
## Context

Just a couple of minor UI nudges as I came across on the edge functions
page

- Added TimestampInfo for hover card + used `text-sm` for font size +
reduce width to match content size
  - Before:
<img width="393" height="271" alt="image"
src="https://github.com/user-attachments/assets/3db351fd-80e8-47a9-b4e9-dff8613163ad"
/>
  - After:
<img width="461" height="233" alt="image"
src="https://github.com/user-attachments/assets/d4ac9edb-58fc-4820-b04f-c7753baf9ef5"
/>

- Use `text-code-inline` in here + avoid `text-brand` in text (use
`text-foreground`) + added some spacing between the 2 sentences
  - Before:
<img width="707" height="153" alt="image"
src="https://github.com/user-attachments/assets/7d6b3acc-8bc6-454b-92ed-ab43227a9e07"
/>
  - After:
<img width="710" height="169" alt="image"
src="https://github.com/user-attachments/assets/b00fbf07-a6a3-4476-b417-d02225f02ce9"
/>

- Invoke code snippet adjust copy button placement + opt to not wrap
lines (was awkward esp when there's no line numbers)
  - Before:
<img width="730" height="278" alt="image"
src="https://github.com/user-attachments/assets/d3c646d9-c893-44cc-8c25-86fc0ddac050"
/>
  - After:
<img width="725" height="223" alt="image"
src="https://github.com/user-attachments/assets/f75c0a28-04e3-48c5-903f-25e9bbe2d879"
/>

- Use `text-brand` consistently here instead of `text-brand-600`
  - Before:
<img width="732" height="315" alt="image"
src="https://github.com/user-attachments/assets/48cdf54f-43e1-44ef-b09b-66d6db351a5b"
/>
  - After:
<img width="736" height="322" alt="image"
src="https://github.com/user-attachments/assets/3f176ccc-ec35-4abb-8491-d9a498933a26"
/>
2026-03-24 19:17:31 +08:00
6153497500 docs(skills): agent skills (#42148)
## 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 — Rewrite the Agent Skills documentation as a single flat
page with a skills table.

## What is the current behavior?

The Agent Skills docs have a nested structure with an index page and
individual dynamic pages for each skill (fetched from the
`supabase/agent-skills` repo). Skills also inject sub-items into the
sidebar navigation.

## What is the new behavior?

This PR replaces the nested skill pages with a single, flat Agent Skills
page that:

- Lists all skills in a **table** with name, description, and a
**copy-to-install button** (fetched dynamically from the
[supabase/agent-skills](https://github.com/supabase/agent-skills) repo)
- Includes **installation commands** for both the skills CLI (`npx
skills add`) and Claude Code plugins
- Links skill names directly to their source on GitHub instead of
rendering full skill content inline
- Removes the dynamic `[slug]` route, sidebar nav injection, and local
skill example files

### Navigation Structure

```
Start
  > AI Tools
      > Agent Skills   (new)
      > Prompts        (existing)
      > Supabase MCP server (existing)
```

Closes
[AI-361](https://linear.app/supabase/issue/AI-361/create-skills-documentation-page-in-ai-tooling-docs)

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-24 10:18:54 +00:00
Pamela Chia e09a663292 fix(billing): clarify service restriction reset delay after billing cycle (#44122)
## Summary

Customers were upgrading to Pro to clear service restrictions, unaware
that restrictions aren't lifted immediately when the billing cycle
resets — there's a delay. This adds a clarifying note to both the docs
FAQ and the Studio restricted alert so users know what to expect.

Note: upgrading your plan or disabling spend cap *does* lift
restrictions immediately (unchanged). The delay only applies to the
billing-cycle-reset path for usage-limit violations.

## Changes

- `billing-faq.mdx`: Removes the implication that restrictions clear the
moment the billing period resets; adds "Note that there may be a short
delay after your billing period resets before restrictions are fully
lifted"
- `Restriction.tsx`: Updates the restricted alert to make clear that
upgrading lifts restrictions immediately, while the billing-reset path
may have a delay

## Testing

To test the Studio banner, find or create an org with
`restriction_status === 'restricted'`, or temporarily hardcode
`shownAlert = 'restricted'` in `Restriction.tsx` to preview:

- [x] Restricted alert reads clearly and distinguishes immediate
(upgrade) vs delayed (billing reset) paths
- [x] Docs FAQ answer under "How can I remove restrictions" reads
correctly with the new caveat

## Linear
- fixes GROWTH-704
2026-03-24 18:08:29 +08:00
Katerina Skroumpelou 23fa582695 ci: fix mgmt api docs generator (#44121)
The [`docs-mgmt-api-update`
workflow](https://github.com/supabase/supabase/blob/master/.github/workflows/docs-mgmt-api-update.yml#L21)
uses `sparse-checkout`, only pulling `apps/docs` and patches. After PR
#42987, the Makefile's `redocly` commands were changed to run via `pnpm
exec` `redocly` from `packages/generator`, but that directory was never
checked out, causing the can't `cd` error. Adding `packages/generator`
to `sparse-checkout` makes the existing Makefile dependency explicit in
the workflow.
2026-03-24 12:00:32 +02:00
Joshen Lim 29f5c4c44a Fix/build issue react flow (#44119)
Not sure how i overlooked this one sorry 🤦 
was importing from the wrong library
2026-03-24 09:22:21 +00:00
Joshen Lim 8838aab49e Fix missing edge when deploying a new RR, and add some small qol tidbits (#44072)
## Context

Edge between replica and primary DB was missing when the replica is
first initialized, so this PR primarily fixes that.

## Other changes
Also just adding in some tiny QoL nudges
- Add replication lag if its a read replica
- Add a loader edge label if the target is coming up
- Add a "X" edge label if the target status failed

<img width="752" height="171" alt="image"
src="https://github.com/user-attachments/assets/c77eae12-1608-4c05-a0bc-66204f3e125e"
/>

<img width="684" height="396" alt="image"
src="https://github.com/user-attachments/assets/f15f0914-0915-4cf3-8c28-8a80b3f97d54"
/>
2026-03-24 16:55:13 +08:00
Joshen Lim 19aea11aa9 Add cancel action in save queue action bar (#44065)
## Context

Related to the queue table operations feature preview

Adding a "cancel" action in the save queue operation bar for convenience
to clear all changes (instead of having to go into the review panel)

Also aligning the positioning of the CTAs to match the review panel
- "Review" imo is a secondary action, while "Save" or "Cancel" are the
primary ones
- Hence am shifting the "review" CTA to the left, contextually beside
the number of pending changes text
<img width="449" height="100" alt="image"
src="https://github.com/user-attachments/assets/c3faa6c1-e244-40ee-b251-44ab1e785c6e"
/>
- This also aligns with the CTA placements in the review panel
<img width="502" height="71" alt="image"
src="https://github.com/user-attachments/assets/35b7de0a-dbf4-4e8a-acef-53508c9b13b9"
/>
- Also removed plural grammar for the button CTAs - thinking thats not
necessary, wanna keep button CTA texts short and sweet + The "x pending
change(s)" also captures the plurality
2026-03-24 16:33:20 +08:00
Joshen Lim 98b1b79909 Chore/shift manual queries into pg meta 04 (#43956)
## Context

Shifts all remaining dashboard queries into pg-meta so that we
centralize all manually written queries in one place
Having them in packages/pg-meta also allows us to write tests for them

## To test

Just needs a smoke test on
- Role Impersonation
- Lints
- Data API
- Database
  - Enumerated Types
- Integrations
  - Foreign Data Wrappers
  - Vault
2026-03-24 16:23:13 +08:00
fe929aa416 fix: SMTP form shows incorrect rate limit message when already enabled (#43914)
## Description

Fixes #43800

When editing SMTP settings while custom SMTP is already enabled, the
form footer was incorrectly displaying "Rate limit for sending emails
will be increased to 30". The rate limit is only set during the initial
enable transition, so the message and submit behavior were out of sync.

## Changes

This fix aligns the footer message with the submit logic (Option A from
the issue):

- **Enabling SMTP**: Shows rate limit increase message
- **Already enabled, editing settings**: Shows "Custom SMTP settings
will be updated"
- **Disabling SMTP**: Shows rate limit reduction message

## Testing

1. Go to Authentication → SMTP Settings
2. Enable custom SMTP and save (rate limit is set to 30)
3. Edit any SMTP field (e.g. change host or port)
4. Footer now correctly shows "Custom SMTP settings will be updated"
instead of the rate limit message

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: vj2303 <vishnu.jangid@ax-ia.ai>
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-03-24 19:11:13 +11:00
Joshen Lim 434fd4687c Joshen/fe 2852 edge functions editor clips horizontal overflow on resize (#44063)
## Context

Edge functions code editor which uses the FileExplorerAndEditor
component doesn't resize when the viewport shrinks

This PR fixes that + also refactors the FileExplorerAndEditor a bit to
resolve the lint issue with `nodeRenderer` by refactoring the prop into
a renderer that uses `useCallback`
2026-03-24 15:59:00 +08:00
c198a61951 feat: UI for managing jit database access (#43735)
## 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


## Additional context

Adds a feature flagged UI for toggling JIT based access to a project's
database and managing permissions/access

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-24 15:22:38 +08:00
Raminder Singh 4fdad068d8 fix: upgrade button not shown on Stripe Sync Engine integration page (#44116)
This version fixes a problem in which the upgrade button was not
enabled. The last two versions (1.0.29 and 1.0.30) of
`stripe-experiment-sync` package returned version 1.0.28 from the
exported function `getCurrentVersion`. The `getCurrentVersion` function
is used by studio code to show the upgrade button if the installed
version is lower than the current version. Version 1.0.31 fixes this
bug.
2026-03-24 10:50:08 +05:30
Danny White b23c6a7fed chore(studio): share key-value field array editor (#43938)
## What kind of change does this PR introduce?

Chore that references DEPR-394.

## What is the current behavior?

Key/value editors for headers are implemented separately in multiple
places.

## What is the new behavior?

DEPR-394 is consolidating repeated RHF field-array UIs across Studio and
the design system.

- adds a shared `KeyValueFieldArray` component in `ui-patterns`
- adds a shared `httpHeaderAddActions` helper for preset header rows
- migrates the key/value header editors in:
  - Platform Webhooks
  - Cron Jobs HTTP headers
  - Database Webhooks HTTP headers
- documents the key/value pattern in the design system with:
  - a dedicated fragment page
  - updated forms guidance
  - updated form pattern demos

| Preview |
| --- |
| <img width="1102" height="420" alt="CleanShot 2026-03-23 at 12 22
18@2x"
src="https://github.com/user-attachments/assets/f8d23ff9-7063-462f-8074-b400561f77e9"
/> |

## Additional context

This is PR 1 of a 3-PR stack for DEPR-394.
2026-03-24 16:16:03 +11:00
Cemal Kılıç d9077528f8 fix: case insensitive comparison for non-json message (#44103)
## 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?

follow up for https://github.com/supabase/supabase/pull/43985
2026-03-24 06:58:36 +03:00
Danny WhiteandJoshen Lim f01afa7f66 fix(studio): SSOConfig field widths (#44114)
## What kind of change does this PR introduce?

UI fix.

## What is the current behavior?

Form contents overflow horizontally on `SSOConfig`’s `AttributeMapping`
section.

## What is the new behavior?

These form contents no longer overflow.

| Before | After |
| --- | --- |
| <img width="1096" height="997" alt="SSO Organization Settings Toolshed
Supabase-BB366F67-15C9-40A3-8CB7-C0DA7363A2EC"
src="https://github.com/user-attachments/assets/daabcba2-408a-4d44-8bf6-beb0c21d12ed"
/> | <img width="1096" height="997" alt="SSO Organization Settings
Toolshed Supabase-550B04A9-5B3C-4BCE-9CE3-C4B5F516BE35"
src="https://github.com/user-attachments/assets/741f6178-7633-4c6d-87cd-6fdd5d0e4606"
/> |

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-24 03:55:03 +00:00
Ali WaseemandIvan Vasilov 8a26132bde fix(studio): resolve outstanding Sentry issues (#44106)
## Summary

Fixes several high-impact Sentry errors reported in production.

### Fixed Issues

- **[SUPABASE-APP-EJ3](https://supabase.sentry.io/issues/7356937474/)**
— `TypeError: Cannot read properties of undefined (reading 'direct')`.
`connectionStringPooler` could be `undefined` when the connection source
doesn't match any key in the connection strings map. Added an early
return guard in `resolveConnectionString`.

- **[SUPABASE-APP-B17](https://supabase.sentry.io/issues/7117468199/)**
— `RangeError: Invalid time zone specified: Etc/Unknown`.
`dayjs.tz.guess()` returns `"Etc/Unknown"` for some users with
misconfigured browser/OS timezones. Added a shared
`guessLocalTimezone()` helper that validates the guessed timezone via
`Intl.DateTimeFormat` and falls back to UTC. Applied across all 4 call
sites.

- **[SUPABASE-APP-BCM](https://supabase.sentry.io/issues/7192934901/)**
— `TypeError: Cannot convert undefined or null to object`.
`Object.entries(definition.properties)` crashed when a JSON schema
definition existed but had no `properties` field. Updated the guard to
check `definition?.properties` instead of just `definition`.
- https://supabase.sentry.io/issues/7357780302/?project=5459134
- https://supabase.sentry.io/issues/7358344652/?project=5459134
- https://supabase.sentry.io/issues/7096737077/?project=5459134

## Test plan

- [ ] Verify connect dialog renders without errors when connection data
is still loading
- [ ] Verify API docs Entity view handles schema definitions without
properties
- [ ] Verify charts/tooltips display correct timezone labels

---------

Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
2026-03-23 21:20:47 +00:00
Ana f70d0923f9 Revert "blog: Supabase joins the Stripe Projects developer preview" (#44109) 2026-03-23 16:47:58 -04:00
kemal.earth b518c5b03b fix(studio): smol design bug on connect dialog mode selector (#44100)
## 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?

Small visual gremlin @jordienr spotted:

| Before | After |
|--------|--------|
| <img width="415" height="352" alt="Screenshot 2026-03-23 at 17 29 17"
src="https://github.com/user-attachments/assets/70031cf9-de02-4957-ad00-79f92b842382"
/> | <img width="373" height="311" alt="Screenshot 2026-03-23 at 17 32
31"
src="https://github.com/user-attachments/assets/f14d0968-29b7-40da-9f56-e721e324b46d"
/> |
2026-03-23 18:06:27 +00:00
kemal.earth a9a1326b92 feat(studio): private apps ui (#43382)
## 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 prototype for private apps UI. There are no endpoints at the
minute, just wanted to see what a potential flow could look like.
2026-03-23 10:51:04 -06:00
Gildas Garcia 06190d15b9 Gildasgarcia/fe 2426 show relationship line context and highlight on hover (#44023)
## Problem

When you have many tables, it's hard to follow the relations between
them in the Schema Visualiser

## Solution

When selecting an edge (the line between tables), highlight it along
with the related tables and columns to make it easier.
Also, if there is enough space, display a popover showing the relation
details

## Screencasts


https://github.com/user-attachments/assets/11d35fa7-3674-4f13-b77f-8ebe25c66b04
2026-03-23 17:41:50 +01:00
Chris ChinchillaandCopilot 0efa8a036a docs: Update SvelteKit User management tutorial with correct auth methods (#44077)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-23 16:50:07 +01:00
700eeb075c docs: Reviewing 401 guide (#43990)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

docs update

## What is the current behavior?

There is a 401 guide

## What is the new behavior?

This is an improved version of the same guide

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-03-23 15:32:03 +00:00
Raminder Singh d73911697b chore: bump stripe-experiment-sync to version 1.0.29 (#44014)
Version `1.0.29` of `stripe-experiment-sync` was published with some
critical fixes related to some records not syncing.
2026-03-23 20:49:24 +05:30
Vaibhav 88fd7f1185 fix: create index form dropdown behavior (#43906)
## TL;DR
Fixes/improves the create Index form ux by fixing schema/table dropdown
state coupling and dropdown scroll behavior

## Before

https://github.com/user-attachments/assets/093a6b42-b13e-4138-ab86-45149f4894cb

## After

https://github.com/user-attachments/assets/db9cc11b-0218-4276-9ccf-9c81831e95e5

## Related
- closes https://github.com/supabase/supabase/issues/43878
2026-03-23 09:18:58 -06:00
MatejandAlaister Young b93733c811 Studio SQL export emits valid PostgreSQL literals (#44025)
## Summary
- fix the Studio SQL row formatter to emit raw boolean and numeric
literals instead of quoted strings
- serialize text array members as SQL string literals inside
`ARRAY[...]`
- escape fallback string formats outside `text`/`varchar`, and add
regression coverage for that path

Closes #44024

## Test plan
- [x] Ran a direct `tsx` smoke against `formatTableRowsToSQL()` for the
`storage.buckets` case and confirmed it now emits `true`, `false`,
`10485760`, and `ARRAY['image/*']`
- [x] Ran focused formatter smokes for JSON escaping, text arrays, and
fallback string formats like `citext`
- [x] `pnpm --filter studio test -- TableEntity.utils.test.ts`

Note: the targeted Vitest run is still blocked in this environment
before the test executes (`localStorage.getItem is not a function`).

---------

Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2026-03-23 15:14:33 +00:00
Raúl Barroso 527c342837 fix(mgmt-api): update types (#44087) 2026-03-23 16:06:06 +01:00
Jordi EnricandClaude Opus 4.6 dc862370f6 feat: improve readability of CPU chart O11Y-1290 (#43822)
## Problem
The CPU usage chart in the Observability dashboard could show values
exceeding 100%, differing from the internal Grafana panel that support
uses for debugging.

## Solution
Add a stackedPercent prop to the chart system that locks the Y-axis to
[0, 100]. When enabled, the chart never visually overflows 100% while
tooltip values remain completely untouched. We fill the rest of the
unused with an "Idle" prop.

# Before
<img width="1240" height="684" alt="CleanShot 2026-03-18 at 16 04 26@2x"
src="https://github.com/user-attachments/assets/c1b1a5ac-86e0-4d6b-9bc4-c7837f30c28c"
/>

## After
<img width="1240" height="684" alt="CleanShot 2026-03-18 at 16 03 13@2x"
src="https://github.com/user-attachments/assets/419eea55-176d-46c4-8780-b8c372428047"
/>
<img width="934" height="700" alt="CleanShot 2026-03-18 at 16 03 41@2x"
src="https://github.com/user-attachments/assets/9b5ef61d-21f4-40e4-ab0c-1a11caadb1f8"
/>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:28:16 +01:00
supabase-supabase-autofixer[bot]andgithub-actions[bot] 6118eb823e [bot] Decrease ESLint ratchet baselines (#44047)
Automated weekly decrease of ESLint ratchet baselines.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-23 08:28:05 -06:00
Jordi EnricandClaude Sonnet 4.6 2e1795dfa0 feat(studio): add pagination to query performance page FE-2774 (#43697)
## Problem

The Query Performance page loaded all results in a single query with a
fixed limit of 20 rows, giving users no way to browse beyond the first
page. There was also no way to control how many rows were shown at once.

## Fix

adds pagination 

## How to test

- Navigate to `/observability/query-performance` in Studio
- scroll to bottom
- should automatically load more results

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 15:27:43 +01:00
supabase-supabase-autofixer[bot]andmandarini f04bcf07d5 docs: update js sdk docs (2.100.0) (#44078)
Updates JS sdk documentation following stable release.
Ran `make` in apps/docs/spec to regenerate tsdoc files.

**Details:**
- **Version:** `2.100.0`
- **Source:** `manual`
- **Changes:** Regenerated tsdoc files from latest spec files

🤖 Auto-generated from @supabase/supabase-js stable release.

Co-authored-by: mandarini <6603745+mandarini@users.noreply.github.com>
2026-03-23 15:52:48 +02:00
Katerina Skroumpelou 49df02ce91 docs: move postgrest-js and realtime-js docs to tsdoc (#43908)
* Move postgrest-js docs to tsdoc
(https://github.com/supabase/supabase-js/pull/2177)
* Move realtime-js docs to tsdoc
(https://github.com/supabase/supabase-js/pull/2164)
* Remove entries from yml
2026-03-23 14:35:40 +02:00
supabase-supabase-autofixer[bot]andsupabase-workflow-trigger[bot] efc71514d0 feat: update @supabase/*-js libraries to v2.100.0 (#44075)
This PR updates @supabase/*-js libraries to version 2.100.0.

**Source**: supabase-js-stable-release

**Changes**:
- Updated @supabase/supabase-js to 2.100.0
- Updated @supabase/auth-js to 2.100.0
- Updated @supabase/realtime-js to 2.100.0
- Updated @supabase/postgest-js to 2.100.0
- Refreshed pnpm-lock.yaml

This PR was created automatically.

Co-authored-by: supabase-workflow-trigger[bot] <266661614+supabase-workflow-trigger[bot]@users.noreply.github.com>
2026-03-23 14:23:45 +02:00
Colum Ferry 160c1decd6 chore(docs): add Colum Ferry to humans.txt (#43962)
## 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 to `humans.txt` to add `Colum Ferry`
 
## What is the current behavior?

`Colum Ferry` does not exist in `humans.txt`

## What is the new behavior?

`Colum Ferry` exists in `humans.txt`
2026-03-23 12:15:55 +00:00
Cemal Kılıç 656178301a feat: add docs button for custom auth providers (#44066)
## 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?

Add docs button for custom auth providers

## What is the current behavior?

no docs button

## What is the new behavior?

add docs button

<img width="1836" height="148" alt="image-VZhcSrrE@2x"
src="https://github.com/user-attachments/assets/1e37d848-1195-4464-a542-e90d02ec08fc"
/>
2026-03-23 14:31:33 +03:00
石川 壱朗andChris Chinchilla 895ecb8c53 docs: replace deprecated "Linking.useURL" with "useLinkingURL" (#43966)
"Linking.useURL()" has been deprecated in Expo. This updates the example
to use the recommended "useLinkingURL()" hook, which provides the same
functionality for handling initial and subsequent deep links.

## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

docs update

## What is the current behavior?

The Expo example code uses "Linking.useURL()", which is now marked as
deprecated in Expo SDK 50+ and produces a TypeScript warning.

## What is the new behavior?

The example now uses the recommended "useLinkingURL()" hook from
"expo-linking". This prevents deprecation warnings for developers
adopting this example. The functionality (handling initial and
subsequent deep links) remains exactly the same.

## Additional context

Expo Linking documentation:
https://docs.expo.dev/versions/latest/sdk/linking/

Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-03-23 10:57:39 +00:00
VaibhavandChris Chinchilla b97a1db19b fix: 404 pricing (#44068)
Before:
<img width="889" height="295" alt="image"
src="https://github.com/user-attachments/assets/4bd213ce-545c-4292-8f64-359d9a445583"
/>

After:
<img width="1759" height="761" alt="image"
src="https://github.com/user-attachments/assets/fd8ef8c3-7398-40fa-a0f0-e812ccfbd40a"
/>

---------

Co-authored-by: Chris Chinchilla <chris@chrischinchilla.com>
2026-03-23 10:49:50 +00:00
Cemal KılıçandChris Chinchilla 87b68a5cb4 feat(docs): add custom oauth/oidc providers (#43337)
## 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?

Add docs for the custom OAuth & OIDC providers

## Notes

- Pricing to be clarified. Until now, we allow 3 providers per project.
- Dashboard instructions will be updated after dashboard is finalized.

---------

Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-03-23 11:48:00 +03:00
Joshen Lim fd14df7077 Use TimestampInfo in edge functions created at column + use relative label (#44064)
## Context

Very tiny one - just uses TimestampInfo here
<img width="520" height="528" alt="image"
src="https://github.com/user-attachments/assets/1336cbc1-1c9e-424d-9674-178196c9ca10"
/>
2026-03-23 15:06:03 +08:00
Danny White 64ba75d88b chore(studio): polish privacy policy notice (#43889)
## What kind of change does this PR introduce?

Minor polish

## What is the current behavior?

We have a privacy policy notice that uses `Alert_Shadcn_` with bespoke
links and badge.

## What is the new behavior?

- Reuse `Admonition` and `InlineLink` components
- Use sentence case as per our copywriting guidelines
- Tighten copywriting

| Before | After |
| --- | --- |
| <img width="1024" height="563" alt="Projects Boring Org Supabase"
src="https://github.com/user-attachments/assets/43fd9d4f-21e2-461b-92e3-d75578ae2ddd"
/> | <img width="1024" height="563" alt="Projects Boring Org
Supabase-27BBA2B8-4F90-4FB5-852D-B92B38AF5055"
src="https://github.com/user-attachments/assets/c0c09aae-c110-46cb-86ad-f6df557e1a4f"
/> |

## Additional context

Legal should sign off on this too.
2026-03-23 13:29:32 +08:00
Joshen Lim bf54231c82 Reinstate source param in new connect sheet to select read replicas (#44018)
## Context

Adds a "source" param in the new Connect sheet to allow selecting read
replicas - this was present in the old Connect dialog

<img width="962" height="713" alt="image"
src="https://github.com/user-attachments/assets/3c805e41-e8df-431b-83d0-e5f227d68475"
/>

Selecting sources will update the connect steps at the bottom -
connection string, host etc
2026-03-23 13:22:34 +08:00
Saxon Fletcher b7847b74db adds env step to shadcn (#43941)
<img width="877" height="997" alt="image"
src="https://github.com/user-attachments/assets/31ca8667-3cfc-4543-b722-fbdf9939c288"
/>

Adds a new step for shadcn/ui enabled flows that requires the user to
add environment variables
2026-03-23 13:23:33 +10:00
73112440c3 Moves from four to three columns on home (#43804)
<img width="1796" height="963" alt="image"
src="https://github.com/user-attachments/assets/828f417a-d30e-4897-b188-f9591cff5bfe"
/>

Switches from four to three columns in home. As part of this work
refactors Row component slightly to use min width and max columns props
instead of breakpoint columns.

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SaxonF <1072756+SaxonF@users.noreply.github.com>
2026-03-23 13:23:10 +10:00
Ali Waseem 2ae4942cbb fix: remove client router filter (#44028)
## 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?

We have users reporting random four oh fours in the dashboard. We can't
reproduce locally, but this is pointing to an next js issue.

The reason is the users were getting appended a double /dashboard route.
it all points to 80852 in next js, double base path. We added app dir
recently as well

https://github.com/vercel/next.js/issues/80852
2026-03-20 11:51:44 -06:00
kemal.earth 4d6341b283 feat(studio): make filter bar ui its own row (#44022)
## 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?

To reduce cramping on all viewports, we're giving the filter bar ui a
full width row to breathe. It still wraps round if you have a lot of
items in one field. This originates from
[this](https://github.com/orgs/supabase/discussions/42461#discussioncomment-16207141)
user discussion.

| Before | After |
|--------|--------|
| <img width="1085" height="181" alt="Screenshot 2026-03-20 at 14 46 27"
src="https://github.com/user-attachments/assets/745f89dc-44c8-4387-8ab8-88a36f727b0d"
/> | <img width="1076" height="194" alt="Screenshot 2026-03-20 at 14 46
42"
src="https://github.com/user-attachments/assets/9675a072-0ea9-4fdb-96b7-0a0b0e60a17f"
/> |
2026-03-20 11:50:57 -06:00
Matt Rossman ccb12de25b feat(assistant): track chat IDs in PostHog events (#43983)
Adds `chatId` (the chat UUID) to the three assistant PostHog events so
we can count distinct chat sessions in PostHog. This naming is
consistent with how we name the field in Braintrust logs.

Also migrates from the deprecated `useSendEventMutation` hook to
`useTrack` — groups (project/org) are still sent automatically by
`useTrack`.

Closes AI-519
2026-03-20 12:27:17 -04:00
Kanishk DudejaandIgnacio Dobronich 5d942e2a46 refactor(billing): allow GB VAT tax IDs for Isle of Man customers (#43640)
### Summary

This PR adds support for Isle of Man customers to use GB VAT tax IDs.
Isle of Man uses the UK VAT system, so Orb requires country: 'GB' for
validation - but the billing address country is IM.

- Adds an IM VAT entry to `TAX_IDS` with a new `taxCountryIso2` override
field, so the UI shows "IM VAT" while sending country: 'GB' to Orb
- Introduces `getEffectiveTaxCountry()` to resolve the correct country
code for Orb
- Introduces `resolveStoredTaxId()` to map stored Orb data back to the
correct UI entry, using billing address country to disambiguate IM vs GB
- Updates all three billing forms to use these utilities: Billing
Settings page, Add Payment Method modal and Update Billing Address modal

### Testing

#### Automated tests

I've added unit tests in this PR

#### Manual tests

You can use the following country/city/postal code combinations to test:

- Isle of Man, Douglas, IM1 2LE
- United Kingdom, Crumlin, BT29 4AA

**Billing Settings page**

- Select Isle of Man as billing country → tax ID dropdown shows "Isle of
Man - IM VAT"
- Select United Kingdom as billing country → tax ID dropdown shows
"United Kingdom - UK VAT" / "United Kingdom - GB VAT" (not "IM VAT")
- Select IM VAT, enter a valid GB VAT number, save → check network tab,
Orb receives country: 'GB'
- Reload page for an IM customer with existing tax ID → "IM VAT" is
pre-selected (not "UK VAT")
- Reload page for a GB customer with existing tax ID → "UK VAT" is
pre-selected (no regression)
- Change country from IM to GB → available tax IDs update, IM VAT no
longer shown

**Add Payment Method modal**

- Open modal for an IM customer with existing tax ID → "IM VAT" is
pre-selected
- Check "I'm purchasing as a business", select Isle of Man in Stripe
address → tax ID dropdown shows "IM VAT"
- Check "I'm purchasing as a business", select United Kingdom in Stripe
address → tax ID dropdown shows "UK VAT" / "GB VAT"
- Submit with IM VAT → check network tab, tax ID is saved with country:
'GB'
- Open modal for a GB customer → no regression, "UK VAT" shown as before

**Update Billing Address modal** 

Appears for paid orgs missing a billing address

- Open modal for an IM customer with existing tax ID → "IM VAT" is
pre-selected
- Open modal for a GB customer with existing tax ID → "UK VAT" is
pre-selected
- Fill in IM address + IM VAT and save → saves correctly, modal closes

---------

Co-authored-by: Ignacio Dobronich <ignacio@dobronich.com>
2026-03-20 21:48:56 +05:30