Changelog

New updates and product improvements

Introduction

We are removing app.settings.jwt_secret from the postgres database on 2024/11/22.

This setting has previously been available through our PostgREST integration, and could be accessed using current_setting('app.settings.jwt_secret') in SQL.

Why are we doing this?

The jwt_secret can be used to mint new, custom JWTs and is security sensitive. Supabase limits access to the jwt_secret , through both the dashboard and API, to specific roles (owner, admin and developer). Allowing access to this setting directly in the database can allow bypassing of these restrictions.

What do you need to do?

If you need the jwt_secret, it can be retrieved through the Supabase dashboard.

If you are using the app.settings.jwt_secret in SQL, you will need to update your function to retrieve this value from Vault.


_10
select vault.create_secret('JWT_SECRET', 'app.jwt_secret', 'The jwt secret');
_10
_10
-- retrieve the value, this replaces select current_setting('app.settings.jwt_secret')
_10
select decrypted_secret
_10
from vault.decrypted_secrets
_10
where name = 'app.jwt_secret';

Also, please consult the changelog entry for Asymmetric Keys to understand the coming changes to jwt_secret and how keys at Supabase are changing.

Table Editor Performance Improvements

We've set aside some time to look into improving the performance of the Table Editor over the past few weeks, in particular shortening both perceived and actual loading times as you navigate around the Table Editor. This all comes together in several PRs as we explored from 2 angles:

  • Optimizing the queries that are firing behind the scenes by removing redundant sections + minimise waterfall requests
  • Introducing prefetching behaviours as your mouse cursor goes through the list of tables to have the tables' contents ready by the time you open it in the UI

Performance improvements have always been a consistent topic with the team, and we don't intend to stop here! Hopefully these changes will make it smoother and faster for you to build your project with the dashboard and as always let us know any feedback! 🙂🙏 Just a button away in the top right corner of the dashboard to get your thoughts heard 😄

PRs:

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

Other bug fixes and improvements

Table Editor

  • Simplified header when rows are selected (PR)
  • Allow exporting of data on tables that are protected (PR)

Authentication

  • Fixed provider "Enabled" state when viewing user details if user's provider is LinkedIn (PR)
  • Sorting users on a column will shift users with NULL values on that column to the bottom (PR)
  • Fix "Last signed in at" column showing up as "Waiting for verification" on subsequent pages as page is scrolled down (PR)

Storage

  • Add ability to toggle image transformations from settings (PR)

🚀 Announcement: We’ve just released supabase-js version 2.46.2-rc.3, which resolves several type errors in the PostgREST client.

Notable issues resolved:

We’d love your feedback to ensure everything runs smoothly!


Important Notes:

This update might require regenerating your database types. You can do this via the Supabase CLI (≄v1.207.8) or the dashboard. For instructions, check out our guide here.


Potential Issues

This version introduces stricter alignment between runtime behavior and type inference. As a result, some types might appear "broken" but are actually being corrected.

The main changes to be aware of:

  1. The result of an embedding now correctly infers a single object or an array based on the relationship.
  2. The result of an object embedding now more accurately identifies whether the result can be null.

Before reporting a bug, please double-check that the inferred types are truly incorrect based on your query and database schema.


Bug Reporting:

If your project is hosted on Supabase, please open a support ticket here and check "Allow Supabase Support to access your project temporarily." This will enable us to investigate your database types directly.

Alternatively, you can open an issue on GitHub. Please include:

  1. The generated Database type used to instantiate the client (e.g., createClient<Database>(process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY)). If possible a minimal SQL declaration resulting in such Database type.
  2. The query where type inference failed (e.g., .from('which-table').select('which-query')).
  3. Your TypeScript version (npx tsc -v).

From Supabase CLI version 1.215.0 or higher you can configure a custom entrypoint to your Edge Functions. This can be used to write Edge Functions in pure JavaScript instead of TypeScript.

Save your Function as a JavaScript file (eg: index.js) and then update the supabase/config.toml as follows:


_10
[functions.hello-world]
_10
# other entries
_10
entrypoint = './functions/hello-world/index.js' # path must be relative to config.toml

You can use any .ts, .js, .tsx, .jsx or .mjs file as the entrypoint for a Function.

More details: https://supabase.com/docs/guides/functions/quickstart#not-using-typescript

Each Edge Function can now have its own deno.json or deno.jsonc file to manage dependencies. You will need to deploy your functions using Supabase CLI version v1.215.0 or above to make use of this feature.

How to use deno.json

Create a deno.json in your function's folder:


_10
// supabase/functions/function-name/deno.json
_10
{
_10
"imports": {
_10
"lodash": "https://cdn.skypack.dev/lodash"
_10
}
_10
}

You can now use aliased imports in your source code:


_10
// supabase/functions/function-name/index.ts
_10
import lodash from 'lodash'

To test your function locally, run supabase functions serve. When you're ready, you can deploy it to hosted platform by running supabase functions deploy function-name

For more details, check the guide: https://supabase.com/docs/guides/functions/import-maps#using-denojson-recommended

Spam validation check now added to Auth templates

We've now added a spam validation checker for your email templates in the Auth section of the dashboard! This is powered by SpamAssassin and is in hopes to assist you with writing email content in a way to avoid being marked as spam by email clients.

You will still be able to save your email templates regardless of whether you're using the built-in SMTP provider or a custom SMTP provider. However, we highly recommend fixing these warnings since they can affect email deliverability.

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

Links: https://supabase.com/dashboard/project/_/auth/templates

Other improvements and bug fixes

Authentication

  • Hovering over auth logs for a user will show relative time info (PR)
  • Allow sorting on last signed in at for users (PR)
  • Allow selection of functions that return void for auth hooks (PR)
  • Allow updating of SMS rate limit irregardless of SMS autoconfirm being enabled (PR)

Storage

  • Fix developer roles not being able to update buckets (PR)

Database

  • Fix create index "Select a table" combobox not using search input (PR)
  • Support opening tables in table editor from the schema visualizer (PR)

Logs & Analytics

  • Fix filters for log reports (PR)

Edge Functions now support importing NPM packages from private registries. You will need to deploy your functions using Supabase CLI version v1.207.9 or above to make use of this feature.

How to use packages from private registries

Create a .npmrc file within supabase/functions. This will allow you to import the private packages into multiple functions. Alternatively, you can place the .npmrc file directly inside supabase/functions/function-name directory.

Add your registry details in the .npmrc file. Follow this guide to learn more about the syntax of npmrc files.


_10
@myorg:registry=https://npm.registryhost.com
_10
//npm.registryhost.com/:_authToken=VALID_AUTH_TOKEN

After that, you can import the package directly in your function code or add it to the import_map.json (https://supabase.com/docs/guides/functions/import-maps#using-import-maps).


_10
import MyPackage from "npm:@myorg/private-package@v1.0.1"
_10
_10
// use MyPackage

To test your function locally, run supabase functions serve. When you're ready, you can deploy it to hosted platform by running supabase functions deploy function-name

Disk size usage section under organization settings

Screenshot 2024-10-13 at 03 21 37

We've added a new disk size section for paid plans to give a quick overview of each project under the organization and their respective disk sizes for better visibility over the corresponding charges. This is only an initial iteration for this UI, we do plan to add historical statistics and more to improve visibility and transparency over what you're using and what you're paying for 🙂

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

Link: https://supabase.com/dashboard/org/_/usage

Bug fixes and other improvements

Table Editor

  • Fix views filtering in table editor for local dashboard (PR)
  • Fix exporting a table that contains columns of enum array types to CSV (PR)

SQL Editor

  • Fix snippets not loading for local dashboard (PR)

Authentication

  • Support searching by properties when viewing a user's raw JSON (PR)

We’ve announced a Vercel partnership, we’re hosting an AI hackathon with our friends at Y Combinator, and we raised $80M. Let’s dive right in:

Supabase + Vercel Partnership

We released an official Vercel integration. You can quickly spin up Supabase projects from Vercel’s dashboard, with full support for Vercel templates like Supabase Starter and integrated billing through Vercel.

Full announcement

Revamped Users Management UI in Studio

Our Frontend team revamped the Auth section in Studio. You now have access to more user details, ban-user functionality, authenticated logs grouped by user, sort columns based on your preference, and a few other features requested by the community.

Changelog

Edge Functions are 2x smaller and boot 3x faster

The Edge Functions team has reduced function sizes by half and boot times by 300% in most cases when importing npm modules by lazy evaluating dependencies and reducing package section sizes as well as switching to the xxHash-3 hash algorithm.

Blog post

Supabase AI Hackathon at Y Combinator

On November 22 + 23 we’re hosting an AI-focused hackathon at Y Combinator in San Francisco. We’re welcoming anyone to apply and build the next wave of AI applications. The panel of judges will include our founders, Paul Copplestone and Ant Wilson, and YC partners.

Full announcement

Launch Week 12 Hackathon Winners

Many high quality projects were submitted for LW12’s hackathon but our panel of judges selected Whisker Jam as Best Overall Project because of its cuteness (who doesn’t love cats), funky musical instruments, and multiplayer functionality. Congratulations 👏 to @n0t_buddy who will receive the prize of mechanical keyboards.

Full list of winners | All the submissions

Quick Product Announcements

  • [Dashboard] Schema Visualizer nodes are now persisted [Changelog]

  • [Edge Functions] Serverless image transformations with ImageMagick (via Wasm) [Docs]

  • [Infra] Projects on compute instances XL and larger can create up to 5 Read Replicas [Changelog]

  • [Storage] XHTML responses only work with a Custom Domain [Changelog]

  • [Billing] Paid projects have an upgrade from Nano to Micro instance at no additional cost [Docs]

Community Highlights

  • Using Cursor to have AI build out a social network app powered by Next.js and Supabase [Video]
  • Wordle Teams. Compete with friends, keep score to establish bragging rights in the ultimate app for Wordle enthusiasts [Repo]
  • Next.js + TanStack Query + Supabase + Supabase Cache Helpers: a detailed tutorial on how to implement this stack in your application [Article]
  • Supabase Auth: The Ultimate Authentication Solution for Cross-Platform Apps using React Native [Article]
  • How to build local-first Expo Apps [Video]

Supabase $80 Million Series C

We raised $80 million Series C in an up round that brings our total funding to $196 million. This round was led by Peak XV and Craft Ventures with participation by Avra Capital and previous investors Coatue, Felicis, and Y Combinator.

Full announcement


This discussion was created from the release Developer Update - September 2024.

We improved the information architecture (IA) on our docs site.

Why?

We’d outgrown the IA! As we added more features and guides, some sections grew to contain a miscellaneous collection of things that don’t belong together. They just had no better place to go.

With the new IA, it should be easier to find what you’re looking for.

Summary of changes

  • Two top-level menus, Build and Manage, to replace the old Build menu
  • Build menu:
    • Local development / CLI is now primarily about local dev, CI/CD information has been moved to Deployment
    • Information on both Vercel and Supabase integrations now moved to Integrations section
    • New Deployment section covers everything needed to get your changes onto hosted Supabase (including branching, Terraform, CI/CD, and production checklists)
  • Manage menu:
    • Platform management (formerly “Platform”) trimmed down to contain information about configuring your Supabase platform (including account management, project permissions, and billing)
    • New Monitoring and troubleshooting section contains troubleshooting guides and information on logging and telemetry

Build in a weekend, scale to millions