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.
ExtensionSchemaWhat it does
vector (pgvector)publicVector similarity search with HNSW / IVFFlat indexes
pg_netextensionsAsync HTTP from inside Postgres (used by DB webhooks)
pgcryptopublicCryptographic functions (gen_random_uuid, crypt, digest, etc.)
uuid-osspextensionsAlternative UUID generation (uuid_generate_v4, etc.)
pg_graphqlpreloaded libraryGraphQL on top of Postgres, callable via POST /rest/v1/rpc/graphql
vaultpreloaded libraryEncrypted secret storage. Available via direct Postgres only — no platform code uses it.
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 don’t pollute 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:
ExtensionSchemaWhat it does
pg_trgmextensionsTrigram similarity for fuzzy text matching, useful for autocomplete
unaccentextensionsStrip accents from text for diacritic-insensitive search
citextextensionsCase-insensitive text type — WHERE email = 'foo@bar.com' matches Foo@Bar.com
btree_gin, btree_gistextensionsGIN / GiST index support for scalar types alongside JSONB / tsvector
postgres_fdwextensionsQuery a different Postgres database as if it were a local table
hstoreextensionsKey-value type (less common now that JSONB exists, but still supported)
tsm_system_rowsextensionsTABLESAMPLE SYSTEM_ROWS(N) for fast random sampling
intarrayextensionsGIN-indexable integer-array operators
Install them in the extensions schema:
CREATE EXTENSION IF NOT EXISTS pg_trgm SCHEMA extensions;
CREATE EXTENSION IF NOT EXISTS citext SCHEMA extensions;
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:
ExtensionStatus
pg_cronNot enabled. Scheduling jobs in-database isn’t supported on Powabase; use a workflow with a cron trigger instead.
pg_jsonschemaNot present. Use CHECK constraints or application-level validation.
pgsodiumNot enabled. Use pgcrypto for crypto, or move secrets to your application config.
postgisNot in the standard image. If you need it, contact support.
pgmq, pg_partman, etc.Various community extensions — file a platform request if you need one.
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:
SELECT extname, nspname AS schema, extversion
FROM pg_extension e
JOIN pg_namespace n ON n.oid = e.extnamespace
ORDER BY extname;
To see what’s available to CREATE EXTENSION:
SELECT name, default_version
FROM pg_available_extensions
WHERE installed_version IS NULL
ORDER BY name;
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.