Changelog

New updates and product improvements

Supabase HTTP APIs are no longer using DigiCert as the root CA. This should have no impact on the vast majority of environments, as the other CAs in use are essentially universally trusted.

If your client environment only trusts certificates signed by DigiCert, you could be impacted. We're currently using Cloudflare to serve our HTTP APIs, and recommend ensuring that any client environment that only trusts a specific subset of CAs trusts all of the CAs Cloudflare uses.

In an effort to simplify pricing, we are going to remove usage-based billing for the number of Edge Functions in your projects. Instead, we are going for a bigger quota across all plans at no extra costs. We picked the limits to ensure all customers are benefiting from this change.

Free Plan customers can now create 25 instead of 10 functions without the need to upgrade to a paid Plan.

Free PlanPro PlanTeam Plan Enterprise Plan
Before10 included100 included, then $10 per additional 100100 included, then $10 per additional 100Custom
After25 included500 included1000 includedUnlimited

This change is effective immediately and in case you were previously exceeding the number of included functions on a paid Plan, you will no longer be charged for it.

These breaking changes are rolling out on July 26, 2024 and affects all organizations that have members assigned either the Developer or Read-Only roles.

All Supabase organizations invite users and assign them to one of the following roles as part of membership to an organization:

  • Owner
  • Administrator
  • Developer
  • Read-Only (available only on Team and Enterprise plans).

Depending on the role, members are authorized to access a specific set of the organization's resources, such as permission to create a new project or change the billing email.

We recently re-evaluated the access that the Developer and Read-Only roles have and decided to implement changes to restrict them on a couple of resources to improve your organizations' security.

On July 26, 2024, we will turn off certain access that the Developer and Read-Only roles currently have to your organization's resources. The following table is to illustrate the breaking changes that will be going into effect:

ResourceActionDeveloperRead-Only
Integrations1
Authorize GitHub-✅ → ❌✅ → ❌
Add GitHub Repositories-✅ → ❌✅ → ❌
GitHub ConnectionsDelete✅ → ❌2
Vercel ConnectionsUpdate✅ → ❌2
Delete✅ → ❌2

You can learn more about our Platform Access Control here: https://supabase.com/docs/guides/platform/access-control.

If you have any questions or concerns please contact support.

Footnotes

  1. Existing integrations will continue to work.

  2. Role's permission to the resource and action will remain the same. 2 3

Option to use a dedicated api schema for your project

By default, the public schema is used to generate API routes for your database. In some cases, it's better to use a custom schema - this is important if you use tools that generate tables in the public schema to prevent accidental exposure of your data.

The dashboard supports this workflow through 2 options: either at the project creation step under "Security Options", or in the project's API settings after your project has been created. More information about this workflow in our documentation here!

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

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

Other bug fixes and improvements

SQL Editor

  • Text area under AI assistant is now expandable for better UX with multi-line prompts (PR)

Database

  • Added placeholder for function body editor section to hint the syntax if language selected is plpgsql (PR)

Logs Explorer

  • Fixed logs explorer placeholder query for local set up (PR)

Supabase support for Postgres 13 is being deprecated as of 15th July 2024, and support for it will be fully removed on 15th November 2024.

All Postgres 13 projects should be upgraded to Postgres 15 before 15th November, 2024.

Any projects still on Postgres 13 after the 15th of November 2024 will be automatically upgraded to Postgres 15. If any Postgres extensions or functions are in use that cause the upgrade process to fail, a backup will be taken instead, and the project will be paused.

Postgres 15 comes with numerous features, bug fixes and performance improvements. Check out the announcement blog posts to find out what each version introduces.

Deprecation Timeline

  • 15th July: All users are notified via email about Postgres 13 Deprecation. Users can self-serve upgrade to Postgres 15 from our dashboard.
  • 30th September: Users are reminded of impending deprecation via email.
  • 30th October: Users are sent a final email reminder.
  • 15th November: Any remaining projects on PG13 start getting migrated to PG15 (or paused, if there are upgrade issues).

Option to disable Data API when creating projects

Screenshot 2024-06-24 at 6 58 14 PM

You can now opt to disable the Data API when creating a new project under a section called "Advanced Options", such that you will only be able to connect to your database via connection string. Note that this setting can be subsequently updated again in the project's API settings if and when you want to connect your project via the client libraries.

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

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

Authorization for Realtime is now available!

You can now control client access to Realtime Broadcast and Presence by adding Row Level Security policies to the realtime.messages table! Read more about through our documentation here!

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

Link: https://supabase.com/dashboard/project/_/realtime/inspector\

Optimizations for table editor row count query

image

Previously, the Table Editor on the dashboard would run a select count(*) from table query to retrieve the number of rows in the table and display it in the editor (this also supports the pagination logic as well). However, understandably this query can be resource intensive and expensive if the table in question is particularly large. As such, we've chucked some optimizations around this logic to only retrieve the exact row count if the table has less than 50k rows, otherwise we'll retrieve an estimate of the row count instead. You'll still be able to get the exact row count but on demand instead.

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

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

Support showing all entity types in the database/tables page

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

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

Other improvements and bug fixes

General

  • More granular project statuses for pausing and restoration (PR)
  • Support filtering projects by status (either active or paused) (PR)

Account

  • Added instructions on how to change your email for your account (PR)

Storage

  • Fix uploading a folder to the storage explorer causes all files to be uploaded in a flat list with the folder name prefixed to the file name (PR)

Table Editor

  • Optimized table editor select query when cutting off column values (PR)

SQL Editor

  • Added labels and grid to SQL editor charts (PR)

Greater clarity on costs when creating new projects

Screenshot 2024-06-14 at 17 06 16

One of our bigger papercuts in terms of billing is customers not understand compute pricing and that they cannot launch unlimited projects for $25 in total per month. Customers also get confused with "Compute Hours" on their bill. The changes aim to alleviate any "surprise" compute charges and serves as kaizen improvement.

Changes involved are only applicable to paid plan organizations, as it's irrelevant for free plan organizations.

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

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

Address Table Editor "resorting" of rows when rows are updated and no active sorts applied

If you've tried updating a table via the Table Editor without an active sort in place, you'd have noticed that the rows seem to re-sort themselves, specifically the row that you were updating. While this is because rows are returned in an unspecified order without a sort clause from the select query, it certainly must've been a confusing UX. We've alleviated this problem by setting a default sort by clause when reading the table via the Table Editor, which will get overriden once you've set a sort via the UI.

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

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

Other improvements and bug fixes

General

  • Greater granularity in project statuses, specifically for when project is restoring, when restoring failed and when pausing failed (PR)

Database

  • Table searching is now case in-sensitive (PR)
  • Add duplicate table CTA (Similar to the Table Editor) (PR)

SQL Editor

  • Auto limit fix for when SQL query has "fetch first n rows only" (PR)
  • Preserve whitespace in results (PR)

Query Performance

  • Support index advisor for queries from Postgrest (PR)

Org Billing

  • Users can now only manage a single tax ID instead of multiple (PR)

This only impacts projects on the Free Plan because projects in any of the paid plans cannot be paused.

Beginning June 24, 2024, we're updating some project pause/restore behavior:

  • paused Free projects are restorable for 90 days following their pause date
  • any Free projects paused before June 24 will be able to restore at any point before September 22, 2024 so they have a full 90 days from when this announcement is made
  • once a project is no longer restorable, the "restore" option is replaced with an option to download the latest logical backup, taken right before the project is paused, and all Storage objects

This change is being made to enable us to maintain high development velocity on the platform. Previously, paused projects could be restored indefinitely. That creates the need for the platform to remain fully backwards compatible with outdated versions of Postgres and associated extensions. The update allows us to provide a reasonable pause/restore window while gaining the ability to evolve the platform.

Some more relevant docs here

Supabase Edge Runtime version 1.54 is compatible with Deno 1.43.

Supabase's hosted platform was upgraded to use this release when serving Edge Functions starting today.

If you're using Supabase CLI for local development latest stable release 1.176.10, it adds compatibility for Deno 1.43.

How do I find which version of Edge Runtime I'm running?

Supabase CLI (local)

When you run supabase functions serve, it should show the current version of Edge Runtime used (and its Deno compatibility)


_10
> supabase functions serve
_10
_10
Setting up Edge Functions runtime...
_10
Serving functions on http://127.0.0.1:54321/functions/v1/<function-name>
_10
Using supabase-edge-runtime-1.54.2 (compatible with Deno v1.43.0)

Hosted Platform

You can check the served_by field in log events to see which Edge Runtime version was used to serve your function .

We try our best to maintain backward compatibility in these upgrades. If you're experiencing any issues, please feel free to make a support request

Supabase underwent Consolidation Month™ to focus on initiatives that improve the stability, scalability, and security of our products. We also have exciting product announcements that we can’t wait to share. Let’s dive in!

Consolidation Month™

We kicked off Consolidation Month (no it’s not actually trademarked) during the month of May. During this time, every product team within Supabase addressed outstanding performance and stability issues of existing features. Here’s a small subset of initiatives and product announcements as part of Consolidation Month:

Auth Launches @supabase/ssr for Better SSR Framework Support

The newly released @supabase/ssr package improves cookie management, developer experience, and handling of edge cases in various SSR and CSR contexts. We’ve added extensive testing to prevent issues that users experienced with the @supabase/auth-helpers package.

Announcement

pgvector v0.7.0 Release Features Significant Performance Improvements

pgvector v0.7.0 introduced float16 vectors that further improve HNSW build times by 30% while reducing shared memory and disk space by 50% when both index and underlying table use 16-bit float. The latest version also adds sparse and bit vectors as well as L1, Hamming, and Jaccard distance functions.

Announcement

Edge Functions Improves Memory Handling

The Edge Functions team has significantly reduced the error rate for functions encountering memory issues by implementing better safeguards. This has greatly minimized errors with the 502 status code. Additionally, status codes and limits are now documented separately.

Status Codes | Limits

Dashboard Supports Bigger Workloads as Projects Grow

The Supabase Dashboard is now better equipped to handle your projects, regardless of their size. We have implemented sensible defaults for the amount of data rendered and returned in the Table and SQL Editors to prevent browser performance issues while maintaining a snappy user experience.

Announcement

Realtime Standardizes Error Codes

Realtime now emits standardized error codes, providing descriptions of their meanings and suggested actions. This enhancement improves your error-handling code and helps to narrow down whether the issue lies with the database, Realtime service, or client error.

Realtime Error Codes

RLS AI Assistant v2

We’ve improved the prompt and output of our RLS AI Assistant by including best practices found in our RLS docs and upgrading to OpenAI’s newest GPT-4o. We’ve also introduced numerous test scenarios to make sure you’re getting the right security and performance recommendations by comparing parsed SQL with the help of pg_query.

Pull Request

Quick product announcements

  • [Functions] JSR modules are supported in Edge Functions & Edge Runtime [Announcement]

  • [Functions] Debug Edge Functions with Chrome DevTools [Docs]

  • [Functions] Use HonoJS web Framework with Edge Functions [Docs]

  • [Analytics] Log Drains is in Private Alpha [Announcement]

  • [Realtime] Realtime Authorization Early Access [Announcement]

  • [Docs] SQL to PostgREST API Translator [Docs]

  • [Client libs] Supabase JavaScript SDK Sentry Integration now supports Sentry SDK v8 [Commit]

Made with Supabase

  • GroupUp - organize social gatherings to hang out with friends [Website]
  • HabitKit - track habits, view daily progress, and stay motivated as you work towards your goals [Website]
  • Meteron AI - LLM and generative AI metering, load-balancing and storage [Website]
  • EQMonitor - An app that displays and notifies earthquake information in Japan [Website]
  • GitAuto - AI software engineer that writes, reads, and creates pull requests [Website]
  • GenPPT - Free AI powerpoint presentation generator to help you create beautiful slides in minutes [Website]

Community highlights

  • Make your queries 43,240x faster [Video]
  • Exploring Support Tooling at Supabase: A Dive into SLA Buddy [Article]
  • FlutterFlow SuperApp Complex Template : Developing Feed with Supabase [Video]
  • How We Use Supabase in Betashares Direct [Video]
  • AI Assistant to Chat with Supabase Database [Video]
  • How to use wrappers in Supabase [Video]
  • Build Realtime Apps with Next.js and Supabase [Video]
  • SvelteKit & Supabase Project Build [Video]
  • Next.js 14 x Supabase — Build a Team component using shadcn [Article]
  • Create a Real Time Chat App with Supabase and Angular [Article]

This discussion was created from the release Developer Updates - May 2024.

Build in a weekend, scale to millions