Changelog

New updates and product improvements

[!NOTE] This change has now been fully rolled out - thank you everyone for the feedback! 🙏

We've made a significant proposal to enhance the Supabase Dashboard UX, ensuring that Organizations serve as the central hub for managing billing and member access. This update introduces clearer navigation between Organizations and Projects, providing a more intuitive experience for all users.

We encourage everyone to share their feedback in this discussion while we actively refine these changes.

Quick video demo#

https://github.com/user-attachments/assets/1492484b-b3f7-44c5-817c-3188689ef528

What’s Changed?#

Organization#

  • Navigation will focus on 1 Organization at a time.
  • When you are viewing an organization only the Projects for that Navigation will be visible.
  • You can switch Organization by clicking the Organization picker on the top header.
  • Separate sidebars for Projects and Organizations.
  • The User Account Dropdown will be moved to the top right, and be always visible.

Improved Routing & Auto-Redirects#

  • You will be redirected back to your last active organization when opening the Dashboard.
  • Users without an organization will always be prompted to create one upon signup.
  • If no organization is available, you will be prompted to create an organization.

New /organizations Page#

  • Lists all organizations owned by the user.
  • We may also support a page which shows all projects for all of your organizations.

Account Settings#

  • Account settings moved out of the organization context.

Usage Banners & In-App Notifications#

  • Consolidated banners at the top of the dashboard.
  • Clear notifications about unpaid invoices in other organizations.
  • Notifications will be filtered per active organization.

Self-hosting / Local#

  • No major changes for self-hosting or local

Rollout#

  • Changes are behind a feature preview in the dashboard
  • We will roll out to the hosted platform first as incremental % rollout where users will be opted into the feature preview by default
  • If you might want opt out of the changes, you may disable the changes via the feature previews which you can access through the user dropdown in the header here:

Feedback#

Please feel free to leave feedback in this thread.

We've introduced an experimental flag to the Supabase CLI, which allows you to deploy Edge Functions without running Docker.

How to use#


_10
npx supabase@beta functions deploy --use-api

This also simplifies importing files outside the supabase/ directory within Edge Functions. Useful for monorepo setups where you want to share code between your frontend and Edge Functions.

For example, Given the directory layout below, you can import my-lib from either index.ts or deno.json.


_11
my-repo/
_11
├─ my-app/
_11
│ ├─ supabase/
_11
│ │ │ functions/
_11
│ │ │ │ slug/
_11
│ │ │ │ ├─ index.ts
_11
│ │ │ │ ├─ deno.json
_11
├─ my-lib/
_11
│ ├─ src/
_11
│ │ ├─ index.ts
_11
├─ README.md

The new flag is available from the Supabase CLI beta releases 2.13.3. Please check CLI upgrade guide on how to use the beta releases on your machine.

CI#

We also recommend using the --use-api flag if you deploy Edge Functions via CI. This should speed up the deploys as it no longer requires Docker and also solves a race condition previously occurred when deploying multiple functions in parallel.

Here's an example GitHub Action config:


_24
name: Deploy Function
_24
_24
on:
_24
push:
_24
branches:
_24
- main
_24
workflow_dispatch:
_24
_24
jobs:
_24
deploy:
_24
runs-on: ubuntu-latest
_24
_24
env:
_24
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
_24
PROJECT_ID: your-project-id
_24
_24
steps:
_24
- uses: actions/checkout@v3
_24
_24
- uses: supabase/setup-cli@v1
_24
with:
_24
version: 2.13.3
_24
_24
- run: supabase functions deploy --use-api --project-ref $PROJECT_ID

Note: If you run into any issues with the --use-api, you can drop the flag to use the default Docker-based deploy mechanism.

Note 2: To run/ test Edge Functions locally (supabase functions serve), you will still need Docker. This only modifies deploy behavior.

Deploy Edge Functions via the Assistant#

https://github.com/user-attachments/assets/c567ecc2-8eed-4589-b077-f578ceaeb562

You can now get help with writing edge functions using the Assistant, and also deploy the suggested edge functions right from the dashboard! This is just the first step towards providing a convenient way to manage your edge functions through the dashboard instead of using solely through the CLI, so watch this space! 👀 🙂

PR: https://github.com/supabase/supabase/pull/33293

Link: https://supabase.com/dashboard/project/_

Update to Authentication settings location in the dashboard#

image

All authentication settings are now consolidated into in one place, which is within the Auth section of the dashboard. They were previously split between project settings and the authentication product page which created confusion and potentially hid functionalities that a user might be looking for. We'll eventually also follow up with similar efforts for other product settings to improve the general information architecture of the dashboard, in hopes to help make finding your way around the dashboard better! 😄🙏

PR: https://github.com/supabase/supabase/pull/33335

Link: https://supabase.com/dashboard/project/_/auth/users

Table Editor peek referencing row from the table#

Clicking "View reference row" from the Table Editor now shows the row in a Popover rather than opening the referencing table with the relevant filters applied. This is in hopes to make the UX less intrusive and abrupt - and we'd love to hear what you think! Feel free to leave any feedback either through the dashboard or right here in the discussions 🙂

PR: https://github.com/supabase/supabase/pull/33141

Link: https://supabase.com/dashboard/project/_/editor

Easy way to Fix "Security Definer view" warnings#

Views that were created in the public schema without specifying security invoker will normally have a warning in the Table Editor regarding its accessibility via the project's API. Understandably, the solution to address this might not be intuitive, especially if you're not familiar with Postgres. As such, we've added a convenient action to automatically address this warning by applying the necessary fixes.

PR: https://github.com/supabase/supabase/pull/33363

Link: https://supabase.com/dashboard/project/_/editor

Other bug fixes and improvements#

Table Editor

  • Changing schemas will render the table editor empty state instead of persisting the currently viewed table to prevent confusion (PR)
  • Add support for bytea data type (PR)

SQL Editor

  • Each section's (Shared, Favorites, Private) opened/closed state now persists from where you left off (PR)
  • Support duplicating a query (PR)
  • Fix inability to scroll results section when query returns an error with a long message (PR)
  • Opt to not clear search results when clicking on a query while searching (PR)
  • Fix moving query to new folder (PR)

Database

  • Fix database tables not showing foreign key relations when opening Edit Table panel for the first time (PR)

Reports

  • Add refresh button to Custom reports, API report, Storage report and Database report (PR)

Webhooks

  • Fix issue with saving values with quotes in http parameters and headers (PR)

Cron

  • Support single quotes in cron job names (PR)

Advisors

  • Support resetting query performance report on read replicas (PR)

Logs & Analytics

  • Support navigating logs in the table with arrow keys (PR)

Here’s everything that happened with Supabase in the last month:

Third-party Auth with Firebase is now GA#

Use Firebase Auth with your Supabase projects. [Docs]

Easier to see errors in log charts#

Log charts in Supabase are now stacked with successes and errors on top of each other, and colored by type. [Link] [GitHub]

Enhanced type inference for JSON fields#

Set up custom types with supabase-js for more concise and accurate types that reflect your data. [GitHub]

Type validation for query filter values#

The Supabase TypeScript SDK will correctly validate all query filter values in  eqneq, and  in  methods. [GitHub] [Docs]

AI Prompt for writing Edge Functions#

A prompt to help generate Supabase Edge Functions following best practices that you can supply to Cursor, Copilot, and other AI coding tools. [Docs]

Quick Product Announcements#

  • Free plans are now limited to 0.5GB per project instead of 0.5GB per account. Keep building! [GitHub]
  • Now you can top up your credit balance through your organization's billing settings. [GitHub]
  • Added 3 configurable parameters to control disk autoscaling. [GitHub]
  • Easier to find queries in the SQL Editor. [GitHub]

This discussion was created from the release Developer Update - January 2025.

Supabase is deprecating Fly’s Postgres offering managed by Supabase on April 11, 2025.

Why are we deprecating this offering?#

This deprecation enables us to focus on a new architecture for scale-to-zero databases, zero-downtime upgrades (more on this later), and more. Afterward, we’ll re-evaluate multi-cloud deployments beyond AWS, our current cloud provider.

What’s the current status of Fly Postgres on Supabase?#

We have disabled Fly Postgres signups and existing Fly Postgres customers will no longer be able to spin up new projects on Supabase. However, you can still access any existing Fly Postgres database.

What is the deprecation timeline?#

Before April 11:

You will still be able to access your existing Fly Postgres projects. We strongly recommend that you transition to Supabase’s or Fly’s native Postgres offering as soon as possible.

On April 11:

Your Fly Postgres projects are removed from our platform.


Reach out to our support if you have any questions or concerns regarding this deprecation.

Log charts now show stacked charts with total warnings and errors#

With stacked charts, you should now be able to get a better, faster glance at your logs' status, and also identify potential issues with incoming requests easily!

Link: https://supabase.com/dashboard/project/_/logs/edge-logs

PR: https://github.com/supabase/supabase/pull/32742

Additional parameters added to Disk Settings#

3 new configurable parameters have been added that can control the autoscale behaviour of your disk, namely:

  • Autoscale growth percent: Refers to the percentage of current disk size to grow by
  • Minimum increment: Refers to the minimum value to grow the disk size by when autoscaling
  • Maximum disk size: Refers to the maximum size that your disk can grow to

These parameters can be configured anytime with no cooldown, and can be accessed under "Advanced disk settings" in your project settings "Compute and Disk"

Link: https://supabase.com/dashboard/project/_/settings/compute-and-disk

PR: https://github.com/supabase/supabase/pull/32628

SQL Editor searching now renders a flat list#

https://github.com/user-attachments/assets/3cd07693-882d-486b-b848-842d67d0316a

This addresses a UX problem whereby searching for snippets do not immediately surface results that might be within folders - with rendering a flat list instead, this should enable users to find what they need faster. Results are also no longer separated into "Shared", "Favorites", or "Private to make scanning through results easier.

Link: https://supabase.com/dashboard/project/_/sql/new

PR: https://github.com/supabase/supabase/pull/33064

Bug fixes and other improvements#

General

  • More mobile responsiveness improvements (PR)

Advisors

  • Show timing in seconds instead of ms if > 1000 ms (PR)
  • Allow exporting advisor results to CSV, or copy as JSON / Markdown

Cron

  • Show all cron jobs even those with no names (PR)
  • Any changes made using the UI will reflect in the SQL snippet textbox to support further customization (PR)

Table Editor

  • Fix a bug with Set to NOW CTA that was specifically happening only in certain timezones (PR)

SQL Editor

  • Fix X axis labels with charting in SQL Editor (PR)
  • Fix client crash issue when using a non-numerical column as the Y axis (PR)
  • Opened / closed state of each section is now persisted (PR)
  • Support duplicating a query (PR)

[!NOTE]
This is only relevant for Free Plan customers.

We've relaxed the Database Size limit on the Free Plan to be 0.5 GB per active project, rather than 0.5 GB for your entire Free Plan organization (previously included paused/deleted projects within your billing cycle). This will be beneficial in a few cases:

  • When pausing or deleting projects, they will no longer count towards the Free Plan limit.
  • When launching more than one project on the Free Plan, each project is allowed 0.5 GB Database Size, rather than a total of 0.5 GB (i.e. two projects using 0.25 GB).

Before Every project that has been active at some point in your billing cycle counts towards the 0.5 GB Database Size limit. If you've deleted a project, the average Database Size will still count towards your limit. We sum up the average Database Size of all projects that are/have been active in the billing cycle. Two projects with 0.5 GB Database Size each equal a Database Size usage of 1 GB and therefore exceed the Free Plan quota.

After We only limit active projects to a Database Size of 0.5 GB per project. Deleted or paused projects, even within the billing cycle, do not count towards your Database Size limits. As long as none of your active projects exceeds 0.5 GB Database Size, you'll stay within the Free Plan limits. Two projects with 0.5 GB Database Size each would still be within the Free Plan quota, as no project is exceeding 0.5 GB.

Welcome to 2025. Here’s everything that happened with Supabase in the last month:

Supabase Integrations Page#

We added an Integrations Section to the Dashboard. Inside you’ll find useful features, like our new Postgres modules: Cron Jobs and Queues.

[Changelog]

Fix Security and Performance Issues with AI#

The AI Assistant has a new ability: it can help you understand and resolve Security and Performance issues. The issue context is passed to the assistant, which explains the issue and suggests fixes.

[Check out the Security Advisor]

SQL Editor Inline AI Assistance#

When using the SQL Editor, you can now hit CMD+K to open an inline AI assistant that will help you make changes to your query. It will only make changes to whatever you have selected, but also has the surrounding context and can access schema, policy, and function information, if needed.

[Check out the SQL Editor]

Supabase Branching Available in Vercel Integration#

Vercel Branching Integration now works with Vercel Marketplace managed projects. You can synchronize environment variables for newly created branches to your Vercel projects, no matter whether the project was created directly in Supabase or through a Vercel dashboard.

[Changelog]

Database Connection Settings Redesigned#

The “Connect” dialog has moved to the top of the Dashboard. You can access your database connection settings from anywhere. The “Connection String” tab includes guidance on when to connect via direct connection, transaction pooler, and session pooler.

[Dashboard]

Query Cloudflare D1 from Your Supabase Database#

Cloudflare D1 is a serverless SQLite service. You can now query it from your Supabase database using our Wrappers service, along with other services like BigQuery, ClickHouse, Firebase, and Snowflake.

[Docs]

Quick Product Announcements#

Dashboard

  • The Supabase Dashboard is now responsive. This is just a first step towards a more complete mobile experience. [Link]
  • Granular Disk Size usage break down by Database/WAL/System [Changelog]

Edge Functions

  • Use a custom NPM registry for Edge Function dependencies [Changelog]

Logs

Connection Pooler

  • Supavisor Session Mode on port 6543 will be deprecated on February 28, 2025 [Changelog]

Auth

  • Slack v1 OAuth has been deprecated in favor of Slack (OIDC) [Changelog]

This discussion was created from the release Developer Update - December 2024.

TypeScript users, here's a cool new feature! Starting from v2.48.0, defining custom types for JSON fields in supabase-js and using them with the JSON selector is now easier, making your code more type-safe and intuitive.

Quick Example#

Define your custom JSON type:


_34
type CustomJsonType = {
_34
foo: string;
_34
bar: { baz: number };
_34
en: 'ONE' | 'TWO' | 'THREE';
_34
};
_34
_34
export type Database = MergeDeep<
_34
DatabaseGenerated,
_34
{
_34
your_schema: {
_34
Tables: {
_34
your_table: {
_34
Row: {
_34
data: CustomJsonType | null;
_34
};
_34
// Optional: Use if you want type-checking for inserts and update
_34
// Insert: {
_34
// data?: CustomJsonType | null;
_34
// };
_34
// Update: {
_34
// data?: CustomJsonType | null;
_34
// };
_34
}
_34
}
_34
Views: {
_34
your_view: {
_34
Row: {
_34
data: CustomJsonType | null;
_34
};
_34
}
_34
}
_34
}
_34
}
_34
>

What You Get#

Now, when you query your data:


_15
const res = await client
_15
.from('your_table')
_15
.select('data->bar->baz, data->en, data->bar');
_15
_15
if (res.data) {
_15
console.log(res.data);
_15
// TypeScript infers the shape of your JSON data:
_15
// [
_15
// {
_15
// baz: number;
_15
// en: 'ONE' | 'TWO' | 'THREE';
_15
// bar: { baz: number };
_15
// }
_15
// ]
_15
}

Get Started#

Start using this feature with our guides:

Supabase CLI 2.7.0 adds support for bundling Edge Functions with static files.

You can access bundled files via Deno's file-system APIs. Here's an example function that serves a PDF file.


_14
import fs from 'node:fs'; // This should be the first import to prevent other modules to trying to use their own polyfills.
_14
_14
_14
Deno.serve(async () => {
_14
return new Response(
_14
await Deno.readFile("./my-book.pdf"),
_14
{
_14
headers: {
_14
"Content-Type": "application/pdf",
_14
"Content-Disposition": 'attachment; filename="my-book.pdf"',
_14
},
_14
},
_14
);
_14
});

Use cases#

  • Use custom Wasm modules in your Edge Functions (check this guide for more details on how to write & use wasm modules in Edge Functions)
  • Create paywalls for serving digital content like ebooks
  • HTML email templates for sending emails using Edge Functions

How to configure#

You will need to add static files to the function's directory to bundle them. Then, in the supabase/config.toml file for the project, add these lines:


_10
[functions.buy-book]
_10
static_files = [ "./functions/buy-book/my-book.pdf" ]

You can specify an array of files or use a glob pattern (eg: "./functions/email-templates/*.html")

Check the CLI configuration reference for more details: https://supabase.com/docs/guides/local-development/cli/config#functions.function_name.static_files

Note: This feature is currently not available with branching and will be added with the next stable release of the CLI.

March Beta 2021

Apr 6, 2021

Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing. Here's what we released last month.

This is also available as a blog post and a video demo.

Supabase Storage#

Need to store images, audio, and video clips? Well now you can do it on Supabase Storage. It's backed by S3 and our new OSS storage API written in Fastify and Typescript. Read the full blog post.

Connection Pooling#

The Supabase API already handles Connection Pooling, but if you're connecting to your database directly (for example, with Prisma) we now bundle PgBouncer. Read the full blog post.

React UI Component Library#

We open sourced our internal UI component library, so that anyone can use and contribute to the Supabase aesthetic. It lives at ui.supabase.io . It was also the #1 Product of the Day on Product Hunt.

CLI#

Now you can run Supabase locally in the terminal with supabase start. We have done some preliminary work on diff-based schema migrations, and added some new tooling for self-hosting Supabase with Docker. Blog post here.

OAuth Scopes#

Thanks to a comunity contribution (@_mateomorris and @Beamanator), Supabase Auth now includes OAuth scopes. These allow you to request elevated access during login. For example, you may want to request access to a list of Repositories when users log in with GitHub. Check out the Documentation.

Kaizen#

  • You can now manage your PostgREST configuration inside the Dashboard.
  • Our website has been redesigned. Check out our new Homepage and Blog, and our new Database, Auth, and Storage product pages.
  • We refactored some of our Filter methods to make them even easier to use. Check out the Full Text Search refactor.
  • We have added several new sections to our Docs including: Local Dev, Self Hosting, and Postgres Reference docs (all still under development).

Supabase is an open source Firebase alternative. We've now been building for one year. Here's what we released last month.

This is also available as a blog post and a video demo.

Dashboard Sidebars#

We've improved the UX of our Dashboard with sidebars in every section, including the Table view, the Auth section, and the SQL Editor.

SQL Autocomplete#

Writing SQL just got 10x easier. We added autocomplete to the SQL editor, including table & column suggestions.

Auth Redirects#

Redirect your users to specific route within your site on signIn() and signUp().

Redirect your users after sign up

Learning Resources#

We've released a new Resources section in our docs, as well as two new Auth modules: GoTrue Overview and Google OAuth.

New Region#

Launch your database in South Africa.

Kaizen#

New year, new features. We've been busy at Supabase during January and our community has been even busier. Here's a few things you'll find interesting.

This is also available as a blog post and a video demo.

Count functionality#

Anyone who has worked with Firebase long enough has become frustrated over the lack of count functionality. This isn't a problem with PostgreSQL! Our libraries now have support for PostgREST's exact, planned, and estimated counts. A massive thanks to @dshukertjr for this adding support to our client library.

New Auth Providers#

We enabled 2 new Auth providers - Facebook and Azure. Thanks to @Levet for the Azure plugin, and once again to Netlify's amazing work with GoTrue to implement Facebook.

Auth Audit Trail#

We have exposed the audit trail directly in the dashboard, as well as the GoTrue logs. Great for security and debugging.

Auth UI widget#

In case our Auth endpoints aren't easy enough already, we've built a React Auth Widget for you to drop into your app and to get up-and-running in minutes.

New auth.email() function#

We added a helper function for extracting the logged in user's email address.

New Regions#

Launch your database in London or Sydney!

Launch your database in London or Sydney

Copy rows as Markdown#

You can now copy SQL results as Markdown - super useful for adding to blogs and issues.

React server components#

If you're excited by React Server components then check out the Supabase + Server Components experimental repo. https://github.com/supabase/next-server-components

Learn#

We know that Auth can be a bit daunting when you're just starting out, so we have created some intro videos to get you up to speed in no time:

Kaizen#

  • Performance: We migrated all of our subdomains to Route53, implementing custom Let's Encrypt certs for your APIs. As a result, our read benchmarks are measuring up 12% faster.
  • Performance: We upgrade your databases to the new GP3 storage for faster and more consistent throughput.

After 10 hectic months of building, Supabase is now in Beta.

This is also available as a blog post and a video demo.

Supabase is now in Beta#

We spent months working on Performance, Security, and Reliability. Read more on our Beta Page.

This image shows our Beta Page

Improve your docs inline#

Add comments and descriptions to your Tables directly from our auto-generated docs.

Table View now has realtime changes#

Any updates that happen to your database are reflected in the Table View immediately.

Table Pagination#

Our table view now has pagination - better for working with large data sets.

Supabase raised a Seed Round#

We raised $6M from Y Combinator, Mozilla, and Coatue. You can read more on TechCrunch.

Kaizen#

  • Supabase is now 26% faster in regions which support Graviton (1460 reqs/s up from 1167 reqs/s)
  • We launched a new region in Sao Paulo.
  • Postgres Array Support. You can now edit Native Postgres array items in the grid editor or the side panel.
  • We added better support for your custom Database Types.
  • Fixed some buggy keyboard commands. We're continuously improving key commands in the Table editor.

Build in a weekend, scale to millions