Notable
- Fixes a bug which caused prepared statements to fail in
session
mode
New updates and product improvements
Jan 11, 2024
session
modeJan 11, 2024
A rundown of everything we shipped during Launch Week X
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.
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.
A Postgres database for every GitHub branch. Database branching means you can have separate database instances for each feature of your application.
We announced several new features for Supabase Auth: Identity Linking, Session Control, Leaked Password Protection, and Auth Hooks with Postgres functions.
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.
As if all that wasn't enough, we shipped even more cool stuff:
Jan 10, 2024
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.
Jan 8, 2024
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
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
Thank you @tranhoangvuit for helping us on this!
PR: https://github.com/supabase/supabase/pull/20023
Link: https://supabase.com/dashboard/project/_/database/types
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
allow_list
field on the tenant
to support network restrictionsclient_heartbeat_interval
on the tenant
to detect zombie client connectionsThe 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.
Dec 18, 2023
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.
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
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
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
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/_
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
extensions
schema when creating/editing columnsDatabase 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
PR: https://github.com/supabase/supabase/pull/19666
Link: https://supabase.com/dashboard/project/_/settings/database
Dec 13, 2023
Supavisor 1.0 is released. Rollout to Supabase hosted projects planned for next week.
Notable changes include:
See the full changelog:
Dec 5, 2023
We've improved insights into usage, billing and costs.
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:
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):
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:
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:
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.
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:
Dec 5, 2023
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
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.
Nov 27, 2023
PR: https://github.com/supabase/supabase/pull/19126 Link: https://supabase.com/dashboard/project/_/database/backups/scheduled
PR: https://github.com/supabase/supabase/pull/19012 Link: https://supabase.com/dashboard/org/_/team
PR: https://github.com/supabase/supabase/pull/19095 Link: https://supabase.com/dashboard/support/new
PR: https://github.com/supabase/supabase/pull/19062 Link: https://supabase.com/dashboard/project/_/storage/buckets
PR: https://github.com/supabase/supabase/pull/17341 Link: https://supabase.com/dashboard/project/_/sql/new
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.
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.
Realtime runs migrations for tables under the realtime
schema when it connects to databases. Sometimes this fails. These changes handle Realtime migration failures better.
https://github.com/supabase/realtime/compare/v2.25.22...v2.25.27
🙏 @filipecabaco
Nov 9, 2023
Support for column encryption in the table editor has been removed. You can still use it, but you must use SQL. Your data is already encrypted-at-rest, so this is an advanced feature that should be used sparingly.
Previously, the Table Editor in the Supabase dashboard supported encrypting newly created columns using pgsodium’s Transparent Column Encryption (TCE).
While this makes it easy to use, we found that the easiness has led to a lot of “mis-use” of Encryption. We’ve decided to remove it from the UI for now because TCE has a few sharp edges and the dashboard makes it too easy to encrypt columns without considering trade-offs.
This mis-use led to multiple users frequently running into unrecoverable issues with encryption. A non-exhaustive list of issues which we observed users running into when using TCE through the dashboard includes the following:
pg_sodium
to make the view a security invoker.As of now, you can use TCE in SQL by following the pg_sodium documentation so users who already are using TCE can continue doing so via the SQL editor on the dashboard, while new users will have to learn the nuts and bolts of what they are doing before trying to use the feature.
If you use Deno Postgres or other Postgres clients to connect to your database instance from a Supabase Edge Function, those connections are now secured with SSL. You don't need to add any extra configurations to your client setup.
More details: https://supabase.com/docs/guides/functions/connect-to-postgres#ssl-connections
Nov 6, 2023
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.
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.
You can now manage Storage buckets with the Supabase CLI:
supabase storage ls -r
: show all buckets and objectssupabase cp -r readme.md ss:///bucket
: upload local files to bucketsupabase cp -r ss:///bucket
: download objects from bucketsupabase rm -r ss:///bucket
: delete files from bucketManaging 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.
Supabase Studio is improved many times per day, here is some of what's new:
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.
Nov 2, 2023
Databases larger than 100GB are being transitioned to using physical backups for their daily backups.
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 https://supabase.com/docs/guides/platform/backups#daily-backups-process for additional details.
Oct 14, 2023
Postgres 12 is deprecated as of 14th October 2023 and support for it will be fully removed on 27th November 2023.
Postgres 15 comes with numerous features, bug fixes and performance improvements. Check out the announcement blog posts to find out what each version introduces.
You will receive three notifications via email before 27th November notifying you about the deprecation of Postgres 12 and deprecation of IPv4 and PGBouncer.
Oct 6, 2023
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!
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.
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.
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:
_10select * from my_airtable_table;_10# data from Airtable
Read the Airtable Wrapper docs Learn about Wrappers
Supabase Studio is under constant improvement, here is what’s new:
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
.
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]Deno.serve(req => new Response("ok"))
. No http
standard library dependency needed. (Thanks eifr for contributing with updated CLI templates. [PR]Sep 29, 2023
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
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.
There will be a few minutes of downtime during this migration.
We recently announced Supavisor, our new connection pooler. Supavisor is a direct replacement for PgBouncer. Using our own pooler is going to let us do things like load balancing queries across read replicas, query results caching, and a lot more.
Supavisor is now enabled for all projects created on or after Wednesday September 27th 2023. All existing projects will have Supavisor enabled by October 15th 2023.
Supavisor does not currently support Network Restrictions. Network restrictions support will be enabled from 24th January 2024. If you are blocked on the migration because of this, please reach out to support and we will extend the deadline for your project.
You don’t need to change anything in your application, except for the URL. The pooler connection string is available in the database settings in your dashboard.
For example, if you use PgBouncer to connect:
_10import { drizzle } from 'drizzle-orm/postgres-js'_10import postgres from 'postgres'_10import { users } from './schema'_10_10// probably an env var_10const connectionString = 'postgres://user:[YOUR-PASSWORD]@db.[YOUR-PROJECT-ID].supabase.co:6543/postgres'_10const client = postgres(connectionString)_10const db = drizzle(client);_10_10const allUsers = await db.select().from(users);
you just need to update the connection string to:
_10import { drizzle } from 'drizzle-orm/postgres-js'_10import postgres from 'postgres'_10import { users } from './schema'_10_10// probably an env var, get the exact connection string from the database settings page_10const connectionString = 'postgres://[db-user]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?options=reference%3D[project-ref]'_10const client = postgres(connectionString)_10const db = drizzle(client);_10_10const allUsers = await db.select().from(users);
PgBouncer will be available to use along side Supavisor until January 31st 2024.
The full timeline is:
db.projectref.supabase.co
) will start resolving to IPv6 addresses. PgBouncer will be removed. Projects will be migrated over starting this day. No changes are required if your network supports communicating via IPv6. If it doesn't, update your applications to use Supavisor which will continue to return IPv4 addresses.You will receive deprecation notices throughout November, December, and January.
For projects which only use the database REST API provided by PostgREST (via supabase-js
) there is no action needed.
projectref.supabase.co
will continue to return IPv4 addresses. Only the database domain db.projectref.supabase.co
will return a IPv6 address.
Check if you are able to request your IPv6 address via curl -6 https://ifconfig.co/ip
If you have issues with Supavisor please contact support!
You can purchase the IPv4 addon for 4$/project in the project add-on page here. PGBouncer will still be removed for users with the IPv4 add-on.
While we are providing the ability to use PgBouncer or Supavisor during this migration you cannot use both at the same time. With the default configuration using both will exhaust your database connections because they both will try and spin up a connection pool.
The solution is to temporarily increase your databases connection limit with a custom Postgres config to accommodate both connection pools.
_10supabase --experimental --project-ref <project-ref> postgres-config update --config max_connections=120
If the URL you use to connect to your Supabase Database looks like this, you're using the API, and no changes are necessary:
https://[YOUR-PROJECT-ID].supabase.co
If the URL you use to connect looks like either of these options, you're already using Supavisor, and no further changes are necessary:
postgres://[db-user]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?options=reference%3D[project-ref]
or postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]
If the URL you use to connect looks like this, you are using pgBouncer, and you need to upgrade (notice port 6543):
postgresql://[db-user]:[db-password]@db.[project-ref]supabase.co:6543/[db-name]
If the URL you use to connect looks like this, you are connecting directly, and will either need to be able to connect via IPv6, OR you will need to update to the Supavisor URL:
postgresql://[db-user]:[db-password]@db.[project-ref].supabase.co:5432/[db-name]
In the database settings page, the label when connection pooling is disabled, reads Will resolve to IPv6
if your project has not been migrated. If your project has been migrated to IPv6, it reads `Resolves to IPv6'.
The error thrown will depend on how you are connecting to the database. Here are some examples of error messages you might see
(dial tcp [2001:db8:3333:4444:5555:6666:7777:8888]:5432: connect: no route to host)
connect to db.example.supabase.co (2001:db8:3333:4444:5555:6666:7777:8888) port 5432 (tcp) failed: Network is unreachable
could not translate host name "db.example.supabase.co" to address: nodename nor servname provided, or not known
ENETUNREACH 2001:db8:3333:4444:5555:6666:7777:8888
Error: P1001: Can't reach database server at db.example.supabase.co:5432
Note that these errors may manifest in cases other than your client network not supporting IPv6, but if you run into these errors after your project was migrated, it is likely that it is due to IPv6 support.
The database settings page does not show PgBouncer connection settings. If you see a warning label called PgBouncer pending removal
, it means that PgBouncer has not been removed from your project. If you see no such label, PgBouncer has already been removed from your project.
Prepared statements are supported with session
mode. You can change your pool mode to session
in your dashboard.
You can also use a session
mode pool with your Supavisor pooler url and port 5432 (vs 6543). If you need to run something using prepared statements while your production application uses transaction
mode you can use this port to do that.
Initial support for prepared statements with transaction
mode landed but some bugs were found and should be fixed shortly.
If you are using Prisma, please check out our updated Prisma Guide for instructions on how to configure your connections for both querying and migrations.
The environment variables POSTGRES_URL
and POSTGRES_PRISMA_URL
point to Supavisor and POSTGRES_URL_NON_POOLING
points to Supavisor in session mode. Redeploy your Vercel application to pick up the latest environment variables. This is required since Vercel does not support IPv6.
Enable the IPv4 add-on. Set the direct connection url as a environment variable not managed by the Supabase integration. You can now use the environment variable in your application.
If you are using a version before 1.136.3, please upgrade to a later version of the CLI and run supabase link
. If you haven’t run supabase link
since 1st January 2024, please run it again after upgrading. This will enable the CLI to communicate to the database from IPv4 only environments because the communication happens via Supavisor. This change is required if you are using from the CLI from an environment without IPv6 support, like Github actions or possibly from your home network.
You will need to add Pooling=false
to your Supavisor connection string.
We are in the midst of transitioning all projects to IPv6. As part of this process, If your project is still being assigned an IPv4 address then pg_upgrade will be temporarily disabled for your project until the transition is completed.
Sep 8, 2023
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.
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).
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.
Supabase Studio brings some huge new features, including AI SQL editor, Schema diagrams, Wrappers UI, and a lot more!
With the release of OAuth2 applications, we've made it easier than ever for our partners to extend the Supabase platform with useful tooling.
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 ▲
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.
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).
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.
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:
Aug 31, 2023
We’re fixing the billing system at Supabase - moving from “project-based” to “organization-based”. We should have started with this model, but I wasn’t wise enough to know that when we started. We need to make these changes to roll out Preview Environments / Branching. It also includes:
See all changes in the blog post
First, and most importantly - there is only one change that affects the free plan, and that is a good one for you: you now an extra 1GB of egress.
Usage Item | Old plan (per project) | New plan (org based) |
---|---|---|
Egress | 4GB - (2GB Database + 2GB Storage) | 5GB across Database + Storage |
Database Space | 500MB | 500MB |
Storage Space | 1GB | 1GB |
Monthly Active Users | 50K | 50K |
Edge Function Invocations | 500K | 500K |
Edge Function Count | 10 | 10 |
Realtime Message Count | 2 million | 2 million |
Realtime Peak Connections | 200 | 200 |
2 free projects | 2 free orgs (1 free database per org) |
On top of an extra 1GB of egress for free, now that egress is unified across your org it means that if you aren’t using Supabase Storage, you get even more Database Egress (5GB instead of 2GB previously)
If you are currently running 2 free projects however, this does require some work from you. Because we are now working on an Org-level, instead of Projects, you will need to:
This should be done before the end of October, but don’t worry - we’ll give you frequent comms and clear instructions once the change has been rolled out (4th Sept).
We’ve made a lot of improvements to the billing system. Read the full announcement on our blog or dive into the related docs for more details.
This is a major change, and we've tried to design it in a way that's cheaper for everyone. If your bill has increased as a result of this change, that's not our intention. Please submit a Support ticket on the dashboard and we'll figure out a solution.
We welcome any questions/feedback about this change, but please keep this discussion focused only on this change! It's important for those who want to learn more or are confused. If you have something off-topic, please open a new discussion or join an existing discussion
Jul 7, 2023
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.
It’s been a busy month for the Supabase CLI. We have added a tonne of new features:
usage
flag for monitoring key Postgres statistics.We have made huge improvements to the billing tooling inside Supabase Studio, including:
New subscription page | New usage page
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.
Jun 9, 2023
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.
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.
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.
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.
[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
May 10, 2023
Logflare is the hub of analytics streams for Supabase. We are open sourcing it so that you can self-host your own Logging infrastructure.
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 ⚡
Supabase Storage received many of the most requested features from our users: Resumable Uploads, Quality Filters, Next.js support, and WebP 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!
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.
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.
Mar 9, 2023
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
.
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 📎💚
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.
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.
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
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 ✨
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
Feb 8, 2023
The first month of the year was very productive here at Supabase. Here is a highlight of what we shipped during January:
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.
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.
We have released extensive reference docs for C# and Python, detailing every object and method. What are you going to build?
Views, Materialized Views, and Foreign Tables are three database objects that provide a powerful way to access and organize and transform data without duplication.
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.
- 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]
Dec 8, 2022
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.
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).
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.
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.
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)
Nov 2, 2022
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 🛠
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.
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.
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.
Functions now support GET requests! Other HTTP verbs such as PUT, PATCH, and DELETE are supported too.
X-Forwarded-For header
. Exampleprovider_refresh_token
along with provider_access_token
. PRrefreshSession
method to allow users to forcefully refresh a session instead of waiting for it to autorefresh upon expiry. Thanks to @j4w8n for the PR 🙇🏻♂️Oct 7, 2022
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:
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.
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.
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
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.
Oct 4, 2022
To better secure your Supabase server instances, we will be removing superuser access from the dashboard SQL Editor over the next 30 days. Existing projects with tables, functions, or other Postgres entities created via the dashboard SQL Editor require a one time migration to be run. This migration should take less than 10 seconds to run but since it modifies your existing schema, we will be rolling out this change over a buffer period to minimise breakages.
During the opt-in period, a notification will be delivered to all affected Supabase projects. The notification contains instructions to manually apply the migration. If you have separate staging and production Supabase projects, apply it on the staging project first to verify everything is working as expected.
If you only have one Supabase project, try to avoid hours of high application traffic when applying the migration to minimise potential downtime. If you notice elevated error rates or other unusual activities after migrating, follow the rollback instructions to revert the change. Both apply now and rollback actions are idempotent. If you encounter any problems during migration or rollback, please contact support@supabase.io for further assistance.
For paused projects, applying now will schedule the migration script to run the next time your project is restored. We suggest that you restore your project immediately to verify that everything works or rollback if necessary. If you project is in any other states, please contact support@supabase.io to bring it to an active healthy state before continuing with the migration.
After successfully applying the migration, all entities you have created from the dashboard's SQL Editor will be owned by a temporary role. These entities are currently owned by supabase_admin
role by default. You can check the current owner of all your schemas using the query below.
_10select *, nspowner::regrole::name from pg_namespace;
New entities created via the SQL Editor will also be owned by this temporary role. Since the temporary role is not a superuser, there are some restrictions with using the SQL Editor after migrating. If you are unsure whether those restrictions affect your project, please contact support@supabase.io for assistance.
After the opt-in period, you will receive another notification to drop the temporary role and reassign all entities owned by the temporary role to postgres
role. The SQL Editor will also default to using postgres
role. New projects created after 5 Nov will also default to using the postgres
role. Since this change is irreversible, it is crucial that you run the migration during the opt-in period to verify that your project continues to work.
For any projects not migrated after 5 Nov deadline, we will run the migration on your behalf to reassign all entities to postgres
role. No temporary role can be used for rollback. If you notice any breakages then, please do not hesitate to contact support@supabase.io.
After revoking superuser access, you will not be able to perform the following actions through the dashboard SQL Editor.
You will no longer be able to create, alter, or drop event triggers directly through SQL statements.
Event triggers can only be created by superusers and you will not be able to manage them after the migration. One exception is Postgres extensions. When toggling extensions, they can still create or drop event triggers as needed.
If you are currently using custom event triggers, please contact support@supabase.io to explain your use case. We will try our best to figure out an alternative for your project. Note that regular triggers are unaffected by the migration.
You will no longer be able to: create, alter, or drop tables, views, functions, triggers, sequences, and other entities in Supabase managed schemas, including extensions
, graphql
, realtime
, and supabase_functions
.
Supabase managed schemas are used to support platform features for all projects. Entities in these schemas are owned by supabase_admin
role to prevent users from accidentally overriding them and breaking platform features. Unless explicitly granted, non-superuser roles cannot manage entities in Supabase managed schemas after the migration.
If you think modifying these schemas is necessary for your project, please contact support@supabase.io to explain your use case. We will try our best to accommodate your use case using alternative suggestions.
Entities in auth
and storage
schemas have been explicitly granted all permissions to postgres
role. Therefore, you can still manage these schemas directly through SQL statements. If you have existing triggers created on these schemas, they will continue to work as well.
All user defined schemas and the public
schema will be owned by postgres
role after the migration. Therefore, you should be able to manage entities in those schemas directly through SQL statements. One exception is if you have manually changed the owner of specific schemas before. In that case, you can either reassign their owner to postgres
role manually or leave them untouched. Please reach out to support@supabase.io if you are unsure what to do.
You will no longer be able to create or drop RLS policies on entities in Supabase managed schemas.
RLS policies can only be created or dropped by entity owners or superusers. After the migration, you can’t manage RLS policies in Supabase managed schemas through the SQL Editor. If you need to expose certain tables in realtime
schema to anon
or authenticated
users, one way is to create a view in the public
schema using the postgres
role.
RLS policies in auth
, storage
, public
, and all user defined schemas can still be managed directly through SQL statements. Unless you have policies that check for supabase_admin
role, all existing RLS policies should be unaffected by the migration.
You will no longer be able to alter role attributes of replication, superuser, and reserved roles directly through the SQL Editor.
Only superuser roles can alter attributes of other superuser and replication roles. Reserved roles include anon
, authenticated
, postgres
, service_role
, etc. After the migration, you will not be able to change attributes of these roles directly through SQL statements. You can still alter attributes of other roles created by yourself, except to elevate those roles to superuser or replication.
Some common attributes that can’t be changed include password, login, and bypassrls. Here are some known workarounds:
postgres
role password, you can do it via dashboard settings page.postgres
role after the migration.A number of users reported the following error accessing the dashboard restoring a paused project.
_10Error: [500] failed to get pg.tables: password authentication failed for user "postgres_temporary_object_holder"
It is due to a bug in the restore script that we have since fixed. If you are still experiencing this issue, you may pause and restore the project again to fix it manually. If that fails, please don't hesitate to contact support@supabase.io.
We will be adding additional privileges to the postgres
role to do the following actions, which otherwise can only be done by a superuser:
bypassrls
role attributesession_replication_role
runtime configNov 30, 2021
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.
auth
functions or generally any function that use legacy GUC naming convention to access JWT claims (eg current_setting('request.jwt.claims.XXX', true)
.
auth
functions.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
For example, Supabase rewrote the auth.role()
functions like this, to handle both legacy and new:
_19-- PREVIOUSLY_19create or replace function auth.role() _19returns text _19language sql stable_19as $$_19 select current_setting('request.jwt.claim.role', true)::text;_19$$;_19_19-- UPDATED FUNCTION TO HANDLE NEW GUC NAMING SCHEME_19create or replace function auth.role() _19returns text _19language sql stable_19as $$_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$$;
Nov 8, 2021
Three new Auth providers, multi-schema support, and we're gearing up for another Launch Week. Let's dive into what's been happening at Supabase during the month of October.
This is also available as a blog post and a video demo.
Thanks to @HarryET
and our friends at MessageBird
we have 3 new Auth providers this month: Slack, Spotify, and MessageBird phone logins.
Browse data in any database schema using the Schema switcher in the Dashbaord.
You can access any schema with your API, after enabling access in the Dashboard. Docs.
We have a TON of new guides, with videos too.
Learn about PostgreSQL Functions. Docs.
Learn about all the exciting feature of Auth within Supabase. Docs.
Learn more about the power of PostgREST for RESTful APIs. Docs.
There was a lot of activity this month.
Supabase attended the Jamstack conf. Watch us catch up with Matt, the cofounder of Netlify (minute 8).
And Jon made a guest appearance at this year's amazing Next.js Conf.
supabase-py v0.0.3
released - reponuxt-supabase v2.2.1
released - repovue-supabase v2.2.3
released - repoWe hit 20K stars!! 21,268 to be exact: github.com/supabase/supabase
Source: repository.surf/supabase
Check out some of our other community stats in our latest Series A Blog Post.
We had Launch Week numero uno in March, and the sequel "Launch Week II: the SQL" in July.
Now we're going even bigger with the third installment: Launch Week III: The Trilogy
. Join us on 29th November on our Discord.
Oct 4, 2021
Did you know it's been 2 years since the first commit to Realtime, our real-time engine for Postgres? Before we even existed as a company!
We spent this month improving docs and content content, improving UX, and onboarding Developer Advocates!
To kick off Hacktoberfest, another Supabase Hackathon is happening right now. You've got another 7 days to be in to win a limited edition t-shirt.
We added support for AbortController in our Javascript library so that you can abort long-running queries. [Docs]
We've made a number of changes to the Dashboard to expose some great features of PostgreSQL including:
We've improved the column Type field so that it supports your custom types.
We've made it simple to add a unique constraint.
By popular request, you can now view all columns in a table at a glance and edit them in bulk.
We updated our grid to support relationships across multiple schemas.
We've revamped the Auth docs - The docs are now broken down into Authentication and Authorization, and organized alongside our Deep Dive series.
Low Code demo, Using Supabase with Clutch.io - @_dijonmusters ran a session at General Assembly showing how to use these two tools together to create apps using a low code approach. https://youtu.be/5fsKMTeBKKY
There was a lot of new content this month.
We hit 16.5k followers. Follow us there for advance frontend tips and 👁️⚡👁️
Not far from 20K stars: github.com/supabase/supabase Source: repository.surf/supabase
Our Discord is growing fast. Come hangout with 3500+ developers building on Supabase today: discord.supabase.com
We're Hiring SREs. We're fully remote and we love Open Source. See open roles.
We're warming up for another Launch Week! Last time was "Launch Week II: the SQL". We're going to need another month to come up with a good pun again, so we'll aim for November.
Sep 13, 2021
We've raised $30M and shipped a bunch of features. Let's dive into what's been happening at Supabase during the month of August.
This is also available as a blog post and a video demo.
We raised our Series A. We'll use the funds to do more of the same - ship features and hire open source developers. We'll release more details soon. Read more on TechCrunch.
If you've been waiting for Row Level Security to land in Postgres subscriptions, then you're going to love our new repo: Write Ahead Log Realtime Unified Security (WALRUS). The name might be a bit forced, but the security design is deliberate. It's not in production yet, but we're making the repo public for comments using an RFC process.
If you're using SMS login in Auth v2, you can now customize the SMS which is sent to your users. Read more in the docs.
Thanks entirely to @dshukertjr, we now have in-depth reference Dart documentation for CRUD, Auth, Realtime and more!
We added another region for those wanting to host their data and APIs in Seoul. We now have 12 regions to choose from
You can now create columns while creating your table. We've also added improvements for composite primary keys and foreign key creation.
Our previous importer would choke on CSV files which were too large. Not any more!
We now provide a handy copy utility for various database connection strings because we were so tired of looking them up on Stack Overflow.
RLS can be a bit foreign for developers getting started with Postgres. This video by @_dijonmusters demystifies it. If you find the video a useful medium for learning, consider subscribing to our channel.
https://www.youtube.com/watch?v=Ow_Uzedfohk
We held a one-week async Hackathon. Check out all the winners - it was truly impressive what people were able to build in just 7 days.
The Supabase team didn't want to miss out on the fun so we held our own hackathon. It was a good way to dog-food. Some notable projects include
We hit 18,000 stars on GitHub, and got to the top of GitHub trending for Typescript.
If you want to keep up to date, make sure you subscribe to our YouTube channel or follow us on Twitter.
Last December we moved from Alpha to Beta, with a focus on Security, Performance, and Reliability. After a couple of Launch Weeks pushing out new and sexy features, we have decided it's time to focus on these again.
By the time we're done, Supabase will be production-ready for all use cases.
Aug 12, 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.
Following the success of our first Launch Week in March, we finished the July with "Launch Week II: The SQL". The community has been sieving through a slew of bad puns and retro memes to discover the new feature announcements.
Your users can now log in with SMS based mobile auth! We have a Twilio integration (Guide Here) and will be adding more providers soon.
Other Auth updating include, Twitch logins, and the ability to generate invite, recovery, confirmation, and magic links via the API, for people who want more control over the email templating flow. Read the blog post here.
Storage updates include Media Streaming, Public Buckets, Directory Uploads, and a Performance Improvements.
Streaming Media in particular opens up a whole new host of potential use cases, learn more about the updates here.
We made some major new additions to the dashboard including usage statistics, a new project home, and tons of database insights. Check the post here on what you get and how we built it.
You'll find us hanging out regularly in the #hangout channel. We even "live-fixed" some production errors in there on Monday night (which occurred literally 1 hour before our first announcement of the week! Typical!). We're fast approaching 1,500 members so come and join the action! discord.supabase.com
All new Supabase projects will be launched with PostgreSQL 13.3, and we're working on a migration path for old projects. This gives you looooaads of new stuff out the box.
We worked with our friends at PostgREST to make some huge improvements.
For those of you who don't know, every Supabase instance comes with a dedicated PostgREST server by default,
which provides the auto-generated CRUD API that we wrap with supabase-js
.
Our community driven libs for the fasted growing mobile and web framework are now in beta. Learn more by following the Quickstart guide.
We're running a week long hackathon starting NOW. There are some legit prizes, and you can win in a bunch of different categories. Check the full instructions here on how to participate. Submissions close next Friday at midnight PST.
We made an announcement on the progress of functions, and even shipped a few preliminary components, try them out and give us feedback as we continue to move towards this next major milestone. Read the latest updates here.
Get your hands on some Supabase Swag, hand packed and mailed by our team based in Singapore.
Supabase Github Star Growth
If you want to keep up to date, make sure you subscribe to our YouTube channel or follow us on Twitter.
Security, stability, performance ... and Functions.
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 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
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.
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.
We released step-by-step guides to help you set up OAuth with Apple, Bitbucket, Facebook, GitHub, GitLab, Google, and Twitter.
Did you know that you can use Javascript inside your Postgres database? Here's how, with the
plv8
extension.
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.
Supabase Storage now supports upsert
. Shoutout to @ankitjena for
this Pull Request.
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.
We added a new Table Policy Editor which makes Row Level Security even easier. We even included a few templates to get you started.
We run a weekly 1-hour live stream where we build in public.
supabase-js
release, monthly GitHub releaseIf you want to keep up to date, make sure you subscribe to our YouTube channel or follow us on Twitter.
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.
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.
With the help of the community, we started internationalizing our main repository:
We released Storage Api docs built using OpenAPI (swagger).
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.
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.
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 */ _18create or replace function users_this_week()_18returns 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;
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.
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.
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.
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.
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.
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.
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.
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.
Mar 1, 2021
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.
We've improved the UX of our Dashboard with sidebars in every section, including the Table view, the Auth section, and the SQL Editor.
Writing SQL just got 10x easier. We added autocomplete to the SQL editor, including table & column suggestions.
Redirect your users to specific route within your site on signIn()
and signUp()
.
We've released a new Resources section in our docs, as well as two new Auth modules: GoTrue Overview and Google OAuth.
Launch your database in South Africa.
Feb 2, 2021
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.
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.
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.
We have exposed the audit trail directly in the dashboard, as well as the GoTrue logs. Great for security and debugging.
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.
auth.email()
functionWe added a helper function for extracting the logged in user's email address.
Launch your database in London or Sydney!
You can now copy SQL results as Markdown - super useful for adding to blogs and issues.
If you're excited by React Server components then check out the Supabase + Server Components experimental repo. https://github.com/supabase/next-server-components
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:
Jan 3, 2021
After 10 hectic months of building, Supabase is now in Beta.
This is also available as a blog post and a video demo.
We spent months working on Performance, Security, and Reliability. Read more on our Beta Page.
Add comments and descriptions to your Tables directly from our auto-generated docs.
Any updates that happen to your database are reflected in the Table View immediately.
Our table view now has pagination - better for working with large data sets.
We raised $6M from Y Combinator, Mozilla, and Coatue. You can read more on TechCrunch.
Dec 1, 2020
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.
You can now add users manually from your dashboard.
You can also perform admin functions on existing users - send password reset emails, magic links, and delete users.
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.
We added a Status Page which tracks the uptime and latency of the Supabase platform.
Nov 3, 2020
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.
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.
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.
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.
Oct 7, 2020
This is also available as a blog post.
We've released OAuth logins! You can now enable third-party logins on your app for Bitbucket, GitHub, GitLab, or Google.
You can duplicate your tables, just like you would inside a spreadsheet.
Extensions are easier to use. You can enable Postgres extensions with the click of a button.
The SQL editor now stores your query history in your browser. You can also save your favorite queries to run later!
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.
gotrue-js
TypeScript library for interacting with Netlify's GoTrue server. This will soon be bundled into supabase-js
postgrest-js
library to TypeScript, and it will soon be bundled into supabase-js
Sep 6, 2020
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.
Set up tables and columns directly from the table view.
You can now invite team members to your organisation.
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.
The biggest communty contribution to date, @thorwebdev added Typescript support to Supabase. He even live streamed the process.
We have a number of small improvements: