Changelog

New updates and product improvements

A rundown of everything we shipped during Launch Week X

Day 1 - Supabase Studio: AI Assistant and User Impersonation

Supabase Studio received a major update that reflects our commitment to a SQL-first approach and user-centric development. Awesome features like easy RLS policies with an AI assistant, Postgres Roles, User Impersonation, and much more.

Day 2 - Edge Functions: Node and native npm compatibility

Edge Functions now natively supports npm modules and Node built-in APIs. You can directly import millions of popular, commonly used npm modules into your Edge Functions.

Day 3 - Supabase Branching

A Postgres database for every GitHub branch. Database branching means you can have separate database instances for each feature of your application.

Day 4 - Supabase Auth: Identity Linking, Hooks, and HaveIBeenPwned integration

We announced several new features for Supabase Auth: Identity Linking, Session Control, Leaked Password Protection, and Auth Hooks with Postgres functions.

Day 5 - Introducing Read Replicas

This is a huge one for anyone wanting to serve data closer to the users or distribute loads across multiple databases. Learn how we implemented Read Replicas and how to use them in your projects.

More announcements from Launch Week X

As if all that wasn't enough, we shipped even more cool stuff:

Supavisor 1.1.5

Jan 10, 2024

Released Supavisor 1.1.5

Notable

  • Pools now start with only 10 connections and create new ones up to tenant default_pool_size or user pool_size
  • Logs correct tenant id
  • API endpoints accept PATCH requests

Previously Supavisor would start a deterministic number of connection depending on the pool size specified on the tenant or tenant user.

Now Supavisor will start 10 connections and then allocate more as needed.

It was pretty easy to over-allocate your database max_connections without fully understanding what your max_connections were and how many were currently being used by other services.

This also makes migration from PgBouncer easier as it's much safer to run multiple connection poolers at the same time as you migrate, as long as they both don't need to allocate their full database connection pools.

Also an implied behavior of Supavisor was that each user connected spins up it's own pool. Without understanding this behavior it's easy to over-allocate database connections by connecting different Posgres users to the pooler.

Improve loading interface on Auth users page

Navigating between pages if your project has many users is now less jarring.

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

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

Fix viewing RLS policies of a table from table editor not selecting its schema on the RLS page

More specifically if the table does not belong to the public schema.

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

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

Fix inability to delete enumerated type from the dashboard if type name has Uppercase initial letter

Thank you @tranhoangvuit for helping us on this!

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

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

Sort RLS policies alphabetically

Once again, thank you @tranhoangvuit for helping us with this!

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

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

Released Supavisor v1.1.2

Notable

  • allow_list field on the tenant to support network restrictions
  • More docs
  • client_heartbeat_interval on the tenant to detect zombie client connections
  • Bug fixes
  • Observability improvements

The client_heartbeat_interval helps us detect client connections from behind a load balancer which are dead but did not close the TCP connection correctly. This interval defaults to one minute but is configurable per tenant.

The allow_list field on the tenant takes a list of CIDR ranges and validates incoming connection addresses against this list. The incoming client address must be in one of these ranges to be accepted.

Also, started a Supavisor FAQ!

Further to https://github.com/orgs/supabase/discussions/18654 , the threshold for transitioning large databases to use physical backups for their daily backups is being lowered to 40GB over the next few days.

Physical backups are more performant, have lower impact on the db, and avoid holding locks for long periods of time. Restores continue to work as expected, but backups taken using this method can no longer be downloaded from the dashboard.

Over the next few months, we'll be introducing functionality to restore to a separate, new database, allowing for the perusal of the backed up data without disruption to the original project.

Please refer to supabase.com/docs/guides/platform/backups#daily-backups-process for additional details.

Launch Week X is just over, but the fun doesn't stop! This changelog summarizes what has been released for Studio over last week as well as other improvements that we shipped behind the scenes while Launch Week X was ongoing.

Supabase Assistant (For Auth RLS policies)

https://github.com/supabase/supabase/assets/19742402/c10ab0bc-a2be-4739-be3a-5eb6ef802af1

We've got a new RLS Editor that brings SQL front-and-center, giving developers access to the full potential of Postgres rather than abstracting it away. Accompanying it is an AI assistant that has been tuned to produce SQL for Row Level Security policies, making it fast and easy to get your policies setup the way you need them.

If you're keen to give this a spin, you may enable this feature from the Feature Previews section (which we'll cover more in the last section of this changelog) while you're in a project. This will replace the current UI for creating RLS policies with this new AI assisted RLS Editor UI.

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

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

Postgres Roles & User Impersonation

Run queries in Studio using different roles - this is potentially a powerful tool for testing your Row Level Security policies and determining which data each role can access. You may also impersonate a specific user in Studio by "minting" a JWT with their ID and then running the queries using that JWT.

This feature is available not just in the Table Editor, but also in the SQL Editor, GraphiQL interface, and Realtime Inspector (which we'll talk about more right in the next section below)

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

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

Realtime Inspector

An easy way to prototype, inspect, and debug Realtime directly in the Studio. You can use the Realtime Inspector to view messages being sent and received in channels, and also filter messages by type: presence, broadcast, and database changes.

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

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

Feature Previews

Our new tool for unveiling new features - we'll release beta features as previews before making them generally available. This will help us to get features out to you faster, make it easier for you to give us feedback, and also shorten the iteration loop.

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

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

Auth Settings added option to support manual identity linking

Supabase Auth allows a user to initiate identity linking with a different email address when they are logged in. More information can be found in our documentation here.

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

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

Table Editor support selecting types from the extensions schema when creating/editing columns

Database extensions that are installed through the dashboard on the database/extensions page are, most of the time, installed by default in the extensions schema (as it's the default dropdown option) unless the extension has a schema that it's required to be in, or the user changes it to be installed in another schema.

If the installed extension (e.g vector) has enumerated types, the Table Editor then can access those types for users to assign them to columns, without having the user to install them in another schema.

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

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

Network Bans highlight IP Address if it belongs to the current logged-in user

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

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

Server-Side Auth in Next.js 14

We've released @supabase/ssr, which makes it super easy to use cookies for storing user sessions. We’ve updated npx create-next-app -e with-supabase to use @supabase/ssr and made it compatible with Next.js 14.

Read the blog post.

pgvector vs Pinecone

pgvector is becoming the vector store of choice for developers. We’ve put it to the test against Pinecone and found that it performs better on cost and query throughput, without sacrificing accuracy.

See the full benchmarks

Manage storage buckets from the command line

You can now manage Storage buckets with the Supabase CLI:

  • supabase storage ls -r: show all buckets and objects
  • supabase cp -r readme.md ss:///bucket: upload local files to bucket
  • supabase cp -r ss:///bucket: download objects from bucket
  • supabase rm -r ss:///bucket: delete files from bucket

Managing Storage buckets with CLI works best if there are less than 100k objects in your bucket and each of them is smaller than 20MB. Reference docs are here.

What's new in Supabase Studio?

Supabase Studio is improved many times per day, here is some of what's new:

  • Better error surfacing in SQL Editor. [PR]
  • Break out auth rate limit fields into a separate page. [PR]
  • Enumerated types management. [PR]
  • New API side panel. [PR]
  • Audit logs for organizations available on Team plan.

Check them out.

Multi-factor Authentication in Supabase Studio

Secure your Supabase account with Multi-Factor Authentication. You can now add a time-based one-time password (TOTP), managed by apps such as 1Password, Authy, Google Authenticator or Apple's Keychain.

Check out the doc

Quick product announcements

  • [Auth] LinkedIn OIDC provider. [PR]
  • [Auth] Use token to include the redirect URL in your email template. [PR]
  • [pgvector] Upgrade 0.5.1 (faster HNSW index builds). [Release]
  • [Dashboard] Scopes for OAuth apps. [PR]
  • [Postgres] pg_jsonschema upgrade 0.1.4 to 0.2.0. [Release]
  • [Supavisor] Starts providing Docker Images. [Docker]
  • [GraphQL] GraphQL user defined functions now supported following the pg_graphql upgrade from 1.2.3 to 1.4.2. [Docs]

Broadcast realtime messages via REST API

You can now broadcast Realtime messages to all your connected users by simply using a REST API call, removing the need to connect to a WebSocket. This will be especially useful with our Edge Functions!

Broadcast docs

Supavisor is now used for connection pooling in all new projects

Less than two months ago, we announced Supavisor, our own Postgres connection pooler that handles millions of connections. It’s now available in all new projects. You can continue using pgbouncer alongside Supavisor, however, it will be deprecated effective January 15th, 2024.

Learn more

Moving to IPV6 for Database Connection Strings

With IPv4 addresses becoming increasingly scarce and cloud providers starting to charge for it, we won’t be assigning IPv4 addresses to Supabase projects from January 15th, 2024. [db.projectref.supabase.co](http://db.projectref.supabase.co) will start resolving to a IPv6 address instead. If you plan on connecting to your database directly, you must ensure that your network can communicate over IPv6. Supavisor will continue to return IPv4 addresses, so you can update your applications to connect to Supavisor instead.

Learn more

New Foreign Data Wrapper: Airtable

Introducing the latest addition to our Wrappers lineup: Airtable! You can use it to query data from your Airtable bases and tables directly from Postgres:


_10
select * from my_airtable_table;
_10
# data from Airtable

Read the Airtable Wrapper docs Learn about Wrappers

Supabase Studio's latest enhancements

Supabase Studio is under constant improvement, here is what’s new:

  • Added UI support for cascade updates
  • Improved JSON previewing and editing
  • Button for toggling Realtime right from the Table Editor
  • See View definition and open it in the SQL Editor to modify
  • UI to view and unban IP addresses to manage banned IPs more conveniently
  • Import CSV files at the table creation stage and a new button to download the table as CSV

Try them out

HNSW Support for Vecs + pgvector

Added HNSW support inside Vecs, our Python library for pgvector. Vecs automatically creates schemas and collections inside your database, making it one of the easiest ways to get started with pgvector.

Read the HNSW docs

Quick product announcements

  • [PostgREST] JWT caching just landed. API requests are about to get 100ms faster. [PR]
  • [Auth] Added a default in-memory storage mechanism to allow using supabase-js in these environments to fall back to use this default storage mechanism now. Upgrade to supabase-js v2.36.0 or gotrue-js v2.54.0 for the latest changes. [PR]
  • [Edge Functions] Supports much simpler API for creating functions Deno.serve(req => new Response("ok")). No http standard library dependency needed. (Thanks eifr for contributing with updated CLI templates. [PR]
  • [Edge Functions] You can manage the secrets for your project's Edge Functions via the dashboard. [Try it now]

pgvector v0.5.0: Faster semantic search with HNSW indexes

pgvector v0.5.0 adds Hierarchical Navigable Small World (HNSW), a new type of index that ensures lightning-fast vector searches, especially in high-dimensional spaces and embeddings.

Blog post

Day 1 - Hugging Face is now supported in Supabase

We are all about open source collaboration, and Hugging Face is one of the open source communities we admire most. That’s why we've added Hugging Face support in our Python Vector Client and Edge Functions (Javascript).

Day 2 - Supabase Local Dev: migrations, branching, and observability

The CLI received some serious upgrades including observability tools, streamlined backups, and enhanced migrations. But that's not all – the big game-changer is the introduction of Supabase branching which we’re rolling out to selected customers.

Day 3 - Supabase Studio 3.0

Supabase Studio brings some huge new features, including AI SQL editor, Schema diagrams, Wrappers UI, and a lot more!

Day 4 - Supabase Integrations Marketplace

With the release of OAuth2 applications, we've made it easier than ever for our partners to extend the Supabase platform with useful tooling.

Day 4 - Vercel Integration 2.0 and Next.js App Router Support

The New Supabase x Vercel integration streamlines the process of creating, deploying, and maintaining web applications with several enhancements. Plus, it fully supports the App Router in Next.js ▲

Blog post

Day 5 - Supavisor: Scaling Postgres to 1 Million Connections

Supavisor is a scalable, cloud-native Postgres connection pooler written in Elixir. It has been developed with multi-tenancy in mind, handling millions of connections without significant overhead or latency. We’re rolling it out to every database on our platform.

Community Highlights from the past 4 months

Launch Week is an event for our community, so it’s a good time to look back at what happened in the last months (spoiler: a lot).

Blog post

HIPAA and SOC2 Type 2

Supabase is officially SOC2 Type 2 and HIPAA compliant! In this write-up, we offer insights into what you can expect if you’re planning to go through the same process.

Blog post

More product announcements

Shipping doesn’t stop here at Supabase! We are back in full shipping mode and already thinking about the next LW. These are some of the things we’ve been working on:

Native Mobile Auth Support for Google and Apple Sign in

Supabase Auth now has full native support for Sign in with Apple and Google, which means it can now be used with one-tap sign in methods like Sign in with Apple JS, Sign in with Google for Web, or even in Chrome extensions.

Learn more

Supabase CLI: what is new?

It’s been a busy month for the Supabase CLI. We have added a tonne of new features:

See all updates

Revamped billing experience

We have made huge improvements to the billing tooling inside Supabase Studio, including:

  • Easy monitoring of current usage, overage, and plan limits.
  • Streamlined subscription management for upgrades or downgrades.
  • Detailed usage billing breakdowns and compute instance specifications.
  • And more!

New subscription page | New usage page

Login with Kakao

Added the popular social platform Kakao as new social provider. Allow your users to effortlessly sign in using their Kakao accounts and make authentication a breeze while expanding your app's reach to a wider audience.

Login with Kakao

Quick product updates

  • [Postgres Tooling] Implemented parallel Index build in regular and recovery state into OrioleDB. [PR]
  • [Edge Functions] Edge Functions troubleshooting guide. [Doc]
  • [Storage] Object id is now returned in the response when uploading an object. [PR]
  • [Realtime] A new debugging tool to test your realtime endpoints together with your JWTs and Row Level Security policies. [Realtime Inspector]
  • [Docs] A full guide on database partitions for developers looking to scale up. [Guide]

Launch Week alert: save the date

Build in a weekend, scale to millions