Changelog

New updates and product improvements

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#

Supabase Vector: the open source Vector Toolkit for Postgres#

Storing vector embeddings in Postgres with 'pgvector' is becoming increasingly popular for AI applications, so we're building out a collection of tools to store, index, and query embeddings at scale.

Supabase Vector

Vault is now available for all projects#

Vault is a Postgres extension and accompanying Supabase UI that makes it safe and easy to store encrypted secrets and other data in your database.

Learn how to use Vault

Auth Helpers now include server-side Auth and full support for the Next.js App Router#

We have updated the Next.js Auth Helpers package to make it available across the client and server of the App Router. They also now implement server-side auth by default with PKCE - meaning the entire auth flow is now possible server-side.

Updated docs

Video course

Improving our dashboard with user feedback#

As we plan the next few months of Dashboard development, we're reaching out to users to see all the different ways people use the Dashboard in their work.

Last month, we opened up a public RFC for the Dashboard SQL Editor. It's been amazing to see how people use this tool to build their projects. If you're a heavy user of the SQL Editor, we'd love to get your feedback.

We also started doing user interviews to understand how users use the Dashboard. Our goal is to build the best possible Dashboard for all of our users, and you can help! Reach out to Terry you would like to share your experience.

Quick product announcements#

  • [Auth] You can now use Turnstile as a Captcha provider. Doc

  • [Auth] How to send a password reauthentication nonce. Doc

  • [Dashboard] Supabase Wrappers UI that supports pulling data in from Firebase, Stripe, S3, and Clickhouse. Create a Wrapper

  • [Edge Functions] Support for deploying all Edge Functions via CLI. Doc

  • [Edge Functions] Custom domains and vanity domains support for Edge Functions. PR

  • [Storage] Image Transformation is now out of Beta. Doc

  • [Postgres Extensions] pg_cron 1.5.2 (new projects only) now supports sub-minute schedules. PR

New Integrations, templates, and examples#

Day 1 - Supabase Logs: open source logging server#

Logflare is the hub of analytics streams for Supabase. We are open sourcing it so that you can self-host your own Logging infrastructure.

Blog Post Video overview

Day 2 - Supabase Edge Runtime: Self-hosted Deno Functions#

You can now self-host Edge Functions and run them in local development using our new Edge Runtime. We published a guide showing how to self-host Edge Functions with Fly and what more is coming ⚡

Blog post Video overview

Day 3 - Storage v3: Resumable Uploads with support for 50GB files#

Supabase Storage received many of the most requested features from our users: Resumable Uploads, Quality Filters, Next.js support, and WebP support.

Blog post Video overview

Day 4 - Supabase Auth: SSO, Mobile, and Server-side support#

On day 4, we introduced SSO with SAML 2.0, PKCE, and Sign in with Apple for iOS. It felt like acronym day, but it was actually Auth day!

Blog post Video overview

Day 5 - Supabase Studio 2.0 with new AI features#

Supabase Studio got a major upgrade that goes from redesigns to improved developer experience, and new tools. We have the features people have been asking for and new capabilities that will change the way you work.

Blog Post Video overview

Introducing dbdev: PostgreSQL Package Manager#

database.dev fills the same role for PostgreSQL as npm for JavaScript or pip for Python, it enables publishing libraries and applications for repeatable deployment. Our goal is to create an open ecosystem for packaging and discovering SQL.

Blog post

More product announcements#

  • Trusted Language Extensions for Postgres. [Blog post]
  • What's New in pg_graphql v1.2. [Blog post]
  • GitHub Discussions are now a new knowledge source for search & AI (Troubleshooting category only for now). [Check it out]
  • New API report with routing information for each chart, making it easier to debug API calls.  [PR]
  • Storage permission changes: the developer role is now allowed to update the storage settings (previously was only owner and admin). [PR]

GraphiQL editor in the dashboard#

The most popular GraphQL IDE/API explorer is now built into the dashboard! You can now explore and query your GraphQL API produced by pg_graphql.

Try it now.

We've updated our Docs search functionality to use pgvector + OpenAI. Still no cease and desist from Microsoft, so you can continue to ask Clippy any Supabase-specific questions 📎💚

Ask Clippy.

Serve all the functions!#

Do you use multiple Edge Functions in your project? Then celebrate! Supabase CLI 1.36+ now supports serving multiple Edge Functions at the same time.

To enable the feature, just run supabase functions serve in your project.

Check the docs.

Smaller Postgres docker images for everyone#

We rewrote the Postgres Dockerfile with multi-stage builds so that each extension is compiled in its own separate stage. This reduces the size of the image from 1.3GB to 250MB, enabling a much faster boot time.

See it yourself

New UI for Postgres Roles#

We've improved database role management. You can create, update, and delete database roles through the dashboard. Just one small step towards column-level security

Check it out.

API docs in the table editor#

API docs got a light touchup and were moved to the table editor. You can now look up API methods and generate & download type files right there ✨

Check it out.

Quick product updates#

  • Postgres Extensions: We're rolling out some fixes for several Postgres extensions. Check your Dashboard notifications to see if you need to take any actions.

  • Auth: Added full OpenAPI 3.0 spec which provides a comprehensive overview of the API with documentation on each request. PR

  • Database: supabase-js now infers the response type from your query. If the inferred type is incorrect, you can use .returns<MyType>() to override it. Doc

  • Dashboard: Improved database roles management, you can now create, update and delete database roles through the dashboard. Dashboard

  • Dashboard: We've provided a reference panel showing all available paths that can be queried from each respective source that improves the Logs Explorer experience. Dashboard

Edge Functions: upgraded to Deno 1.30.3, that supports TypeScript 4.9.x and introduces satisfies. Thanks to Benjamin Dobell 🙏. PR

  • Realtime: Broadcast only primary key(s) for deleting records when RLS is enabled and replica identity is full. PR

The first month of the year was very productive here at Supabase. Here is a highlight of what we shipped during January:

Storing OpenAI embeddings in Postgres with pgvector#

pgvector is a popular PostgreSQL extension for storing embeddings and performing vector similarity search. It was one of the most requested extensions by the AI/ML community and is now available thanks to gregnr.

Read the announcement

Meet Supabase Clippy: ChatGPT for Docs#

Greg wasted no time and took pgvector for a spin, he combined it with OpenAI to build Supabase Clippy, a next-generation doc search. The first implementation is a 1-week MVP and fully open source, so you can build on top of it.

Client library reference: Python and C##

We have released extensive reference docs for C# and Python, detailing every object and method. What are you going to build?

pg_graphql now supports Views, Materialized Views, and Foreign Tables#

Views, Materialized Views, and Foreign Tables are three database objects that provide a powerful way to access and organize and transform data without duplication.

Read the docs

Automatic WebP detection for Image Transformation#

WebP is a modern image format that provides superior lossless and lossy compression for images on the web. We are enabling format conversion by default for anyone who has Image Transformations. You can opt out by including format: origin in the transformation parameters.

Read the docs

Quick product updates#

-  Postgres Extension: Another powerful and time-tested extension, pg_repack, is added to Supabase. [PR] - Auth: Multi-tab session support using the new browser BroadcastChannel API. If a user logs out on one tab, they will now be logged out on all tabs. [PR] - Postgres: Superior speed with lz4 database compression. [PR] - Postgres: Use ICU locales and collations for text attribute ordering in database queries. [PR] - Docs: New guide on scheduling functions with pg_cron. [Guide] - Edge Functions: You can now download source codes of deployed edge functions from the CLI. [Doc]

Launch Week 6 is just around the corner! We’re saving most of November’s updated as a surprise for Launch Week, but we still had time to ship some goodies this month.

Launch Week 6 tickets#

Next week, we go all out for LW6. It’s 5 days of shipping, including major features requested by the community. You don’t want to miss a thing, so make sure to claim your free ticket (and you might win some very special SupaSwag).

Get your ticket

Remix Auth Helpers#

It’s here! The much-awaited Remix Auth Helpers make server-side auth even easier and with a better experience. Up to date with supabase-js V2 and can be used with Typescript.

Read the docs

Edgy Edge Functions#

We launched a new YouTube series, Edgy Edge Functions, where we take a deep look at a new function every week.

Plus, we published three new functions examples: Generate OG Images, Build API servers using Oak, and Generate Screenshots using Puppeteer.

Quick product updates#

  • NextAuth Supabase Adapter. Docs. This allows you to run NextAuth as your authentication server while storing user and session data in a dedicated next_auth schema in your Supabase Database. Complete with support for RLS. Do note that NextAuth is a standalone Authentication server that does not interface with Supabase Auth and therefore provides a different feature set.

  • Fixed two issues with the supabase.auth.signOut function: cookies not clearing properly and session not removed.

  • You can now customize magic links by providing access to the {{ .TokenHash }}PR

  • Now you can do redirects from your functions. PR

  • Conda support (conda install -c conda-forge supabase and everything else in py)

supabase-js v2 and supabase-flutter v1 released#

The new versions of our two most popular SDKs have been fully released. It couldn’t have happened without our amazing community, thanks to everyone involved. Now, it’s time to build 🛠

Try supabase-js V2

Try flutter-supabase V1

New Next.js quickstart & Next.js 13 example#

Next.js is all the rage right now 🔥 

Next.js Conf raised the bar for dev conferences. We had the honor of being a Gold Sponsor, so we revamped our Next.js Quickstart guide to include our pre-built Auth UI and Auth Helpers.

And Next.js 13 was announced! Making it extremely easy to fetch and cache data from our Serverless API. So we put together an example to try it out.

Supabase Auth and Server-Side Rendering#

The Auth team published an in-depth doc explaining how Supabase Auth supports server-side rendering. Includes an explanation of the authentication flow and answers to some of the more common questions.

Read the docs.

Database Testing with pgTAP#

Do you have 100% code coverage? Probably not, because that’s usually the last thing you think of, but definitely not if you don’t have database tests. We just shipped a framework for Database Tests which makes it incredibly easy to test your database using pgTAP an pg_prove.

Read the docs.

Edge Functions Update#

Functions now support GET requests! Other HTTP verbs such as PUT, PATCH, and DELETE are supported too.

Check this example

Quick Product Updates#

  • supabase-py 🐍 now has functions support! PR
  • You can now detect users’ location from Edge Functions easily by using X-Forwarded-For header. Example
  • Return provider_refresh_token along with provider_access_token. PR
  • Added a refreshSession method to allow users to forcefully refresh a session instead of waiting for it to autorefresh upon expiry. Thanks to @j4w8n for the PR 🙇🏻‍♂️
  • Logging: realtime, storage, postgrest, and pgbouncer released.
  • Trigger a file download by adding the download query parameter to your storage objects. storage-api. PR

Kaizen Week#

We did something a bit strange during September - we didn't work on features. Quite the opposite. After Launch Week we did three subsequent weeks of Kaizen, a term we use internally to deliver constant and incremental improvement. Each week had a different focus:

  • Week 1: QA and testing
  • Week 2: Documentation
  • Week 3: Issue Backlog and Automation

It's pretty rare for a company to stop feature development altogether, but luckily we're just a bunch of developers so we all know the pain of technical debt. After 5 Launch Weeks, working on testing and backlogs feels like a bit of a relief.

We saw a lot of progress across our Open Issues - closing over 250 issues and 50 Pull Requests.

Auth UI on Product Hunt#

We launched the new Auth UI on Product Hunt! Auth UI is a pre-built React component for authenticating users with Supabase Auth. It supports custom themes and extensible styles to match your brand and aesthetic.

Check out the launch.

Postgres WASM#

If you've ever wondered, "can I run Postgres inside a browser, using an embeddable Linux Virtual Machine?", wonder no longer. With our friends at Snaplet, we've released an open source Postgres WASM.

Read the blog post
Comment on Hacker News
Visit the repo: Snaplet | Supabase

Security updates#

We're making some changes to the way the Dashboard interacts with your database. These changes simplify the database permissions so that it's easier for you to migrate in and out of Supabase, and they reduce the security surface area considerably. The change will be applied automatically in November, or you can run it today via the Dashboard.

Review the Security Notice.

Quick product updates#

  • Edge functions free plan script size is bumped to 2 MB
  • functions-go was just contributed to supabase-community by Zain Khan
  • A new guide to add captcha to your sign-in, sign-up, and password reset forms
  • New Postgres Extension for monitoring your PostgreSQL database network traffic: pg_netstat
  • Added docs for how caching works in Supabase

System updates#

All projects#

New projects#

  • PostgreSQL updated to v14.1

Manual Changes Required#

Update custom auth functions#

Details#

The PostgREST release notes document some changes to the way GUC variables are handled here.

Supabase has created a config flag in the Dashboard to ensure that this will not be a breaking change. These changes are required before you can upgrade to PostgreSQL 14+, or use Realtime RLS.

Supabase has already updated all the default auth functions (auth.uid(), auth.role() and auth.email()), however we have no way of updating functions which we have not written ourselves.

Affected#

  • Any project that have custom auth functions or generally any function that use legacy GUC naming convention to access JWT claims (eg current_setting('request.jwt.claims.XXX', true).
    • This change is required for PostgreSQL 14+.
    • This change is required for Realtime row level security

Unaffected#

  • New projects
  • Existing projects who haven't written custom auth functions.

How to update#

You need to update all functions that are using the legacy GUC naming convention (current_setting('request.jwt.claims.XXX', true)) to use the new convention (current_setting('request.jwt.claims', true)::json->>'XXX').

After you have made this change, you can safely

Example#

For example, Supabase rewrote the auth.role() functions like this, to handle both legacy and new:


_19
-- PREVIOUSLY
_19
create or replace function auth.role()
_19
returns text
_19
language sql stable
_19
as $$
_19
select current_setting('request.jwt.claim.role', true)::text;
_19
$$;
_19
_19
-- UPDATED FUNCTION TO HANDLE NEW GUC NAMING SCHEME
_19
create or replace function auth.role()
_19
returns text
_19
language sql stable
_19
as $$
_19
select
_19
\tcoalesce(
_19
\t\tcurrent_setting('request.jwt.claim.role', true),
_19
\t\t(current_setting('request.jwt.claims', true)::jsonb ->> 'role')
_19
\t)::text
_19
$$;

Build in a weekend, scale to millions