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Β  eq,Β  neq, 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.

Build in a weekend, scale to millions