Changelog

New updates and product improvements

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.

If you're only using Transaction Mode on Connection Pooler port 6543 or already using Session Mode on port 5432 then no action is required.

On February 28, 2025, Supavisor (Supabase's Connection Pooler) is deprecating Session Mode on port 6543. After this date, port 6543 will only support Transaction Mode while port 5432 continues to support Session Mode.

We’re making this change because Session Mode is already available on port 5432 and this streamlines our connection pooler’s ports and their respective modes.

Required steps:

  1. Update your application/database clients to use port 5432 for Session Mode.
  2. In your project’s Database Settings (”Connection pooling configuration”), set “Pool Mode” to “Transaction” and click “Save” (please keep in mind that this will restart all your connections connected to the Pooler).

Please reach out to our support if you have any questions or concerns regarding this change.

UI Overhaul for Log Explorer log details#

https://github.com/user-attachments/assets/1f752ebc-a814-4f1c-845f-4659a0dc87d3

The changes here addresses some UX friction whereby depending on the query, the detail panel of the log would be hard to read. We've hence updated the log detail drawing to add better spacing, the option to expand rows, and also use our TimestampInfo tooltip in the UI as well!

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

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

Toggle for enabling connection via S3 protocol in Storage#

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

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

Credit Balance Top Up#

Screenshot 2025-01-13 at 14 43 06

It is now possible to top up your credit balance through your organization's billing settings. Read more about this in our discussions page here

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

Link: https://supabase.green/dashboard/org/_/billing

Other bug fixes and improvements#

Auth

  • Fix impersonation and searching users with single quotes (PR)

Advisors

  • Add "Ask Assistant" CTA to advisor issues (PR)

SQL Editor

  • Persist last selected database (PR)

Logs Explorer

  • Add copy as CSV + JSON options (PR)

Edge Functions

  • A number of general improvements (more details in the PR) (PR)

Cron

  • Add last and next run for cron jobs (PR)

It is now possible to top up your credit balance through your organization's billing settings. On successful payment, an invoice will be issued and you'll be granted credits. Credits will be applied to future invoices only and are not refundable. The topped up credits do not expire.

Screenshot 2025-01-13 at 14 43 06 Screenshot 2025-01-13 at 14 47 01

This can be useful in many scenarios:

  • Issues with recurring payments (i.e. due to Indian banking regulations)
  • More control about how often your credit card gets charged
  • Easier for some accounting departments
  • Yearly upfront payments

If you run out of credits while you are still on a paid plan, your credit card will be charged as usual.

If you are interested in larger (>$1,000) credit packages, please reach out.

If you are using our TypeScript SDK with automatically generated types, you are in for a treat. Starting version 2.47.12, our @supabase/supabase-js SDK will correctly validate all query filter values in eq, neq and in methods. Including not only primitives, but enums as well. In both tables, views, and arbitrarily-nested relations.

When using enums, LSP auto-completion also works out-of-the-box now.

Want to start using them? See our guides for how to get started: https://supabase.com/docs/guides/api/rest/generating-types https://supabase.com/docs/reference/javascript/typescript-support

Some organizations require using all modules from a private NPM registry for security and compliance reasons. Edge Functions now supports configuring a private registry to load all NPM modules using the NPM_CONFIG_REGISTRY environment variable.

You can define a private registry in the project's .env file or directly specify it when running the deploy command:


_10
NPM_CONFIG_REGISTRY=https://custom-registry/ supabase functions deploy my-function

You will need Supabase CLI version 2.2.8 or higher to use this feature.

Note that Edge Functions also supports importing private NPM packages (which can be published on any registry).

Check the Managing dependencies guide to learn more about how to configure and use external dependencies in your Edge Functions.

Build in a weekend, scale to millions