releases.shpreview
Supabase/Supabase Changelog

Supabase Changelog

$npx -y @buildinternet/releases show supabase-changelog
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases19Avg6/moVersionsv2.0
Apr 18, 2024

We're making it easier to build a secure and high-performing application.

A recap of the most important launches and updates from the week.

Supabase Storage is now officially an S3-Compatible Storage Provider.

Apr 17, 2024

Sign in as an anonymous user to authenticate with Supabase

Apr 16, 2024

Use embeddings and large language models on the edge with Supabase Edge Functions.

Apr 15, 2024

Supabase Branching is now available on Pro Plan and above.

The Oriole team are joining Supabase to build a faster storage engine for Postgres.

Supabase is now available on the AWS Marketplace, Simplifying Procurement for Enterprise Customers.

Launch a new hosted Supabase project directly from the CLI using pre-built applications.

15 Apr 2024 · 2 minute read

We are excited to announce that Supabase Swift libraries are now officially supported by Supabase.

This makes it simple to interact with Supabase from applications on Apple's platforms, including iOS, macOS, watchOS, tvOS, and visionOS:

let url = URL(string: "...")!  
let anonKey = "public-anon-key"  
let client = SupabaseClient(supabaseURL: url, supabaseKey: anonKey)  

struct Country: Decodable {  
 let id: Int  
 let name: String  
}  

let countries: [Country] = try await supabase.from("countries")  
 .select()  
 .execute()  
 .value  

New features

This release includes the following new features:

  • WhatsApp OTP
  • Captcha support
  • SSO
  • Simplified Storage uploads
  • Anonymous sign-ins
  • Simplified OAuth

What does official support mean?

Swift developers can now integrate Supabase services seamlessly with official support. This means:

  • Direct assistance from the Supabase team: Get timely and effective help directly from the developers who build and maintain your tools.
  • Continuously updated libraries: Stay up-to-date with the latest features and optimizations that are fully tested and endorsed by Supabase.
  • Community and collaboration: Engage with a broader community of Swift developers using Supabase, share knowledge, and contribute to the library's growth.

Contributors

We want to give a shout out to the community members who have contributed to the development of the Supabase Swift libraries:

grdsdev, satishbabariya, AngCosmin, thecoolwinter, maail, gentilijuanmanuel, mbarnach, mdloucks, mpross512, SaurabhJamadagni, theolampert, tyirenkyi, tmn, multimokia, zunda-pixel, iamlouislab, jxhug, james-william-r, jknlsn, glowcap, Colgates, ChristophePRAT, brianmichel, junjielu.

Getting started

We've released a new guide to help you get started with the key features available in Supabase Swift.

Apr 12, 2024

Build an Open Source Project over 10 days. 5 prize categories.

Apr 11, 2024

11 Apr 2024 · 43 minute read

By Raminder Singh, Engineering

Controlling access to data in Postgres is paramount for data security. Postgres provides a robust and flexible permissions model for users to manage access to their data. The permissions model is based on the familiar object, privilege, role model but has subtleties which must be understood by a database administrator to create airtight access.

Basic Concepts

Database Object - Any entity created in the database. Tables, foreign tables, views, materialized views, types, domains, operators, functions, triggers etc. are database objects.

Privilege - Controls what operation is allowed to be run on a database object. For example, the select privilege on a table controls the ability to read data from the table.

Role - A user or a group. A user is someone who can login to the database. A group is a collection of users to make it easier to manage privileges for users. Unlike a user, a group can't login to the database.

Owner - Every database object has an owner. The owner has complete control over the object. They can modify or delete the object or grant privileges to other users and groups.

Key Concepts

Creating and Managing Roles

Create users with login capability:

create role junior_dev login password 'password';
create role senior_dev login password 'password';

Create groups (roles without login):

create role developers nologin;

Privileges and Grants

Grant privileges on objects:

grant create on schema public to junior_dev;
grant select on table public.apps to senior_dev;

Grant privileges with the option to grant to others:

grant select on public.apps to postgres with grant option;

Revoke privileges:

revoke select on public.apps from senior_dev;

Role Membership

Add users to groups:

grant developers to junior_dev;
grant developers to senior_dev;

Users can impersonate groups they are members of:

set role developers;
reset role;

Revoke group membership:

revoke developers from senior_dev;

Grant Options

Control group membership abilities with options:

  • set - ability to impersonate the group
  • inherit - ability to inherit permissions from the group
  • admin - ability to add/remove other users from the group
grant developers to junior_dev with admin option;

Default Access Privileges

Set default privileges for future objects:

alter default privileges in schema public grant select on tables to senior_dev;

View default privileges:

\ddp public

Role Attributes

Common role attributes:

  • login - controls the role's ability to login
  • superuser - controls whether the role is a superuser
  • createdb - controls whether the role can create databases
  • createrole - controls whether the role can create other roles
  • replication - controls whether the role can initiate replication
  • bypassrls - controls whether the role can bypass row level security
  • connection limit - limits maximum number of connections
  • inherit - controls whether the role can inherit permissions from other roles

Special Roles

Superuser - A role with the superuser attribute set. Very powerful and bypasses all privilege checks except authentication. Should be used with care. Only superusers can create other superuser roles.

Public - A group role which every other role is automatically a part of. Used to provide common privileges. Can't be deleted, but its privileges can be revoked. Provides default privileges:

  • connect - ability to connect to the database
  • temporary - ability to create temporary tables
  • execute - ability to execute functions
  • usage - ability to use objects like domains, languages or types

Permission Inheritance

A role's privileges are the union of:

  1. Privileges granted to the role directly
  2. Privileges inherited from roles this role is an explicit member of
  3. Privileges inherited from the public role (implicit membership)

Summary

  • Every database object has an owner
  • Operations on database objects are controlled by privileges
  • Owners can grant privileges on owned objects to other roles
  • Roles can be either users or groups
  • Roles can inherit permissions from roles they are members of
  • public role is a role which every other role is implicitly a member of
  • superuser roles bypass all privilege checks and should be used with care
  • grant command only grants privileges on existing objects
  • Default privileges control privileges to be granted to objects created in the future
Apr 1, 2024

01 Apr 2024 · 3 minute read

We live in a world where data is as critical as air and water, powering everything from global enterprises to personal projects. At Supabase, we create products that are not just cutting-edge but also secure, reliable, and now, timeless.

Today, we are excited to introduce a groundbreaking service that bridges the digital divide with the most enduring medium known to humankind: paper. Meet pg_paper_dump, Supabase's answer to the ultimate data preservation conundrum.

Why Paper?

In the digital era, the threat landscape is constantly evolving, with new vulnerabilities emerging at a pace that's hard to keep up with. While digital backups are the norm, they are susceptible to cyber-attacks, hardware failures, and obsolescence.

This vulnerability led us to think outside the digital box and into a realm that is impervious to hacking, immune to electromagnetic pulses, and resistant to time itself: physical paper.

Historical data backup on Papyrus that inspired pg_paper_dump.

How does pg_paper_dump work?

Backup Process

  1. Select Your Data: Choose the databases you wish to back up with pg_paper_dump.
  2. Encode and Print: Our system encodes your data with Comic Sans and prints it onto durable paper.
  3. Secure Storage: We store your paper backups in a location of your choice or utilize our secure Arctic Vault for maximum security.

Restoration Process

  1. Select your recovery point: Thanks to point-in-time recovery, we can restore your data up until any specific page.
  2. Restore: Our Mechanical Turks are trained to decode data encoded in Comic Sans and will input your data with reasonable human-accuracy into your destination database.

Scaling data preservation with containers

Our Analog Engineering team has developed a container orchestration protocol to coordinate the backup and restore process of large databases.

Who is pg_paper_dump for?

  • Companies that use fax machines.
  • Future SOC 4 compliant companies.
  • Vogons.

Features and Benefits

  • Security: Provides a level of security that is fundamentally beyond the reach of digital vulnerabilities.
  • Eco-conscious: Our materials are selected for minimal environmental impact without compromising on durability or legibility.
  • Simplicity of Restoration: When the time comes, restoring your data is as simple as taking the printed codes and typing them back into Supabase's SQL editor.

Availability

Sign up for our open beta to get access to pg_paper_dump now or try it out our self-hosted solution.

As all of our products, we have open-sourced the code and made it available to the public to be used without any restrictions here.

The Future is Here

We are offering a bridge between these worlds, providing a backup solution that stands the test of time. Join us in redefining data security and making history, one sheet at a time.

Mar 26, 2024

Implementing semantic image search with Amazon Titan and Supabase Vector in Python.

Feb 29, 2024

Summarize your data by performing calculations across groups of rows in PostgREST

Feb 26, 2024

Build a movie-viewing app that recommends another movie based on what the user is viewing using OpenAI, Flutter and Supabase.

Feb 21, 2024

Learn about our story to get to the automated performance testing.

Feb 13, 2024

Use Adaptive Retrieval to improve query performance with OpenAI's new embedding models

Jan 31, 2024

NoSQL Postgres: Add MongoDB compatibility to your Supabase projects with FerretDB

Jan 30, 2024
pgvector 0.6.0: 30x faster with parallel index builds

pgvector 0.6.0 brings a significant improvement: parallel index builds for HNSW. Building an HNSW index is now up to 30x faster for unlogged tables.

Latest
Apr 14, 2026
Tracking Since
Aug 8, 2023
Last fetched Apr 14, 2026