> [!IMPORTANT] > Don't merge until the OrioleDB public beta launches. Docs deploy on merge. ## What Updates the OrioleDB guide (`guides/database/orioledb`) for the public beta: - States that OrioleDB is in public beta and that OrioleDB projects have access to the same paid features as other Supabase projects. - Replaces the outdated "choose `OrioleDB Public Alpha` Postgres version" instruction and its screenshot with text steps that match the current project creation form (**Advanced Configuration** → **Postgres Type** → **Postgres with OrioleDB**). It also notes that OrioleDB can't be added to or removed from an existing project. A new screenshot will follow once the dashboard shows the beta labels. - Corrects the `orioledb.default_compress` range to `-1` to `22`. Values outside that range are rejected. - Updates the `EXPLAIN` output for the primary key lookup to match what OrioleDB returns (`Custom Scan (o_scan)`). - Replaces the benchmark chart's alt text with a description of the chart. Headings, frontmatter, and navigation are unchanged, so existing links to this page and its sections still work. ## Checked against upstream OrioleDB Checked the page's claims against the [OrioleDB docs](https://github.com/orioledb/orioledb/tree/main/doc/usage) and codebase on `main`: - The concepts section, the `orioledb.serializable` values, and the compression settings match. - The limitations link still resolves (`#current-limitations`). - Doc changes on `main` since beta17 (collations, sparse files, concurrent unique bridged indexes) don't affect claims on this page. ## Verification (`/test-the-docs`) | Snippet / step | Class | Sandbox | Result | Notes | | --- | --- | --- | --- | --- | | `create table blog_post …` | runnable-local | DinD + runner, `supabase/postgres:17.9.0.028-orioledb` | pass | Table created with the `orioledb` access method (default) | | `create index …` (2 indexes) | runnable-with-setup | same | pass | | | `insert …` + `select …` | runnable-with-setup | same | pass | Timestamp differs, as expected | | `explain` (3 statements) | runnable-with-setup | same | pass | Primary key lookup output updated in this PR to match | | `select … from pg_settings where name like 'orioledb.%'` | runnable-local | same | pass | All 10 automatically tuned settings present | | `alter database … default_compress to 1` | runnable-local | same | pass | | | Compression range `-1`–`22` | claim check | same | pass | `23` rejected: "outside the valid range (-1 .. 22)" | | User-configurable settings have `user` context | claim check | same | pass | `serializable` values match the page | | Hidden `ctid` key when no primary key is defined | claim check | same | pass | | | HNSW index via index bridging | claim check | same | fail (product bug) | Index misses rows inserted after it's created. Known upstream as orioledb/orioledb#1118, fixed after beta17. The tested image bundles an earlier OrioleDB release. Re-test on an image with beta18 before merging. | | Dashboard project creation steps | deferred | — | deferred | Needs a hosted project; labels checked against Studio source | **Tier A path:** every SQL block on the page, run in page order against the Supabase OrioleDB image. **Environment:** Docker 29.4.0 (linux/aarch64); compose sandbox from `test-the-docs`; all SQL run inside the runner container. **Build:** `pnpm build:guides-markdown` passes; the generated markdown for this page includes all changes. ## Self-review **Blockers:** none. **Before merging:** - [ ] Re-run the HNSW check on an image with OrioleDB beta18. - [ ] Re-check the page against the `beta18` tag once it's published. **Nits left for a follow-up (existing text, outside this PR's scope):** - The page spells `pg_vector`; the extension is `pgvector`. - Index support is described twice, in the top note and again under "Creating indexes". - The markdown export (`internals/markdown-schema/Admonition.ts`) drops admonition titles on every page. This PR avoids relying on a title for the beta status. Linear: DOCS-1399 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated the OrioleDB guide with benchmark results for an 8xlarge instance, including a 1.8x speedup and throughput data across 32–256 connections. * Clarified that OrioleDB projects have access to the same paid features as other Supabase projects, and added guidance to review its limitations. * Updated project setup instructions, noting that OrioleDB must be selected when creating a project and cannot be added later or removed. * Revised the query plan example and documented compression levels from `0` through `22`. * **Product Updates** * Updated OrioleDB’s availability stage to public beta. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Artur Zakirov <zaartur@gmail.com>
Supabase
Supabase is the Postgres development platform. We're building the features of Firebase using enterprise-grade open source tools.
- Hosted Postgres Database. Docs
- Authentication and Authorization. Docs
- Auto-generated APIs.
- Functions.
- File Storage. Docs
- AI + Vector/Embeddings Toolkit. Docs
- Dashboard
Watch "releases" of this repo to get notified of major updates.
Documentation
For full documentation, visit supabase.com/docs
To see how to Contribute, visit Getting Started
Community & Support
- Community Forum. Best for: help with building, discussion about database best practices.
- GitHub Issues. Best for: bugs and errors you encounter using Supabase.
- Email Support. Best for: problems with your database or infrastructure.
- Discord. Best for: sharing your applications and hanging out with the community.
How it works
Supabase is a combination of open source tools. We’re building the features of Firebase using enterprise-grade, open source products. If the tools and communities exist, with an MIT, Apache 2, or equivalent open license, we will use and support that tool. If the tool doesn't exist, we build and open source it ourselves. Supabase is not a 1-to-1 mapping of Firebase. Our aim is to give developers a Firebase-like developer experience using open source tools.
Architecture
Supabase is a hosted platform. You can sign up and start using Supabase without installing anything. You can also self-host and develop locally.
- Postgres is an object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
- Realtime is an Elixir server that allows you to listen to PostgreSQL inserts, updates, and deletes using websockets. Realtime polls Postgres' built-in replication functionality for database changes, converts changes to JSON, then broadcasts the JSON over websockets to authorized clients.
- PostgREST is a web server that turns your PostgreSQL database directly into a RESTful API.
- GoTrue is a JWT-based authentication API that simplifies user sign-ups, logins, and session management in your applications.
- Storage a RESTful API for managing files in S3, with Postgres handling permissions.
- pg_graphql a PostgreSQL extension that exposes a GraphQL API.
- postgres-meta is a RESTful API for managing your Postgres, allowing you to fetch tables, add roles, and run queries, etc.
- Envoy is a cloud-native, high-performance edge and service proxy.
Client libraries
Our approach for client libraries is modular. Each sub-library is a standalone implementation for a single external system. This is one of the ways we support existing tools.
| Language | Client | Feature-Clients (bundled in Supabase client) | ||||
|---|---|---|---|---|---|---|
| Supabase | PostgREST | GoTrue | Realtime | Storage | Functions | |
| ⚡️ Official ⚡️ | ||||||
| JavaScript (TypeScript) | supabase-js | postgrest-js | auth-js | realtime-js | storage-js | functions-js |
| Flutter | supabase-flutter | postgrest | supabase_auth | supabase_realtime | supabase_storage | supabase_functions |
| Swift | supabase-swift | postgrest-swift | auth-swift | realtime-swift | storage-swift | functions-swift |
| Python | supabase-py | postgrest-py | gotrue-py | realtime-py | storage-py | functions-py |
| 💚 Community 💚 | ||||||
| C# | supabase-csharp | postgrest-csharp | gotrue-csharp | realtime-csharp | storage-csharp | functions-csharp |
| Go | - | postgrest-go | gotrue-go | - | storage-go | functions-go |
| Java | - | - | gotrue-java | - | storage-java | - |
| Kotlin | supabase-kt | postgrest-kt | auth-kt | realtime-kt | storage-kt | functions-kt |
| Ruby | supabase-rb | postgrest-rb | - | - | - | - |
| Rust | - | postgrest-rs | - | - | - | - |
| Godot Engine (GDScript) | supabase-gdscript | - | - | - | - | - |
Badges
[](https://supabase.com)
<a href="https://supabase.com">
<img
width="168"
height="30"
src="https://supabase.com/badge-made-with-supabase.svg"
alt="Made with Supabase"
/>
</a>
[](https://supabase.com)
<a href="https://supabase.com">
<img
width="168"
height="30"
src="https://supabase.com/badge-made-with-supabase-dark.svg"
alt="Made with Supabase"
/>
</a>
Translations
- Arabic | العربية
- Albanian / Shqip
- Bangla / বাংলা
- Bulgarian / Български
- Catalan / Català
- Croatian / Hrvatski
- Czech / čeština
- Danish / Dansk
- Dutch / Nederlands
- English
- Estonian / eesti keel
- Finnish / Suomalainen
- French / Français
- German / Deutsch
- Greek / Ελληνικά
- Gujarati / ગુજરાતી
- Hebrew / עברית
- Hindi / हिंदी
- Hungarian / Magyar
- Nepali / नेपाली
- Indonesian / Bahasa Indonesia
- Italiano / Italian
- Japanese / 日本語
- Korean / 한국어
- Lithuanian / lietuvių
- Latvian / latviski
- Malay / Bahasa Malaysia
- Norwegian (Bokmål) / Norsk (Bokmål)
- Persian / فارسی
- Polish / Polski
- Portuguese / Português
- Portuguese (Brazilian) / Português Brasileiro
- Romanian / Română
- Russian / Pусский
- Serbian / Srpski
- Sinhala / සිංහල
- Slovak / slovenský
- Slovenian / Slovenščina
- Spanish / Español
- Simplified Chinese / 简体中文
- Swedish / Svenska
- Thai / ไทย
- Traditional Chinese / 繁體中文
- Turkish / Türkçe
- Ukrainian / Українська
- Vietnamese / Tiếng Việt
- List of translations



