Changelog

New updates and product improvements

This is now live! Read the blog post.

Introduction#

We are introducing asymmetric key cryptography to Supabase Auth in Q4 2024 on 7th October 2024. This will be provided as an additional option to the JWT secret currently shown in the JWT settings page.

Why are we doing this?#

Supabase Auth has always been using a symmetric secret (known as the JWT secret) for signing and verifying JWTs. While this is simple and convenient (since the same secret is used for both signing and verifying), it presents the following problems:

  1. Extra network request required to verify the user’s JWT with the symmetric secret. Currently, one needs to make a request to Supabase Auth in order to verify the user’s JWT or copy the JWT secret into their environment. While the latter suggestion improves performance, it can result in security implications if the secret is accidentally leaked, which requires all your keys to be rolled.
  2. Difficult to roll with zero downtime. Since the symmetric secret cannot be shared publicly, developers need to wrangle with rolling the secret across their environments while ensuring that the new secret is used.

Benefits of using asymmetric keys#

Asymmetric keys rely on public / private key cryptography, which means that the private key is only used for signing, while the public key is only used for verifying. This solves the above problems in the following way:

  • Usage of asymmetric key cryptography rather than a shared symmetric secret for signing and verifying JWTs. Since asymmetric keys don’t use a shared secret, there is less risk of the secret being leaked.
  • Faster JWT verification times since there’s no need to make a network call to Supabase Auth via getUser() . The public key can be used for verifying the JWT. Note that adding the symmetric secret to your server-side environment to verify the JWT also has the same effect but is potentially less secure since there is an increased risk of the secret being leaked if it is used in multiple applications.
  • Zero-downtime key rotation. Public keys can be exposed in a JSON Web Key Set (JWKs) format, which allows any one of them to be used for verification. When the asymmetric key is rotated, we can still keep the previously used public key in the JWKs endpoint to verify existing JWTs. New JWTs will be signed by the new asymmetric key.

These will include the following changes:

  • A public JWKs endpoint for retrieving the public JWK to verify JWTs. This will be exposed through the https://<project_ref>.supabase.co/auth/v1/.well-known/jwks.json endpoint. The symmetric secret will not be exposed through this endpoint for security reasons.
  • A new method called getClaims() , which handles verifying the JWT and returning the claims in it.
  • Ability to download the public keys in different formats through the dashboard (e.g. PEM, JWKs).

Migration to Asymmetric JWTs#

New projects that are created after 1st May 2025 will be created with an RSA asymmetric key by default. Existing projects can choose to start using asymmetric keys by doing the following:

  1. Ensure that you are using the new API keys.
  2. Update all your clients to use at least supabase-js version x.x.x (the version number will be updated closer to the release date). In this version, we are introducing a new method called getClaims which handles verifying both symmetric and asymmetric JWTs:
    • Example successful response payload for getClaims()


      _29
      {
      _29
      "data": {
      _29
      "iss": "https://projectref.supabase.co",
      _29
      "sub": "565dafb5-fd66-4274-9c37-f0ff720f5637",
      _29
      "aud": "authenticated",
      _29
      "exp": 1824717902,
      _29
      "iat": 1724717902,
      _29
      "email": "foo@example.com",
      _29
      "phone": "",
      _29
      "app_metadata": {
      _29
      "provider": "email",
      _29
      "providers": ["email"]
      _29
      },
      _29
      "user_metadata": {
      _29
      ...
      _29
      },
      _29
      "role": "authenticated",
      _29
      "aal": "aal1",
      _29
      "amr": [
      _29
      {
      _29
      "method": "oauth",
      _29
      "timestamp": 1724717902
      _29
      }
      _29
      ],
      _29
      "session_id": "479c1cbf-bd52-42d4-894f-1519f39b3241",
      _29
      "is_anonymous": false
      _29
      },
      _29
      "error": null
      _29
      }

    • Using getClaims() to verify the JWT


      _13
      import { createClient } from 'supabase/supabase-js'
      _13
      _13
      const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)
      _13
      _13
      // previously, using getUser() requires making an
      _13
      // additional network request to Supabase Auth to verify the JWT
      _13
      //
      _13
      // const { data, error } = await supabase.auth.getUser()
      _13
      _13
      // getClaims() will always return the JWT payload if the JWT is verified
      _13
      // If it's an asymmetric JWT, getClaims() will verify using the JWKs endpoint.
      _13
      // If it's a symmetric JWT, getClaims() calls getUser() to verify the JWT.
      _13
      const { data, error } = await supabase.auth.getClaims(jwks)

  3. Create an asymmetric key through the dashboard. At this point the symmetric JWT moves to a Previously Used state. Existing JWTs signed with the symmetric JWT continue to be valid, but new JWTs are signed via the asymmetric JWT. Note: The UI mockup below is subjected to change and is just meant to illustrate the different possible states of a signing key.

  1. After the JWT expiry period, you can safely revoke the “Previously Used” symmetric JWT, since new JWTs will now be signed with the asymmetric key.

Frequently Asked Questions#

  • What do I need to do before I can start using asymmetric keys in Supabase Auth?
    • See migration section above for the detailed steps
  • Can I create a symmetric key after I create an asymmetric key?
    • Yes. You will still be able to create a new symmetric key under the JWT settings page in the dashboard. New projects will be created with an asymmetric key by default on 1st May 2025.
  • Will the private asymmetric key be exposed?
    • No. Only the public keys will be exposed in various formats (e.g. PEM, JWKs) since those are needed for verification.
  • Will I be able to bring my own private key?
    • Yes, you can bring your own private key as long as it complies with the key types allowed.
  • What key types can I use to create asymmetric JWTs?
    • By default, asymmetric keys will be created with RS256 by default. You can optionally choose to use ECC or Ed25519. ECC keys are more performant, but not as widely supported as RS256. You can also fallback to HS256 (symmetric keys).
TimestampLatest Update
17th June 2025Early access to new API keys launched, available on all projects. Please give them a try and raise any issues in this discussion for the team to fix or address.

We’re changing the way API keys work in Supabase to improve your project’s security and developer experience. Refer to the timetable below for key dates and info on actions you may need to take in the future.

This change starts out as early preview and is opt-in. No action necessary until at least 1st November 2025. We strongly encourage you to give the new API keys a try!

What's the change?#

These are the planned changes for the API keys:

  • anon and service_role keys remain available for use.
  • A single publishable key with the form sb_publishable_... can be used to replace the anon key.
  • You can create multiple secret keys with the form sb_secret_.... You can also choose not to have a secret key if you don’t need one. Secret keys replace the service_role key.
  • You can disable and re-enable the anon and service_role keys, as needed during the migration period.

Summarized, there are 4 types of API keys that can now be used with Supabase. This chart should illustrate it better:

TypeFormatPrivilegesAvailabilityUse
Publishable keysb_publishable_...LowPlatformSafe to expose online: web page, mobile or desktop app, GitHub actions, CLIs, source code.
Secret keyssb_secret_...ElevatedPlatformOnly use in backend components of your app: servers, already secured APIs (admin panels), Edge Functions, microservices, etc. They provide full access to your project's data, bypassing Row Level Security.
anonJWT (long lived)LowPlatform, CLIExactly like the publishable key.
service_roleJWT (long lived)ElevatedPlatform, CLIExactly like secret keys.

Timetable#

Key DatesDescriptionUser Action Needed
June 2025Early preview and Introduction of new API keys.

New projects will automatically generate both new API keys and legacy API keys to help ease the transition.

Existing projects can continue to use the legacy API keys and can opt in to use the new API keys by manually generating them.
No immediate action needed. We recommend trying them out and preparing your projects for a future migration.
July 2025Full feature launch of new API keys.

Feedback and issues seen in the early preview period to be resolved.
No immediate action needed. We strongly recommend that you migrate to use the new API keys or start planning for it. Dashboard and docs will focus on new API keys.
November 2025We will start sending you monthly reminders to migrate off legacy API keys and start using the new keys.

Projects restored from 1st November 2025 will no longer be restored with the legacy API keys.

New projects no longer have anon and service_role available for use.
You are highly encouraged to migrate off to use the new API keys before this date since paused projects that are restored risk being broken as they won’t have the legacy keys.
Late 2026, TBCLegacy API keys will be deleted and removed from the Docs / Dashboard.You have to migrate to use the new API keys by this point or your app will break.

Why are we doing this?#

Since the start of Supabase, the JWT-based anon and service_role keys were the right trade-off between simplicity and relative security for your project. Unfortunately they pose some real challenges in live applications, especially around rotation and security best practices.

The main reasons for making this change are:

  • Tight coupling between the JWT secret (which itself can be compromised, if you mint your own JWTs) and the anon (low privilege), service_role (high privilege), and authenticated (issued by Supabase Auth) Postgres roles.
  • Inability to independently rotate each aspect of the keys, without downtime.
  • Inability to roll-back an unnecessary or problematic JWT secret rotation.
  • Publishing new versions of mobile applications can take days and often weeks in the app review phase with Apple's App Store and Google's Play Store. A forced rotation can cause weeks of downtime for mobile app users.
  • Users may continue using desktop, CLI and mobile apps with very old versions, making rotation impossible without a forced version upgrade.
  • JWTs had 10-year expiry duration, giving malicious actors more to work with.
  • JWTs were self-referential and full of redundant information not necessary for achieving their primary purpose.
  • JWTs are large, hard to parse, verify, and manipulate -- leading to insecure logging or bad security practices.
  • They were signed with a symmetric JWT secret, preventing future development of Auth features.

Start using the new API keys#

It’s easy to start using the new API keys. You can opt in in the Supabase dashboard. This will create the default publishable key and a single secret API key.

For the most part, you can substitute the sb_publishable_... and sb_secret_... values anywhere you used the anon and service_role keys respectively. They work roughly the same in terms of permissions and data access.

You can initialize any version of the Supabase Client libraries with the new values without any additional changes, and we don't expect any backward compatibility issues.

Key differences to be aware of#

We've redesigned how the Supabase hosted platform deals with API keys with a few key goals:

  • Advanced and enterprise-ready security features
  • Zero-downtime rotation
  • Solid foundations for the introduction of asymmetric JWT support and other Auth features requiring this

To achieve these, the new API keys have some subtle differences from anon and publishable:

  • Permission and access control. Secret keys are hidden by default and need to be individually "revealed." Each event appears in your organization's Audit Log.
  • Instant revocation. By deleting a secret key it is instantly revoked.
  • Forbidden use in a browser. Using a secret key in a browser is no longer possible and will always fail with HTTP 401 Unauthorized.
  • Limitation with Realtime: Connections last 24 hours when there’s no signed in user, or when using a secret key. Sign users in to extend connections indefinitely.
  • Limitation with Edge Functions: Edge Functions provide the option --no-verify-jwt which means they can be called without knowing any API key. You will need to apply this option to functions you are protecting without it.
  • Use of the Authorization header. It is no longer possible to use a publishable or secret key inside the Authorization header — because they are not a JWT. Instead pass in the user’s JWT, or leave the header empty. For backward compatibility, it is only allowed if the value in the header exactly matches the value in the apikey header.

We believe these limitations are minor and not likely to impact even a single-digit percentage of existing customers. Should you find any additional limitation do not hesitate to bring it up in this discussion or via Supabase Support.

Schema Visualizer nodes are now persisted#

This was yet another request that we've commonly heard from everyone and we're taking a first step to making this happen 😄 Position of the nodes will now be stored within local storage so that you won't have to re-position them each time you land on this page. We've also added a button to help arrange the nodes automatically if that might be preferred!

Note that if you add new tables to the schema however, the node positions will be defaulted to a certain position that may overlap with other nodes - we're definitely looking into how we can make that better so that new nodes can be easily identified (and then shifted around to your liking 🙂)

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

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

Other improvements and bug fixes#

General

  • Minor improvements to layouts and buttons to ensure their visibility on smaller screens (PR)
  • Fix project status filter on home page to only show active projects if only the active checkbox is checked (PR)

Table Editor

  • Fix client crash when creating an empty table with no columns (PR)
  • Fix handling of of large JSON / text fields in the side panel text editor (PR)

SQL Editor

  • Add client side validation for query size (max 1MB) (PR)
  • Couple of fixes around adding a new folder with the same name as an existing one (PR)

Database

  • Update Stripe Wrapper with more tables (PR)
  • Remove docs button for database extensions that have no documentation yet (PR)

Supabase Edge Runtime version 1.57 is compatible with Deno 1.45.

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

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

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.58.2 (compatible with Deno v1.45.2)

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

Upgrade your organization directly from our pricing page#

https://github.com/user-attachments/assets/2262d816-0c69-4c58-a6e2-1ce4868122f2

Users who are logged in will now be able to select and upgrade their organization from the pricing page itself when clicking on the Upgrade to Pro / Team plan buttons. This is mainly to help streamline this process so that users can upgrade their existing organizations, and prevent confusions where users end up creating new paid organizations instead.

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

Link: https://supabase.com/pricing

UI improvements around credit card billing information#

Screenshot 2024-08-29 at 12 45 11

The selected payment method on the billing page is easily missed as you'll need to scroll down before finding it. In particular with outstanding invoices, it may not be obvious that the wrong card (or even expired card) might have been selected as the default. As such we now will

  • Indicate which cards are about to expire (within the current month)
  • Indicate which cards have expired
  • Show the selected payment method, along with a quick link to change it on the invoices page

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

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

Set payment method as default when adding a new payment method#

Screenshot 2024-08-27 at 17 59 50

When adding a new payment method, we have now added a checkbox to set the card as default which is toggled on by default. This should resolve a UX issue whereby customers needed to explicitly set the card as default in a separate manual step after adding it.

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

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

Choose which schemas to share with OpenAI#

This mainly applies to wherever the Supabase AI assistant is present in the dashboard (SQL Editor + RLS policies). You can now choose which schemas to share with OpenAI as opposed to sending information from all schemas in hopes to improve the output quality of the assistant by only sharing relevant information for your prompts to the assistant.

Do keep in mind that you'll need to opt in to sending anonymous data to OpenAI prior to doing this 🙂 You may also verify exactly what data is being sent here as well under "Important information regarding opting in"!

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

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

Other improvements and bug fixes#

General

  • Show which is the last sign in method used on login page (PR)
  • Added 3 new regions to spin up projects from: Ohio, Stockholm, Paris, and Zurich (PR)
  • Commands added for cmd+k to search and open snippets in the SQL Editor (PR)
  • Support pasting image (via Cmd/Ctrl + v) in the feedback widget (PR)
  • Use expanding text area for RLS AI assistant for multi line prompts (PR)

Table Editor

  • Save last selected schema, no longer defaults to public schema (PR)
  • Set the correct schema in the schema selector when opening a table via URL directly (PR)
  • Support exporting table data as SQL seed file (PR)
  • Couple of fixes for bugs around composite foreign keys (PR)
  • Improve display of estimated row count for the table if the table has > 50k rows, to emphasize that it's an estimated count (PR)
  • Spreadsheet import now checks column types from imported spreadsheet (PR)

SQL Editor

  • Fix folder name editing where clicking on the input field toggles the folder (PR)
  • Support opening cell value via right click into a side panel for a more detailed view (PR)

Auth

  • "With check" checkbox is toggled on by default for commands that involve a with check expression (PR)

Storage

  • Support searching and sorting buckets (PR)

Logs Explorer

  • Support copying cell content via context menu (PR)

The SQL Editor got an upgrade this week, finally letting you organize snippets into folders!

  • Favourites and Shared snippets are in folders now
  • Organize Private snippets in folders as you like
  • Share snippets with your team as you could before

Link: https://supabase.com/dashboard/project/_/sql/new PR: https://github.com/supabase/supabase/pull/27881

Other bug fixes and improvements#

Project compute size badge

  • See project compute details and upgrade right from the home screen (PR)

SQL Editor

  • Update the SQL Editor AI Assistant model to the latest from OpenAI (PR)

tldr:

  • No changes for Free Plan users
  • Billing for paid plan organizations will be based on provisioned disk rather than used database space:
    • Each project starts with 8 GB disk provisioned by default.
    • The first 8 GB of provisioned disk per project is free, then $0.125 per additional GB.
    • Charges are prorated down to the hour, which is advantageous for short-lived projects and branches.
    • Provisioned disk from Read Replicas will also be included in billing.
    • Enables upcoming features for enhanced control over disk and Postgres parameters.

Timeline

This change will be rolled out to new customers on August 26th, 2024 and will be gradually rolled out to existing customers shortly after.

Changes

We are adjusting our pricing to offer more flexibility and self-serve for developers wanting to tune their disk and Postgres configuration. For example:

  • Some developers want disks with higher throughput
  • Some developers want to store more than 1GB of WAL (for tools like Airbyte/PeerDB, or adding more read replicas)

To make this available we will start billing for provisioned disk size (rather than database space used). Previously, costs associated with WAL files were not directly billed but also users could not control change max_wal_size (default is 1GB).

There is no action needed on your end. You will automatically be transitioned to the new billing model throughout the next couple of weeks. In case there is any change in your monthly bill, we will reach out to you proactively with additional information and give you a grace period to decrease your usage.

For customers on the Free Plan, there will be no changes; the total database space remains capped at 500MB. These adjustments only apply to customers on paid plans. The database disk will continue to autoscale when nearing capacity for paid plan customers.

BeforeAfter (August 26th, 2024)
Price$0.125 / GB$0.000171 / GB-Hr
ChangeWe take the average database space used for all projects, independent of how many days/hours you store the files and sum it up.We will you based on the provisioned disk usage every hour. First 8GB per project are free. Read replicas will also incur disk costs.
Invoice ItemYour invoices display 'Total Database size'.Your invoices will display 'Disk Size GB-Hrs'.

Example 1: Pro plan org, active for whole month#

In this scenario, an Organization is on the Pro Plan with 3 active projects.

Usage

Project# Days ActiveAverage Database Space UsedProvisioned DiskAfter: Provisioned Disk Size GB-Hrs
Project A3025 GB40.5 GB29,160 (720 hours * 40.5 GB)
Project B3010 GB27 GB19,440 (720 hours * 27 GB)
Project C305 GB8 GB5,760 (720 hours * 8 GB)
Total40 GB54,360 GB-Hrs

Billing

BeforeAfter
Total Usage40 GB54,360 GB-Hrs
Usage Discount (Pro Plan)(8 GB)(17,280 GB-Hrs - first 8 GB per project included)
Billable Usage32 GB37,080 GB-Hrs
Price$0.125 / GB$0.000171 / GB-Hr
Total Cost$4.00$6.43

Example 2: Pro plan org, active for part of the month#

In this scenario, an Organization is on the Pro Plan with 3 active projects.

Usage

Project# Days ActiveAverage Database Space UsedProvisioned DiskAfter: Provisioned Disk Size GB-Hrs
Project A309 GB12 GB8,640 (720 hours * 12 GB)
Project B159 GB12 GB4,320 (360 hours * 12 GB)
Project C29 GB12 GB576 (48 hours * 12 GB)
Total27 GB13,536 GB-Hrs

Billing

BeforeAfter
Total Usage27 GB13,536 GB-Hrs
Usage Discount (Pro Plan)(8 GB)(9,024 - first 8 GB per project included)
Billable Usage19 GB4,512 GB-Hrs
Price$0.125 / GB$0.000171 / GB-Hr
Total Cost$2.38$0.77

Where do I see my disk size?#

You can see your project’s disk size in your database settings (Project Settings > Database).

Screenshot 2024-07-25 at 09 36 09

How can I resize my disk down?#

Your disk size is based on your database space usage. As a first step, you need to identify current database space usage and reduce it. To see your current database space usage, head over to the built-in “Database” project report. Once you have reduced your database space and want to reduce your provisioned disk, you can upgrade your Postgres version through your project settings to automatically rightsize your disk. For further information around disk management and reducing database space, please refer to our docs.

Is this going to affect my monthly bill?#

If your current disk size is >8GB, this is likely going to impact you. Note that this will be gradually rolled out and you will be notified about the concrete impact on your organization and given a 3-month grace period, which gives you time to right-size your disk and minimize the impact of this change.

Further to earlier discussions, the threshold for transitioning large databases to use physical backups for their daily backups is being lowered to 15GB in 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.

Claim your ticket for Launch Week 12 kicking off August 12 and read on to learn about a number of new features we have to share with you for the month.

Launch Week 12#

Join us August 12-16 for our next Launch Week event. We will be announcing a number of new features and giving away some great swag!

Claim Your Ticket

Disable Data API for Your Project#

You can now disable the Data API when creating a new project with a setting under "Advanced Options". This option bolsters the security of your data by preventing unintentional access from clients. You can change this behavior on an existing project via the project's API Settings.

Docs

Custom Schema for Data API#

Your project's Data API exposes the public schema by default, the most commonly used schema, and can lead to unintentional access to your data. Now, you can dictate which custom schema to expose via the Data API for better security and granular control.

Docs

Save Money With Hourly Storage Billing#

On August 20, 2024, Supabase is changing billing for Storage from daily to hourly for new customers and gradually rolling it out for existing customers shortly thereafter. There are no billing changes for projects who continue to use Storage for the entire month while projects using Branching or Storage for partial months will see a reduction in their bill.

Github Discussion

Deploy More Functions at No Extra Cost#

We have increased the number of Edge Functions across all plans at no extra cost and removed usage-based billing to simplify your bill.

Github Discussion

Quick product announcements#

  • [Database] Postgres 13 Deprecation Notice [Github Discussion]
  • [Auth] Migrate from Auth0 to Supabase Auth [Docs]
  • [Branching] You can customize the public environment variable prefix to use any framework [Pull Request]
  • [Docs] Supabase docs now feature global navigation bar [Docs]

Made with Supabase#

  • Krea - Realtime and interactive image generation in the browser, the easiest way to generate with AI [Website]
  • Cheat Layer - The most powerful no-code agent editor on the planet. Learn new RPA concepts to build future-proof agents that are impossible in other RPA tools [Website]
  • Udio - Generative music, you can even edit segments of the tracks using AI [Website]
  • Pika - The idea-to-video AI platform that sets your creativity in motion. [Website]
  • MakePodcast - Effortlessly craft professional podcasts in minutes using AI [Website]

Community Highlights#

  • Using Pre-commit Hook to Upload Local Media to Supabase Bucket [blog]
  • Build Library Management System Using React, Shadcn/ui, Supabase and React Query From Scratch [Youtube]
  • Instagram Clone in React Native: Video, Backend with Supabase & Push Notifications [YouTube]
  • It all starts with Postgres (Interview to Paul Copplestone) [YouTube]
  • GraphQL Quickstart with Supabase [YouTube]
  • 13min High Intensity Postgres Workout (NO REPEATS) [YouTube]

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

Some Custom Domain project endpoints are currently signed by Let's Encrypt's cross-signed chain.

These endpoints will start being signed by Let's Encrypt self-signed chain starting the 9th of September, 2024. For additional details, please refer to Cloudflare's documentation for this change.

The primary impact of this will be to disrupt traffic from extremely old systems (e.g. Android =< 7.0) that trust the cross-signed chain, but not the self-signed one.

If you are impacted by this, please reach out to https://supabase.help and we can help you migrate to an alternative CA.

We've been building for 9 months now, are we're getting even closer to Beta.

This is also available as a blog post and a video demo.

Add users#

You can now add users manually from your dashboard.

User admin#

You can also perform admin functions on existing users - send password reset emails, magic links, and delete users.

Even more powerful SQL Editor#

Last month we announced an improved SQL Editor, and this month we've taken it even further. The SQL Editor is now a full Monaco editor, like you'd find in VS Code. Build your database directly from the browser.

Status page#

We added a Status Page which tracks the uptime and latency of the Supabase platform.

Kaizen#

  • We completed a security audit by DigitalXRAID.
  • Email confirmations now enabled by default for signups.
  • Updated Benchmarking Suite to include more realistic workloads, on various different servers (results published soon).
  • You can now set/edit/remove Foreign Keys via the table editor.

We're now 8 months into building Supabase. We're focused on performance, stability, and reliability but that hasn't prevented us from shipping some great features.

This is also available as a blog post and a video demo.

Supabase.js 1.0#

In the lead-up to our Beta launch, we've released supabase-js version 1.0 and it comes with some major Developer Experience improvements. We received a lot of feedback from the community and we've incorporated it into our client libraries for our 1.0 release.

Check out the blog post to learn more.

More powerful SQL Editor#

Although it was only intended to be a temporary feature, the SQL Editor has become one of the most useful features of Supabase. This month we decided to make give it some attention, adding Tabs and making it full-screen. This is the first of many updates, we've got some exciting things planned for the SQL Editor.

Keyboard shortcuts for Power Users#

For the heavy table editor users, we've gone ahead and added a bunch of key commands and keyboard shortcuts so you can zip around and manipulate your tables faster than ever.

One of the most requested Auth features was the ability to send magic links that your users can use to log in. You can use this with new or existing users, and alongside passwords or stand alone.

Kaizen#

  • We have new and improved docs.
  • We converted realtime-js to TypeScript.
  • Dashboard Performance: we heavily optimised our dashboard routes.
  • With the help of the community, we closed a lot of issues during Hacktoberfest.
  • We have started benchmarking all the open source tools we use. We'll publish the results this month.

This is also available as a blog post.

Third-party logins#

We've released OAuth logins! You can now enable third-party logins on your app for Bitbucket, GitHub, GitLab, or Google.

Clone tables#

You can duplicate your tables, just like you would inside a spreadsheet.

Enable and disable extensions#

Extensions are easier to use. You can enable Postgres extensions with the click of a button.

Save your favorite queries#

The SQL editor now stores your query history in your browser. You can also save your favorite queries to run later!

GitHub Discussions#

Supabase was given access to GitHub Discussions! This is the place for you to ask questions or show off what you've built with Supabase.

Kaizen#

This is also available as a blog post.

We're 6 months into building our hosted database platform and we've made some major improvements to our auth system and table view.

Easily create tables#

Set up tables and columns directly from the table view.

Invite your team#

You can now invite team members to your organisation.

Auth: Email Confirmations#

You can now enable Email Confirmations for new users. This can be toggled on or off and the template for this email can be edited via the dashboard.

Typescript support#

The biggest communty contribution to date, @thorwebdev added Typescript support to Supabase. He even live streamed the process.

Kaizen#

We have a number of small improvements:

Alpha July 2020

Aug 5, 2020

Supabase July Alpha Updates#

This is also available as a full blog post with videos.

After 5 months of building, we're releasing one of our most anticipated features: Supabase Auth.

Auth#

This month, we're ecstatic to announce a feature we think you'll love: Supabase Auth. It's too big to fit into a monthly update so look out for a full update in the next few days.

We want to make it easy to get started adding Auth to your app, so we've released a simple example and a video tutorial which shows you how to implement a basic auth system using PostgreSQL's Row Level Security.

Table Editor#

We've made some massive improvements to our Table Editor that we're excited to share.

Relationship drill down#

Last month we made it easy to drill into your table relationships. This month, we make it possible to drill multiple levels deep.

Add, delete, and download rows#

We're making it easier to manipulate your data. Next month, you'll be able to add and remove columns directly from the Table view.

New Postgres Extensions#

If you launch a new Supabase project, you'll have access to several new Postgres extensions:

  • pgsql-http: HTTP client for PostgreSQL, retrieve a web page from inside the database.
  • pgjwt: PostgreSQL implementation of JSON Web Tokens
  • plpgsql_check: a linter tool for language PL/pgSQL
  • pljava: write Java in your stored procedures, triggers, and functions

Kaizen#

We have a number of small improvements:

  • Added Auth documentation to the auto-generated docs in each project
  • Added a new or filter to the client library
  • Table View now remembers which tabs you had open.
  • We have released a lot of new functionality to pg-api, a server for for managing Postgres internals via a REST interface.
  • Performance: the "flash of black" which was appearing on page transition is now gone

Alpha June 2020

Jul 2, 2020

Supabase June Alpha Updates#

This is also available as a full blog post with videos.

We're now 4 months into building Supabase, which means another major update. Here's a few things we think you'll love in this release.

View relational data#

We're sometimes asked how we will make Postgres as simple as Firebase, since Postgres is a relational database. This month we're making our first steps to prove that relational databases can be even easier to use than document stores. We're releasing an excel-like editing interface which can drill down into your relational data.

image

Manage JSON data#

Postgres is an amazing database, giving the flexibility of a document store with the power of a RDBMS. If you use JSON data in Postgres, then we want to make that easy too. Supabase detects when your column is JSON or JSONB, and provides an easy way to edit and view your data. More improvements coming soon for this feature!

image

Choose your region#

If you noticed a bit of latency on Supabase, it's because your projects were previously set up in Singapore. It was always our intention that you'd be able to choose your database region, and this month we've delivered it. In the next releases we'll even allow you to go multi-region, instantly replicating your database close to your customers.

image

Backups#

A guiding principle at Supabase is zero lock-in. So this month we are exposing your daily database backups on the dashboard, giving you a simple way to migrate off Supabase. We have a lot more to build in this space (WAL-G!), so watch this space.

image

Build in a weekend, scale to millions