Skip to main content
A Powabase project’s Postgres comes with a set of extensions preloaded for the platform’s own services. You can use them too, and you can install additional ones from the Postgres image’s shipped library set. For the broader concept of schemas, see Schemas. For pgvector specifically, see User-managed pgvector. For pg_net via the DB-webhook pattern, see DB webhooks.

Preloaded in every project

These extensions are available at project provision time without CREATE EXTENSION. Powabase’s own init scripts add vector and pg_net; the others come from the upstream supabase/postgres:15.8.1.085 image’s default init. pgcrypto’s gen_random_uuid() is what your CREATE TABLE ... id uuid DEFAULT gen_random_uuid() columns use. No setup needed. pg_net is in the extensions schema (not public) so its functions stay out of the default search path. Call them as extensions.http_post(...), or SET search_path TO extensions, public first.

You-can-install

The Postgres image (supabase/postgres:15.8.1.085) includes a long list of extensions you can install yourself with CREATE EXTENSION. The most useful for application code: Install them in the extensions schema:
You’ll need to be connected as supabase_admin (via the Database URL); anon, authenticated, and service_role don’t have CREATE on the database.

Not available

Some extensions you might be looking for that aren’t in the Powabase Postgres image: The platform team can add extensions on request for enterprise customers.

Listing what’s available

To see what’s installed in your project right now:
To see what’s available to CREATE EXTENSION:
This shows extensions the image has shipped but you haven’t installed. Run CREATE EXTENSION foo SCHEMA extensions to install any of them.

What lives where

Extensions install their objects (functions, types, tables) into a schema. Powabase’s convention is to put platform-preloaded extensions in extensions (for clean search_path defaults), with vector and pgcrypto in public (the standard Supabase pattern). Anything you CREATE EXTENSION yourself should also go in extensions. If you’re getting “function does not exist” errors after installing an extension, check the schema. Most extension functions don’t end up in public and need to be qualified (extensions.http_post(...)) or have extensions added to your search_path.

Next steps

Schemas

The five schemas extensions might land in.

User-managed pgvector

The most common use of a preloaded extension.

DB webhooks

The pg_net-based pattern that turns Postgres changes into HTTP calls.

Direct Postgres

The connection you’ll use to install extensions.