Changelog

New updates and product improvements

Supavisor 1.0

Dec 13, 2023

Supavisor 1.0 is released. Rollout to Supabase hosted projects planned for next week.

Notable changes include:

  • Added support for named prepared statements
  • Added support for read replicas and query load balancing
  • Added a client_idle_timeout option
  • New docs build process and website (Github hosted)
  • Docs for migrating from PgBouncer
  • auth_query with md5 support
  • native pool_mode to proxy direct connections to Postgres
  • New metric for unique connected tenants
  • Cache metadata database queries for faster tenant info lookups
  • Bug fixes

See the full changelog:

https://github.com/supabase/supavisor/releases/tag/v1.0.0

We've improved insights into usage, billing and costs.

Vastly improved usage summary#

We previously had a slightly hidden usage summary in the "Upcoming Invoice" section. This section has been revamped and moved to the organization's usage page.

The improved usage summary features:

  • Per-project breakdown for usage
  • Displays costs for over-usage on usage-based plans (pro with spend cap off, team, enterprise)
  • Displays usage in percent for usage-capped plans (free/pro with spend cap on)
  • Metrics with higher usage/costs will be sorted to the top
  • Insights into compute usage in summary
  • Usage can now be retrieved for a custom period and not just the current billing cycle
  • Usage summary can be filtered by project
  • Indicators if you're exceeding/approaching limits which could lead to restrictions

The new usage summary section (usage-capped plan):

New usage summary with a usage-based plan (Pro with spend cap off, Team, Enterprise):

When hovering over the circular progress bars, you get per-project breakdowns of usage and some further information:

We now also allow you to filter the total usage by a single project or a different period than the current billing cycle. Simply change the timeframe at the top of the usage page.

Usage filtered with a custom timeframe (not relative to billing cycle):

Daily Stats for Compute Usage#

The organization's usage page shows daily stats for all sorts of usage-based metrics and was still missing insights for compute hours. Compute Usage insights have been added to the usage page.

New section on the usage page:

Sample usage with a single project:

When running multiple projects or projects on different compute sizes:

Better insights for upcoming invoice#

The "Upcoming invoice" section on the organization billing page has been vastly improved and now offers per-project breakdown of metrics and project add-ons. Additionally, there is a simple projection of your cost at the end of the month.

Here's an overview of the new section with all project breakdowns collapsed:

You can expand any usage-based item or project add-on to get a per-project breakdown:

The line items have also been improved to show included quotas and costs for over-usage:

Quickly see if you're exceeding your plans limit#

On usage-capped plans (Free Plan or Pro Plan with Spend Cap toggled on), you will now also see a warning on the top of the subscription page, in case you're exceeding your plan's limits. A more detailed breakdown is available on the organization's usage page.

Project breakdown for subscription preview#

When you are about to upgrade your organization's subscription plan from free to paid or between paid plans, we show you a confirmation screen. That confirmation screen has been improved to show a per-project breakdown for compute costs. Additionally, some useful information about usage-billing for compute and links to related docs have been added.

New confirmation modal:

Break down add-ons on a per-project basis:

Education about usage-billing for compute, mixing paid/non-paid plans and links to related docs:

Table Editor row edit side panel fix boolean fields rendering stale value#

There was issue in the Table Editor when you're editing rows in the side panel, specifically for column types that are rendering the Listbox component, whereby the data rendered in that input field is stale (from the previous row that you opened). This was caused by the Listbox component not re-rendering correctly when the value passed to it has changed and is now fixed.

PR: https://github.com/supabase/supabase/pull/19264 Link: https://supabase.com/dashboard/project/_/editor

Added recommendation to enable PITR when enabling branching#

We strongly recommend enabling point in time recovery for your project if you're planning to enable branching. This is to ensure that you can always recover data if you make a "bad migration". For example, if you accidentally delete a column or some of your production data.

PR: https://github.com/supabase/supabase/pull/19324 Link: https://supabase.com/dashboard/project/_/

Previously, it was possible to directly insert/update rows on the pg_cron extension's cron.job table. This bypasses security checks that would've been asserted when jobs are scheduled/modified via pg_cron functions.

You can see how to schedule/modify cron jobs using the examples in our docs.

Allow access to backups page while project is restoring to download scheduled backups#

PR: https://github.com/supabase/supabase/pull/19126 Link: https://supabase.com/dashboard/project/_/database/backups/scheduled

Show if a member has MFA enabled or not in organization settings page#

PR: https://github.com/supabase/supabase/pull/19012 Link: https://supabase.com/dashboard/org/_/team

Show which email support will reach out to after submitting a ticket#

PR: https://github.com/supabase/supabase/pull/19095 Link: https://supabase.com/dashboard/support/new

Added wildcard hints for bucket allowed MIME types in create/edit modal#

PR: https://github.com/supabase/supabase/pull/19062 Link: https://supabase.com/dashboard/project/_/storage/buckets

SQL Editor support downloading snippet as a migration, a seed file or a SQL file#

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

Table Editor fix freezing a column causes UI to crash#

Shout out to @tranhoangvuit for this one! 🙏 PR: https://github.com/supabase/supabase/pull/19127 Link: https://supabase.com/dashboard/project/_/editor

LinkedIn has modified the required scopes for their API and OAuth Applications created prior to 1st Aug 2023 do not contain the appropriate scopes. This could cause errors when attempting to sign in with OAuth via LinkedIn. If you have LinkedIn provider enabled on your project a follow up notification will be sent to your email as you could potentially have a LinkedIn OAuth application created before 1st Aug 2023 and be affected. As we don't have access to LinkedIn OAuth configuration we cannot tell with certainty when your OAuth application was created and have to reach out to all users with LinkedIn enabled.

To adjust to this change, we have introduced a new LinkedIn (OIDC) provider which contains the new required scopes and we have deprecated the existing LinkedIn provider.

If you are using a LinkedIn OAuth Application created before 1st August 2023 we ask that you create a new LinkedIn application and migrate your Dashboard credentials from the deprecated LinkedIn provider to the new LinkedIn (OIDC) provider as shown in the screenshot below. Please do so before 4th Jan 2024 as we will be removing the provider from the dashboard then.

CleanShot 2023-11-25 at 00 51 46@2x

Edge Functions has some predefined secrets: SUPABASE_DB_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY. Previously, if you reset your DB password or JWT secret, these secrets will become stale. Now, these changes should be propagated into Edge Functions secrets. This fixes https://github.com/supabase/supabase/issues/12415.

If you've previously had this issue, you can reset your DB password using the old value to avoid downtime for your app. If you're resetting the JWT secret, you need to update your app to use the new API keys, which incurs some downtime.

June Beta 2021

Jul 4, 2021

Supabase is gearing up for another Launch Week on July the 26th. Until then, here's a few new things to try.

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

Vercel integration#

Vercel just released their new integrations, which means you can now deploy a Postgres database on Supabase directly from your Vercel account. Check it out! vercel.com/integrations/supabase

Discord logins are now available#

Building a community? There's almost no better tool than Discord (we're even trialling it ourselves). If you're building a community product, Discord logins are the perfect option.

New Guides#

We spent the month building up a new Guides section in our Docs. Here are a few highlights:

Ever wanted to build a Search Engine? We just released a guide which shows you how to implement Full Text Search using Postgres.

OAuth Guides#

We released step-by-step guides to help you set up OAuth with Apple, Bitbucket, Facebook, GitHub, GitLab, Google, and Twitter.

Javascript + Postgres#

Did you know that you can use Javascript inside your Postgres database? Here's how, with the plv8 extension.

Public Storage Buckets#

Want to share all your favourite memes? Now it's even easier with Public Storage Buckets. Simply mark a bucket as "Public" and the content will be accessible without a login.

Storage upserts#

Supabase Storage now supports upsert. Shoutout to @ankitjena for this Pull Request.

Server restarts#

When things go wrong, sometime the best thing you can do is reboot. We released a restart button in the Dashboard, the first of many debugging tools we'll be releasing over the next few months.

Policy editor#

We added a new Table Policy Editor which makes Row Level Security even easier. We even included a few templates to get you started.

Build in Public#

We run a weekly 1-hour live stream where we build in public.

Community#

If you want to keep up to date, make sure you subscribe to our YouTube channel or follow us on Twitter.

External contributions#

PostgREST#

  • Primarily for Prisma users, we patched PostgREST openapi-mode to ignore anon privileges for the OpenAPI output. Credit to @steve-chavez.

April Beta 2021

May 5, 2021

This month was a "gardening" month for Supabase. The team focused on stability, security, and community support. Check out what we were working on below, as well as some incredible Community contributions.

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

Light Mode#

We're a developer tool, which means that Dark Mode is extremely popular.

While Dark mode is great, for some people it's not an option. Dark Mode is difficult to use for developers with astigmatisms, or even just working in brightly-lit environments.

So today we're shipping Light Mode. Access it in the settings of your Dashboard.

Translations#

With the help of the community, we started internationalizing our main repository:

OpenAPI spec for Storage#

We released Storage Api docs built using OpenAPI (swagger).

Stripe Sync Engine (Experimental)#

We open-sourced a server which keeps any Postgres database in sync with Stripe. This is experimental only. We're evaluating other tools such as Singer, which provide a more general solution (but are less "realtime"), and we're opening it up here to gather feedback.

Community spotlight: Threaded comments#

One of the most powerful Postgres features is "recursive CTEs" which can be used for nested items (comments, pages, friend-graphs). @lawrencecchen has built a full Threaded Comments demo which you can Deploy with a single click. Want to add comments to your blog with Full Text Search? Just use Postgres.

Community spotlight: SupaScript#

It looks like @burggraf2 got tired of waiting for us to ship Functions, and decided to build a whole JS ecosystem within his Supabase database. If you want to write PG functions in JS, import remote libraries from the web, and console log to your browser, check out this SupaScript repo.


_18
// After installing:
_18
// https://github.com/burggraf/SupaScript#installation
_18
_18
/**
_18
* Get all users who logged in this week.
_18
* Use in the database: select * from users_this_week();
_18
* Use in the browser: supabase.rpc('users_this_week');
_18
*/
_18
create or replace function users_this_week()
_18
returns json as $$
_18
const moment = require('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.js', false);
_18
_18
const lastWeek = moment().subtract(7, 'days');
_18
const query = 'select * from auth.users where created_at > $1'
_18
const users = sql(query, lastWeek);
_18
_18
return users;
_18
$$ language plv8;

Community#

Supabase Github Star Growth

Source: repository.surf/supabase

If you want to keep up to date, make sure you subscribe to our YouTube channel or follow us on Twitter.

Coming Next#

You might have noticed our Dashboard slowly changing (improving), as we migrate the components out to our open source UI Library. This progression is an important step towards offering a UI for Local Development and Self Hosting.

We're also working on our Workflows engine. This is quite a large task, but we're making progress and aiming to ship sometime in July.

One more thing#

We started hiring.

Get started#

March Beta 2021

Apr 6, 2021

Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing. Here's what we released last month.

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

Supabase Storage#

Need to store images, audio, and video clips? Well now you can do it on Supabase Storage. It's backed by S3 and our new OSS storage API written in Fastify and Typescript. Read the full blog post.

Connection Pooling#

The Supabase API already handles Connection Pooling, but if you're connecting to your database directly (for example, with Prisma) we now bundle PgBouncer. Read the full blog post.

React UI Component Library#

We open sourced our internal UI component library, so that anyone can use and contribute to the Supabase aesthetic. It lives at ui.supabase.io . It was also the #1 Product of the Day on Product Hunt.

CLI#

Now you can run Supabase locally in the terminal with supabase start. We have done some preliminary work on diff-based schema migrations, and added some new tooling for self-hosting Supabase with Docker. Blog post here.

OAuth Scopes#

Thanks to a comunity contribution (@_mateomorris and @Beamanator), Supabase Auth now includes OAuth scopes. These allow you to request elevated access during login. For example, you may want to request access to a list of Repositories when users log in with GitHub. Check out the Documentation.

Kaizen#

  • You can now manage your PostgREST configuration inside the Dashboard.
  • Our website has been redesigned. Check out our new Homepage and Blog, and our new Database, Auth, and Storage product pages.
  • We refactored some of our Filter methods to make them even easier to use. Check out the Full Text Search refactor.
  • We have added several new sections to our Docs including: Local Dev, Self Hosting, and Postgres Reference docs (all still under development).

Supabase is an open source Firebase alternative. We've now been building for one year. Here's what we released last month.

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

Dashboard Sidebars#

We've improved the UX of our Dashboard with sidebars in every section, including the Table view, the Auth section, and the SQL Editor.

SQL Autocomplete#

Writing SQL just got 10x easier. We added autocomplete to the SQL editor, including table & column suggestions.

Auth Redirects#

Redirect your users to specific route within your site on signIn() and signUp().

Redirect your users after sign up

Learning Resources#

We've released a new Resources section in our docs, as well as two new Auth modules: GoTrue Overview and Google OAuth.

New Region#

Launch your database in South Africa.

Kaizen#

New year, new features. We've been busy at Supabase during January and our community has been even busier. Here's a few things you'll find interesting.

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

Count functionality#

Anyone who has worked with Firebase long enough has become frustrated over the lack of count functionality. This isn't a problem with PostgreSQL! Our libraries now have support for PostgREST's exact, planned, and estimated counts. A massive thanks to @dshukertjr for this adding support to our client library.

New Auth Providers#

We enabled 2 new Auth providers - Facebook and Azure. Thanks to @Levet for the Azure plugin, and once again to Netlify's amazing work with GoTrue to implement Facebook.

Auth Audit Trail#

We have exposed the audit trail directly in the dashboard, as well as the GoTrue logs. Great for security and debugging.

Auth UI widget#

In case our Auth endpoints aren't easy enough already, we've built a React Auth Widget for you to drop into your app and to get up-and-running in minutes.

New auth.email() function#

We added a helper function for extracting the logged in user's email address.

New Regions#

Launch your database in London or Sydney!

Launch your database in London or Sydney

Copy rows as Markdown#

You can now copy SQL results as Markdown - super useful for adding to blogs and issues.

React server components#

If you're excited by React Server components then check out the Supabase + Server Components experimental repo. https://github.com/supabase/next-server-components

Learn#

We know that Auth can be a bit daunting when you're just starting out, so we have created some intro videos to get you up to speed in no time:

Kaizen#

  • Performance: We migrated all of our subdomains to Route53, implementing custom Let's Encrypt certs for your APIs. As a result, our read benchmarks are measuring up 12% faster.
  • Performance: We upgrade your databases to the new GP3 storage for faster and more consistent throughput.

After 10 hectic months of building, Supabase is now in Beta.

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

Supabase is now in Beta#

We spent months working on Performance, Security, and Reliability. Read more on our Beta Page.

This image shows our Beta Page

Improve your docs inline#

Add comments and descriptions to your Tables directly from our auto-generated docs.

Table View now has realtime changes#

Any updates that happen to your database are reflected in the Table View immediately.

Table Pagination#

Our table view now has pagination - better for working with large data sets.

Supabase raised a Seed Round#

We raised $6M from Y Combinator, Mozilla, and Coatue. You can read more on TechCrunch.

Kaizen#

  • Supabase is now 26% faster in regions which support Graviton (1460 reqs/s up from 1167 reqs/s)
  • We launched a new region in Sao Paulo.
  • Postgres Array Support. You can now edit Native Postgres array items in the grid editor or the side panel.
  • We added better support for your custom Database Types.
  • Fixed some buggy keyboard commands. We're continuously improving key commands in the Table editor.

Build in a weekend, scale to millions