Changelog

New updates and product improvements

Here’s everything we shipped during our GA week:

Day 1 - Supabase is officially launching into General Availability (GA)#

Supabase has moved to General Availability (GA) with over 1 million databases under management and over 2,500 databases launched daily. We’ve been production ready for years and now we are fully confident that we can help every customer become successful, from weekend projects to enterprise initiatives at organizations like Mozilla, 1Password, and PwC.

Full announcement | Video announcement | X space

Day 2 - Supabase Functions now supports AI models#

Supabase Functions has added a native API that makes it easy to run AI models within your functions while removing nasty cold starts. You can use the gte-small embedding model to generate text embeddings or bring your own Ollama server to tap into many more embedding models and Large Language Models (LLMs) like Llama3 and Mistral. Soon we’ll provide hosted Ollama servers so you won’t have to manage them yourselves for a more seamless experience.

Blog post | Video announcement | X space

Day 3 - Supabase Auth now supports Anonymous sign-ins#

Supabase Auth heard your requests and went to work building anonymous sign-ins which enable you to create temporary users that have yet to sign up for your application. This lowers the friction for visitors to use your application while making it easy to convert them to permanent users once they’re hooked.

Blog post | Video announcement | X space

Day 4 - Supabase Storage now supports the S3 protocol#

Supabase Storage already has standard and resumable uploads and now supports the industry standard S3 protocol enabling multipart upload and compatibility with a myriad of tools such as AWS CLI, Clickhouse, and Airbyte for a wide array of use cases.

Blog post | Video announcement | X space

Day 5 - Supabase Security & Performance Advisor#

Supabase has managed over 1 million databases over the last four years and has seen all manner of use cases with common pitfalls that we’re helping our customers address with our Security, Performance, and Index Advisors. These Advisors will help to surface and fix insecure database configurations and recommend database and query optimizations to keep your database secure and performant for your mission critical workloads.

Blog post | Video announcement | X space

GA Week Hackathon Winners#

We are delighted that so many high quality projects were submitted but in the end there could only be one Best Overall Project. The decision wasn’t easy but the Supabase panel of judges chose vdbs (vision database SQL) for the honorific. Congratulations 👏 to @xavimonp who will receive the prize of Apple AirPods.

Full list of winners | All the submissions

One more thing from GA Week#

Just kidding, there’s always more than one. Here’s more awesome things we shipped:

Community Highlights#

  • Changing Databases 5 Times in 48 Hours Boosted Our Launch to 35,000 Views [Article]
  • Crazy new Supabase feature: Understand and learn about anonymous users [Video]
  • Support unstructured data in Postgres with JSON columns [Video]
  • Build an AI-powered blogging platform (Next.js, Langchain & CopilotKit) [Article]
  • How to Secure Your Supabase Database and Storage [Blog post]
  • Self-host Protomaps PMTiles on Supabase Storage [Video]
  • Supabase Realtime - How to deal with multiplayers in Next.js [Blog post]
  • The Hard Parts of Building an Application, Made Easy with Supabase [Article]

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

You can now use JSR packages in your Edge Functions. JSR is a modern package registry for JavaScript and TypeScript created by the Deno team. With JSR support, you can use the latest versions of popular Deno packages like Oak.

How to use:


_10
import { Application } from "jsr:@oak/oak/application";
_10
import { Router } from "jsr:@oak/oak/router";

For local development, you will need to update Supabase CLI for the version v1.166.1 or above.

Edge Functions also supports using NPM and deno.land/x packages. If you are already using them, no changes are needed.

Other improvements and bug fixes#

We've been focusing on improving existing features on the dashboard and fixing some issues over the past week, so while we've got nothing shiny to shout out about, here's still a list of things that we've shipped! 🙂 As always, feel free to let us know if there's something that you guys really want to see in the dashboard - we'll see how we can make it happen 😉

General

  • Feedback widget will not clear its contents when closing until explicitly cleared or submitted [PR]

Table Editor

  • Reinstate link button for foreign keys in table editor side panel [PR]
  • Fix creating foreign key on new column after changing column's name [PR]

SQL Editor

  • Set column width of results to be relative to column content length [PR]

Authentication

  • Added Create policy CTA under each table for convenience [PR]

Storage

  • Added file size validation against project's upload limit when uploading files in dashboard [PR]

Database

  • Query performance: Fix searching via role and query [PR]
  • Query performance: Add db inspect docs link for visibility to aid in helping identify potential Postgres issues [PR]
  • Enumerated types: clean up form field when reopening create enumerated type panel [PR]
  • Tables: Add ellipses to table descriptions to prevent odd wrapping for long descriptions [PR]

Supabase GA Week just wrapped up but the shipping doesn't! This just summarises what have been shipped over the last week - and more 😉

Auth support for anonymous sign-ins#

Supabase Auth now supports anonymous sign-ins, which can be used to create temporary users who haven’t signed up for your application yet! This lowers the friction for new users to try out your product since they don’t have to provide any signup credentials.

Read more about this here

PR: https://github.com/supabase/supabase/issues/21813

Link: https://supabase.com/dashboard/project/_/settings/auth

Storage support for S3 protocol#

Supabase Storage is now officially an S3-Compatible Storage Provider, and now you can use any S3 client to interact with your buckets and files: upload with TUS, serve them with REST, and manage them with the S3 protocol.

Read more about this here

PR: https://github.com/supabase/supabase/issues/22620

Link: http://supabase.com/dashboard/project/_/settings/storage

3 new advisors to your database#

We've added a Security Advisor, a Performance Advisor and a bonus Index Advisor as tools that can help improve your database, more specifically:

  • Security Advisor: for detecting insecure database configuration
  • Performance Advisor: for suggesting database optimizations
  • Index Advisor: for suggesting indexes on slow-running queries

Read more about them here!

PR: https://github.com/supabase/supabase/issues/22842

Link: http://supabase.com/dashboard/project/_/database/security-advisor

4 new database foreign data wrappers#

We've added support for data wrappers with Auth0, Cognito, Microsoft SQL Server, and Redis! Connect to these external data sources and query them directly from your database.

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

Link: https://supabase.com/dashboard/project/_/database/wrappers

Updating of some projects pages to more appropriate sections#

We've renamed and shifted a couple of pages within a project to sections which we believe are more appropriate and relevant. These include:

We've also added more appropriate sections within the Database section in hopes to make things easier to find!

PR: https://github.com/supabase/supabase/issues/22835

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

An option to submit a request to delete your account#

If comes the day that you'd no longer want to use Supabase anymore (hopefully not!) and want to be removed from our systems entirely, feel free to submit a request to delete your account through the account preferences page.

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

Link: [https://supabase.com/dashboard/account/me](https://supabase.com/dashboard/account/me

Other improvements and bug fixes#

General

  • Added project connection instructions for Vite [PR]

Join us for a Special Announcement April 15-19#

We’re making a Special Announcement on April 15th with a few more surprises throughout the week. Claim your ticket today so you don’t miss out and enter for a chance to win a set of AirPods Max.

Claim your ticket

Increased Supavisor connection pooler limits#

We’ve increased the Supavisor client connection limits, the number of concurrent clients that can connect to your project’s pooler, for projects on Small, Medium, Large, and XL compute instances while pricing remains unchanged.

Announcement

Conversational AI assistant now available in SQL Editor#

Introducing a conversational AI assistant in the SQL Editor to help you write and iterate on your queries. This is currently under a feature preview and can be enabled with instructions here.

Announcement

Supavisor pooler port 6543 is transaction-mode only#

We’re simplifying Supavisor connection pooler ports and modes so that port 6543 is only transaction mode and port 5432 continues to be only session mode. If you have pool mode set to session we recommend you switch to pooler port 5432 and set the mode to transaction.

Pull request

Migration to v2 platform architecture#

You may have noticed improved performance from your database over the last couple of weeks. We made some architectural changes to free up resources for your Postgres instance by removing Storage, Realtime, and Pgbouncer from your instance and each are replaced with an equivalent multi-tenant solution, including our new Supavisor connection pooler.

Announcement

Implementing semantic image search with Amazon Bedrock and Supabase Vector#

In this post we'll be creating a Python project to implement semantic image search featuring Amazon Bedrock and Amazon Titan’s multimodal model to embed images and Supabase Vecs client library for managing embeddings in your Supabase database with the pgvector extension.

Blog post

Quick Product Announcements#

  • [Postgres Tooling] vector (pgvector) upgraded to v0.6.2 enables faster HNSW index builds using more parallel workers [Commit]
  • [Postgres Tooling] pg_cron upgraded to v1.6.2 enables sub-minute schedules [Pull request]

Made With Supabase#

  • location-tRacer - Supabase Realtime live location sharing app [GitHub]
  • Talk to your docs - An example agent providing help on your GitHub documentation [GitHub]
  • Feedbase - Open-source solution for collecting feedback & communicating updates [GitHub]
  • Wacky Wordcraft - Create wacky stories with some help from AI [Twitter]
  • Capgo - Instant updates for Capacitor apps. Ship updates, fixes, changes, and features within minutes [Website]

Community Highlights#

  • Building an Investor List App with Novu and Supabase [Blog post]
  • 3 reasons you should use Postgres Functions and Transactions [Video]
  • Add image support to Flutter web application with Supabase Storage [Video]
  • How to set up a secure Supabase project [Blog post]
  • Dynamic Role and Permission Management in Supabase: Enhancing Security and Flexibility [Blog post]
  • Simulate Supabase Postgres RLS (Row Level Security) [Blog post]
  • Monitor Supabase databases and Edge Functions [Blog post]

This discussion was created from the release Platform Updates: March 2024.

Update#

Discussion has been updated with solution chosen.

Realtime Authorization for Broadcast and Presence is now available in Public Beta.

See the official documentation.


Overview#

This post explains how authorization works for Realtime Broadcast and Realtime Presence.

This allows you (the developer) to control access to Realtime Channels. We use Postgres Row Level Security to manage access. Developers create Policies which allow or deny access for your users.

Usage#

Creating Realtime Policies#

Using Studio’s SQL editor you can set RLS rules against the table realtime.messages which will define the rules for your users.


_10
CREATE POLICY "presence sync and broadcast listen to authenticated users"
_10
ON realtime.messages FOR SELECT
_10
TO authenticated
_10
USING ( true );
_10
_10
CREATE POLICY "presence track and broadcast send to authenticated users"
_10
ON realtime.messages FOR INSERT
_10
TO authenticated
_10
WITH CHECK ( true );

Since you are using RLS policies you can do more complex examples.

In a scenario where you have a schema with a table for rooms and one that creates an association between rooms and users.

Example schema to be used in RLS policies

We'll use this example schema to be showcase RLS policies limiting Realtime functionality

We can build more complex RLS rules using this information:


_26
-- Set permission for authenticated users to only listen for Broadcast messages
_26
CREATE POLICY "authenticated can listen to broadcast only on their topics"
_26
ON realtime.messages FOR SELECT
_26
TO authenticated
_26
USING (
_26
exists(
_26
select 1
_26
from public.rooms r join public.rooms_users ru on r.id = ru.room_id
_26
where ru.user_id = auth.uid()
_26
and r.name = realtime.topic()
_26
and realtime.messages.extension = 'broadcast'
_26
)
_26
);
_26
-- Set permission for authenticated users to only write for Broadcast messages
_26
CREATE POLICY "authenticated can write to broadcast only on their topics"
_26
ON realtime.messages FOR INSERT
_26
TO authenticated
_26
WITH CHECK (
_26
exists(
_26
select 1
_26
from public.rooms r join public.rooms_users ru on r.id = ru.room_id
_26
where ru.user_id = auth.uid()
_26
and r.name = realtime.topic()
_26
and realtime.messages.extension = 'broadcast'
_26
)
_26
)

Testing Authorization#

Now to test it we can use a quick deno script by creating a index.ts


_21
// Run with deno run --allow-net --allow-env --allow-read --allow-ffi index.ts
_21
import { createClient } from "npm:@supabase/supabase-js@2.38.5";
_21
const url = "https://<project_ref>.supabase.com";
_21
const apikey = "<api_key>";
_21
_21
const client = createClient(url, apikey);
_21
_21
const channel = client.channel("channel_1", {
_21
config: { broadcast: { self: true }, private: true},
_21
});
_21
channel
_21
.on("broadcast", { event: "test" }, (payload) => console.log(payload))
_21
.on("presence", { event: "join" }, (payload) => console.log(payload))
_21
.on("presence", { event: "leave" }, (payload) => console.log(payload))
_21
.subscribe((status: string, err: any) => {
_21
if (status === "SUBSCRIBED") {
_21
console.log("Connected!");
_21
} else {
_21
console.error(err);
_21
}
_21
});

This will return an error with the message You do not have permissions to read from this Topic

But if we change our code to pass along an authenticated user, then we will be able to connect and receive / send messages.


_28
import { createClient } from "npm:@supabase/supabase-js@2.38.5";
_28
const url = "https://<project_ref>.supabase.co";
_28
const apikey = "<api_key>";
_28
_28
const client = createClient(url, apikey);
_28
_28
await client.auth.signInWithPassword({
_28
email: "<email>",
_28
password: "<password>",
_28
});
_28
_28
client.realtime.setAuth(
_28
(await client.auth.getSession()).data.session.access_token
_28
);
_28
const channel = client.channel("channel_1", {
_28
config: { broadcast: { self: true }, private: true },
_28
});
_28
channel
_28
.on("broadcast", { event: "test" }, (payload) => console.log(payload))
_28
.on("presence", { event: "join" }, (payload) => console.log(payload))
_28
.on("presence", { event: "leave" }, (payload) => console.log(payload))
_28
.subscribe((status: string, err: any) => {
_28
if (status === "SUBSCRIBED") {
_28
console.log("Connected!");
_28
} else {
_28
console.error(err);
_28
}
_28
});

Do not forget that RLS policies can use other tables in them so this will give you all the flexibility you need to better fit your use case but be aware of the performance impact of heavy RLS queries or non-indexed fields.

Migrating from Public Channels#

On connect, you need to send in the configuration that the channel will be private: true

Client library#

We’re working on the next version actively so we can provide a good developer experience.

Please check the latest next version at https://www.npmjs.com/package/@supabase/realtime-js?activeTab=versions

This library as changed the configuration settings to add private: true on channel connect to determine if the user will be connecting an RLS checked channel.

How it works#

Connection context#

When you connect with Realtime we set a connection configuration with your JWT, Topic and Headers using the following query:


_10
SELECT
_10
set_config('role', $1, true),
_10
set_config('realtime.topic', $2, true),
_10
set_config('request.jwt', $4, true),
_10
set_config('request.jwt.claims', $6, true),
_10
set_config('request.headers', $7, true)

This query is only run when you connect to a topic.

We’re also providing a new function to easily fetch the realtime.topic configuration with


_10
SELECT realtime.topic();
_10
_10
-- Usage example
_10
CREATE POLICY "authenticated users can only write to topic named foo"
_10
ON realtime.messages FOR INSERT
_10
TO authenticated
_10
WITH CHECK ( realtime.topic() = 'foo' );

Applying RLS Policies#

To achieve RLS checks on your Realtime connection we created a new table in the realtime schema to which you will be able to write RLS rules against it to control your topics extensions.

You won’t see any entries recorded in this table as we rollback the changes made to test out RLS policies to avoid creating clutter in your database.

Supavisor, Supabase's multi-tenant connection pooler deployed to regional clusters, became production ready back in December 2023. You can read the announcement here.

Since then, we've migrated Supabase projects from PgBouncer, single tenant connection pooler deployed to the project's instance, to Supavisor.

However, we kept the previous client connection limits from PgBouncer during the transition across all compute instances.

Today, we're happy to announce that we've increased this limit for compute instances Small, Medium, Large, and XL so your projects can take advantage of additional client connections while pricing remains unchanged. These new limits have already been applied to all existing projects and any new projects spun up.

Here's a quick breakdown:

Compute SizePrevious Client LimitsNew Client Limits
Small200400
Medium200600
Large300800
XL7001,000

For a more complete breakdown of your compute instance resources head over to the Compute Add-ons page.

Update to the UI for RLS policies#

image

We've been looking into improving the UX for the RLS policy UI after going through feedback of the community's struggles with RLS in general, and this is the next step that we're taking to streamline the UX.

What we're calling as a "hybrid" editor (for now), you'll be able to see the corresponding SQL query for creating or updating your RLS policies while you're editing the policy via the input fields. And if you'd like even greater control, there's always the "Open in SQL Editor" button as an escape hatch where you can edit the SQL query in its entirety.

Templates are now right beside the editor as well, so you no longer have to click back and forth between templates and the editor.

We've always seen the dashboard as more than just a database adminstration tool, but also potentially an educational platform for developers to pick up the SQL language as they build out their database, and we hope that the changes here will help make that even easier.

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

Link: https://supabase.com/dashboard/project/_/auth/policies

Connection pooler on port 6543 is set to transaction mode permanently#

Previously, connection pooler's port 6543 can be set to either transaction or session mode under your project's database settings. This change makes it easier to distinguish between pooler modes and ports by only enabling transaction mode on port 6543 while maintaining session mode on port 5432.

If your using port 6543 and your project's pooler mode is transaction then you won't be able to set the mode to session. You can use port 5432 for session mode.

If your using port 6543 and your project's pooler mode is session then we strongly advise that you use port 5432 for session mode and change the mode to transaction. Once this setting is saved you won't be able to set session mode on port 6543.

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

Link: https://supabase.com/dashboard/project/_/settings/database#connection-pooler

Other improvements and bug fixes#

[General]

  • Home page connect modal fix broken link under pooler mode to Database Settings [PR]
  • Fix toast messages to handle really long messages, and support closing them in such scenarios [PR]

[Auth]

  • Fix applying table privileges to incorrect table if there any more than 1 table with the same name in different schemas [PR]

[Table Editor]

  • Prevent updating RLS via GUI for tables under protected schemas [PR]
  • Support updating column "is unique" when editing table in side panel [PR]
  • Fix support NULL values when importing data via CSV text [PR]
  • Ensure that table and column names are trimmed for whitespaces when saving [PR]

[Storage Explorer]

  • Fix delete bucket modal styling when bucket name is long [PR]
  • Fix deleting parent folder not deleting child folders despite child folders being empty [PR]

[Database Pages]

  • Fix inability to manage foreign keys [PR]
  • Validate enumerated types to ensure names do not conflict with native PG data type names [PR]
  • Validate enumerated types to ensure names do not conflict with native PG data type names [PR]
  • Fix Stripe foreign data wrapper to support selecting a rowid_column, addresses the issue of not being able to update stripe foreign tables [PR]

In our previous platform architecture, our Storage, Realtime, and connection pooler (PgBouncer) services were bundled together, with a single instance of each service per project.

For our v2 architecture, we’ve “unbundled” these services, moving to a multi-tenant model, where a single instance of each service serves many projects:

This frees up as much resources as possible for your Postgres databases, while enabling us to offer more resource intensive features for these services, and opens the door to capabilities such as zero-downtime scaling.

With Supavisor replacing PgBouncer, along with some other key optimizations, the final pieces of our v2 architecture are now ready.

We’ve already fully rolled out our v2 architecture to paid plan projects. You now have more resources available, for the same price that you’ve been paying.

Free plan gradual rollout (20 March 2024 onwards)#

  • 20 March 2024: Newly created or unpaused projects will use v2 architecture
  • 28 March 2024: Existing projects will start being migrated to v2 architecture

This will be a gradual rollout - we will email you at least one week before your project is scheduled to be migrated.

Your action for projects scheduled to be migrated#

For newly created or unpaused projects on the Free Plan, no action is required.

For existing projects on the Free Plan, up to a few minutes of downtime is expected for the migration. For each of your projects, we’ll identify the 30-minute maintenance window where your project had the least database queries over the previous 10 weeks.

You have two choices:

  • Automatic Migration: If you don't take any action, we plan to do the migration automatically during that maintenance window with the least historical activity.
  • Manual Migration: Any time before that, you can go to Project Settings > General to see whether/when the maintenance window is scheduled (timings will also be included in the email). There, you may choose to manually restart the project yourself, at a time that is convenient for you. Your project will be restarted on v2 architecture.

Conversational AI assistant now available as part of the SQL Editor#

As part of our ongoing efforts to introduce the AI assistant across the dashboard, we're bringing the AI assistant to the SQL Editor next! Some of you might have already been using the AI assistant in the SQL Editor through the green bar at the top of the editor - we're sprucing it up by extending it further to a conversational UX. Go back and forth with the assistant and apply the code snippets that you deem to be the most appropriate!

This is currently under a feature preview - you may enable this feature by clicking on the user icon while in a project at the bottom of the side navigation bar and selecting "Feature previews". From there just enable the preview under "SQL Editor Conversational Assistant". And as always, we're incredibly open to any feedback for this, so give us a shout right here!

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

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

Other improvements and bug fixes#

Table Editor

  • Fix creating a table will automatically trim for whitespaces (PR)

SQL Editor

  • Fix snippet names not truncating (PR)

Auth Policies

  • Fix error message not surfacing in new RLS UI from feature preview (PR)

Database Functions

  • Fix light mode styling for code editor (PR)

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