Launch Week 7 Community Highlights

2023-04-14

10 minute read

Supabase is a collaborative company. We work with, sponsor, and support as many open source tools as possible. Here’s a few of this community highlights from the past 3 months.

Ecosystem Partners

Our Integrations Marketplace continues to grow. This past few months has brought a number of new partners and collaborations:

AWS RDS

We’ve worked with the RDS team to build out the pg_tle extension and tooling and integrating it into Supabase. These changes are a stepping stone towards running the Supabase stack on AWS RDS. Special shoutout to @jkatz, who was an instrumental collaborator and the rest of the RDS team who have been helping to transition PL/Rust into a Trusted Language.

Read the press announcement on Amazon.com.

Read about pg_tle at Supabase and our collaboration with AWS.

Read about our experimental database registry, database.dev.

Clickhouse

Along with our new Clickhouse Foreign Data Wrapper, our friends at Clickhouse created guides showing the bidirectional capabilities between Supabase Postgres and Clickhouse Cloud. This is a perfect pairing when you’re consolidating your operational data with your analytical data, or if you have long-running queries that you need to offload to an analytical database like Clickhouse.

Read the guide.

LangChain

It’s always fun when two open source communities join forces. LangChain is an open source framework for developing applications powered by language models. This week, to support the Supabase AI Hackathon, they released a Supabase x LangChain template, one of the fastest ways to build AI applications. Their community recently made two contributions for Supabase: adding Supabase as a Vector Store, and a neat Hybrid Search algorithm using Postgres’ Full Text Search. The also

Read the integration docs.

Clone the template.

Vercel + OpenAI

Do we even need to introduce Vercel and OpenAI? We have a new template in the Vercel Marketplace for creating GPT-search for your MDX files. The templates takes all the .mdx files in the pagesdirectory and processes them to use as custom context within OpenAI Text Completion prompts.

View the template.

Doppler

Doppler is a fully managed SecretOps platform that helps centralize, orchestrate, and rotate secrets in any environment. Your team can mitigate and remediate risks while using tools that fit natively into existing developer workflows.They just released an integration to automatically sync all of your team's secrets to Supabase.

Check out the docs.

Redwood

The RedwoodJS team has contributed a new framework Quick Start to our docs that will get you from zero to fullstack app with Prisma in just 2 minutes. Big shoutout to @dthyresson who continues to be a valuable contributor across many open source communities.

Read the QuickStart.

Dart Edge for Supabase Edge Functions

Dart Edge, built by Invertase, allows developers to write edge functions in Dart. Previously, Flutter developers had to use TypeScript for their edge functions, as it was the only supported language. However, with Dart Edge, Flutter developers can write backend code using their favorite programming language, Dart!

Check out the guide.

T3 Turbo x Supabase

T3 Turbo is a type-safe, full-stack template to create Next.js and Expo React Native applications. Using our recent Mobile Auth updates, the T3 community has helped build the Supabase Create T3 Turbo template, the fastest and easiest way to get started with Supabase and the T3 Stack. Huge shout out to Julius who single-handedly created the template!

Use the template.

Self-hosting with Digital Ocean and Stackgres

This Launch Week had a big focus on self-hosting, adding support for self-hosted Logs and Edge Functions. Along with our official self-hosting guides (and existing community support for AWS, k8s, Traefik, and Terraform), we have a couple of new entrants into the community:

We’re looking for more self-hosting maintainers, especially for the self-hosted guides. Everything we do is MIT, Apache2, or PostgreSQL licensed, but our team is relatively small and we don’t have expertise for every deployment strategy that our community might want. If you are willing to help out on a regular basis please reach out!

Postgres Extensions and improvements

The community continues to add and improve the extensions and configuration for our Postgres image. Here are a few of the crowd favorites:

pgvector: Open-source vector similarity search for Postgres

Just as it says on the label: pgvector enables vector functionality within Postgres. It’s been, by far, our most popular addition to date as it can be used to store OpenAI embeddings and serves as an alternative to Pinecone and Milvus.

Read the announcement.

HypoPG: Hypothetical indexes

HypoPG allows you to create hypothetical indexes that are visible to the PostgreSQL query planner, with no resource cost (CPU, disk, memory). This allows users to “try out” an index without waiting for the server to build them. We have big plans for this extension - we’ll integrate this functionality into the dashboard with an Index Advisor to help you optimize slow-running queries.

Read the docs.

pg_tle: Install your own extensions

We’ve been working with the RDS team to make Postgres even more extensible. While you typically need to wait for Cloud Providers to add extension support to their Postgres offering, pgtle is a step towards making this _user managed. We’ve even built a proof-of-concept registry (similar to NPM or Cargo) where you can upload extensions and share them with the community.

Link to blog post.

PGroonga v3.0

PGroonga is an extension implementing full-text search in multiple languages. In v3, PGroonga becomes fully compatible with the Supabase extensions schema deprecating the need to explicitly write a schema for operators. It also increases support for text and varchar array types. They just released this in time for Supabase Launch Week, so we’ll roll it out to the platform in the next month.

Read the announcement.

LZ4 compression

PG has supported LZ4 page and row compression since v14, with WAL compression added in v15. LZ4 is faster than the standard pglz method. Supabase is now fully-compatible with this option. This is especially useful for TOAST values and WAL compression.

ICU compatibility

Supabase Postgres has been configured with ICU support. This makes it possible to use ICU locales as collation providers. ICU supports many languages and makes the ordering of text type attributes according to these language rules.

Client Libraries and utilities

It’s becoming easier to build applications with any language.

Support for Swift, Python, and C#

In the past few months, the community has rallied and shipped 3 new client libraries, complete with Docs:

These libraries are in various stages of readiness, so if you find anything that can be improved don’t hesitate to jump into the source code and help out.

Supabase Cache Helpers

Philipp just released 1.0 of “Supabase Cache Helpers”, a collection of cache utilities for Supabase. With just a line of code, you can simplify the logic of fetching, subscribing to updates, and mutating data as well as storage objects in your project, and have all the amazing features of SWR or React Query. The cache helpers parse queries into a unique and definite query keys, automatically populating the query cache with every mutation using implicit knowledge of the schema.

Check it out on GitHub.

Read the docs.

SupaShim by Roboflow

The team at Roboflow just released supashim, which hooks into the Firebase calls from your app and translates them into the Supabase equivalents. With supashim, you can take an existing Firebase app, swap out the firebase global for supashim, then point it to a self-hosted Supabase instance without changing any application code. Pretty neat!

Check it out on GitHub.

Giving back

We’ve been upstreaming as many changes as possible for Supabase stack.

Postgres Patches

We’ve submitted a number of patches to the Postgres Core:

  • Added the “USER SET” parameter values for pg_db_role_setting. This GUC variable lets ordinary roles set placeholder variables, when permission requirements are not known yet [Patch]
  • Added support for custom tuple slots in the custom executor nodes. This is useful for custom table access methods. [Patch]
  • Optimizations for LWlock waiting queue scalability. Long LWlock wait queues were not effective at unlocking. We’ve submitted proposals to make the queue lockless (still under community consideration). [Discussion one, two, three]

OrioleDB Patches

We continue to support the development of OrioleDB, who are building scalable storage mechanisms for Postgres using table access methods. The OrioleDB extension is now version Alpha12 and compatible with Postgres 15.

This release includes various improvements and fixes, including parallel sequential scan of OrioleDB relations. This allows multi-CPU systems to speed up select queries that involve sequential scans. It’s an analogue of heap parallel scan in Postgres core but for index-organized tables. With this base, we’re now implementing methods to build Orioledb indexes using many parallel workers.

Read the release notes.

Contributors

We also want to highlight all the humans who have made meaningful contributions to the Supabase ecosystem since our last Launch Week:

Community

And you, our community. Thank you for using Supabase, reading our blog posts, and showing your support. With over 48,000 GitHub stars, we are now in the top 180 most-popular repositories in all of GitHub. We still have a long way to go, but it’s a lot more fun doing it collaboratively.

Share this article

Build in a weekend, scale to millions