diff --git a/apps/design-system/registry/default/block/chart-composed-actions.tsx b/apps/design-system/registry/default/block/chart-composed-actions.tsx
index ee4212e416ed3..6e4fbea17bc0b 100644
--- a/apps/design-system/registry/default/block/chart-composed-actions.tsx
+++ b/apps/design-system/registry/default/block/chart-composed-actions.tsx
@@ -80,7 +80,7 @@ export default function ChartComposedActions() {
showYAxis={true}
YAxisProps={{
tickFormatter: (value) => `${value}k`,
- width: 80,
+ width: 36,
}}
isFullHeight={true}
/>
@@ -92,7 +92,7 @@ export default function ChartComposedActions() {
showYAxis={true}
YAxisProps={{
tickFormatter: (value) => `${value}k`,
- width: 80,
+ width: 36,
}}
isFullHeight={true}
/>
diff --git a/apps/design-system/registry/default/block/chart-composed-basic.tsx b/apps/design-system/registry/default/block/chart-composed-basic.tsx
index 607363710eb09..99be1076b0896 100644
--- a/apps/design-system/registry/default/block/chart-composed-basic.tsx
+++ b/apps/design-system/registry/default/block/chart-composed-basic.tsx
@@ -93,7 +93,7 @@ export default function ComposedChartBasic() {
showYAxis={true}
YAxisProps={{
tickFormatter: (value) => `${value}k`,
- width: 80,
+ width: 36,
}}
isFullHeight={true}
/>
@@ -129,7 +129,7 @@ export default function ComposedChartBasic() {
showYAxis={true}
YAxisProps={{
tickFormatter: (value) => `${value}k`,
- width: 80,
+ width: 36,
}}
isFullHeight={true}
/>
diff --git a/apps/design-system/registry/default/block/chart-composed-table.tsx b/apps/design-system/registry/default/block/chart-composed-table.tsx
index a8089ed1f57d0..10ad3b02ed073 100644
--- a/apps/design-system/registry/default/block/chart-composed-table.tsx
+++ b/apps/design-system/registry/default/block/chart-composed-table.tsx
@@ -73,7 +73,7 @@ export default function ChartComposedTable() {
showYAxis={true}
YAxisProps={{
tickFormatter: (value) => `${value}k`,
- width: 80,
+ width: 36,
}}
isFullHeight={true}
/>
diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts
index 1f16c321f6476..cb2ec0b8c1d58 100644
--- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts
+++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts
@@ -3091,6 +3091,10 @@ export const self_hosting: NavMenuConstant = {
{ name: 'Configure SAML 2.0 SSO', url: '/guides/self-hosting/self-hosted-saml-sso' },
{ name: 'Enable MCP server', url: '/guides/self-hosting/enable-mcp' },
{ name: 'Remove superuser access', url: '/guides/self-hosting/remove-superuser-access' },
+ {
+ name: 'Custom Postgres Extensions',
+ url: '/guides/self-hosting/custom-postgres-extensions',
+ },
],
},
{
diff --git a/apps/docs/content/_partials/migration_warnings.mdx b/apps/docs/content/_partials/migration_warnings.mdx
index c221ef2f1d46a..d02a5041503d2 100644
--- a/apps/docs/content/_partials/migration_warnings.mdx
+++ b/apps/docs/content/_partials/migration_warnings.mdx
@@ -1,7 +1,7 @@
-- If you're planning to migrate a database larger than 6 GB, we recommend [upgrading to at least a Large compute add-on](/docs/guides/platform/compute-add-ons). This will ensure you have the necessary resources to handle the migration efficiently.
+- If you're planning to migrate a database larger than 6 GB, we recommend [upgrading to at least a Large compute add-on](/docs/guides/platform/compute-and-disk). This will ensure you have the necessary resources to handle the migration efficiently.
-- We strongly advise you to pre-provision the disk space you will need for your migration. On paid projects, you can do this by navigating to the [Compute and Disk Settings](/dashboard/project/_/settings/compute-and-disk) page. For more information on disk scaling and disk limits, check out our [disk settings](/docs/guides/platform/compute-and-disk#disk) documentation.
+- We strongly advise you to pre-provision the disk space you will need for your migration. On paid projects, you can do this by navigating to the [Infrastructure settings](/dashboard/project/_/settings/infrastructure) page. For more information on disk scaling and disk limits, check out our [disk settings](/docs/guides/platform/compute-and-disk#disk) documentation.
diff --git a/apps/docs/content/guides/database/inspect.mdx b/apps/docs/content/guides/database/inspect.mdx
index 8d01413792cf0..350167b8fc495 100644
--- a/apps/docs/content/guides/database/inspect.mdx
+++ b/apps/docs/content/guides/database/inspect.mdx
@@ -19,7 +19,7 @@ You can examine your database and queries for these issues using either the [Sup
The Supabase CLI comes with a range of tools to help inspect your Postgres instances for potential issues. The CLI gets the information from Postgres internals. Therefore, most tools provided are compatible with any Postgres databases regardless if they are a Supabase project or not.
-You can find installation instructions for the Supabase CLI here.
+You can find installation instructions for the Supabase CLI here.
### The `inspect db` command
@@ -240,7 +240,7 @@ from pg_statio_user_tables;
This shows the ratio of data blocks fetched from the Postgres [shared_buffers](https://www.postgresql.org/docs/15/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY) cache against the data blocks that were read from disk/OS cache.
-If either of your index or table hit rate are < 99% then this can indicate your compute plan is too small for your current workload and you would benefit from more memory. [Upgrading your compute](/docs/guides/platform/compute-and-disk#compute) is easy and can be done from your [project dashboard](/dashboard/project/_/settings/compute-and-disk).
+If either of your index or table hit rate are < 99% then this can indicate your compute plan is too small for your current workload and you would benefit from more memory. [Upgrading your compute](/docs/guides/platform/compute-and-disk#compute) can be done from your [project dashboard](/dashboard/project/_/settings/infrastructure).
### Optimizing poor performing queries
diff --git a/apps/docs/content/guides/platform/compute-and-disk.mdx b/apps/docs/content/guides/platform/compute-and-disk.mdx
index a14a36589215f..a8d8762d66655 100644
--- a/apps/docs/content/guides/platform/compute-and-disk.mdx
+++ b/apps/docs/content/guides/platform/compute-and-disk.mdx
@@ -33,11 +33,11 @@ In paid organizations, Nano Compute are billed at the same price as Micro Comput
[^1]: Database max connections are recommended values and can be [customized via `max_connections`](/docs/guides/database/custom-postgres-config) depending on your use case. Be aware of [these considerations](/docs/guides/troubleshooting/how-to-change-max-database-connections-_BQ8P5) before modifying.
-[^2]: Database size for each compute instance is the default recommendation but the actual performance of your database has many contributing factors, including resources available to it and the size of the data contained within it. See the [shared responsibility model](/docs/guides/platform/shared-responsibility-model) for more information.
+[^2]: Database size for each compute instance is the default recommendation but the actual performance of your database has many contributing factors, including resources available to it and the size of the data contained within it. See the [shared responsibility model](/docs/guides/deployment/shared-responsibility-model) for more information.
[^3]: Compute resources on the Free plan are subject to change.
-Compute sizes can be changed by first selecting your project in the dashboard [here](/dashboard/project/_/settings/compute-and-disk) and the upgrade process will [incur downtime](/docs/guides/platform/compute-and-disk#upgrades).
+Compute sizes can be changed by first selecting your project in the dashboard [here](/dashboard/project/_/settings/infrastructure) and the upgrade process will [incur downtime](/docs/guides/platform/compute-and-disk#upgrades).
diff --git a/apps/docs/content/guides/platform/database-size.mdx b/apps/docs/content/guides/platform/database-size.mdx
index bf2419884186b..0e1f1b0dab5dd 100644
--- a/apps/docs/content/guides/platform/database-size.mdx
+++ b/apps/docs/content/guides/platform/database-size.mdx
@@ -42,7 +42,7 @@ select pg_size_pretty(sum(size)) as wal_size from pg_ls_waldir();
### Vacuum operations
-Postgres does not immediately reclaim the physical space used by dead tuples (i.e., deleted rows) in the DB. They are marked as "removed" until a [vacuum operation](https://www.postgresql.org/docs/current/routine-vacuuming.html) is executed. As a result, deleting data from your database may not immediately reduce the reported disk usage. You can use the [Supabase CLI](/docs/guides/cli/getting-started) `inspect db bloat` command to view all dead tuples in your database. Alternatively, you can run the [query](https://github.com/supabase/cli/blob/c9cce58025fded16b4c332747f819a44f45c3b83/internal/inspect/bloat/bloat.go#L17) found in the CLI's GitHub repo in the [SQL Editor](/dashboard/project/_/sql/)
+Postgres does not immediately reclaim the physical space used by dead tuples (i.e., deleted rows) in the DB. They are marked as "removed" until a [vacuum operation](https://www.postgresql.org/docs/current/routine-vacuuming.html) is executed. As a result, deleting data from your database may not immediately reduce the reported disk usage. You can use the [Supabase CLI](/docs/guides/local-development/cli/getting-started) `inspect db bloat` command to view all dead tuples in your database. Alternatively, you can run the [query](https://github.com/supabase/cli/blob/c9cce58025fded16b4c332747f819a44f45c3b83/internal/inspect/bloat/bloat.go#L17) found in the CLI's GitHub repo in the [SQL Editor](/dashboard/project/_/sql/)
```bash
# Login to the CLI
@@ -152,7 +152,7 @@ set default_transaction_read_only = 'off';
### Disk size distribution
-You can check the distribution of your disk size on your [project's compute and disk page](/dashboard/project/_/settings/compute-and-disk).
+You can check the distribution of your disk size on your [project's Infrastructure page](/dashboard/project/_/settings/infrastructure).

diff --git a/apps/docs/content/guides/platform/performance.mdx b/apps/docs/content/guides/platform/performance.mdx
index b95198471ff97..ae0005551b2b7 100644
--- a/apps/docs/content/guides/platform/performance.mdx
+++ b/apps/docs/content/guides/platform/performance.mdx
@@ -12,7 +12,7 @@ Unoptimized queries are a major cause of poor database performance. To analyze t
## Optimizing the number of connections
-The default connection limits for Postgres and Supavisor is based on your compute size. See the default connection numbers in the [Compute Add-ons](/docs/guides/platform/compute-add-ons) section.
+The default connection limits for Postgres and Supavisor is based on your compute size. See the default connection numbers in the [Compute Add-ons](/docs/guides/platform/compute-and-disk) section.
If the number of connections is insufficient, you will receive the following error upon connecting to the DB:
@@ -23,7 +23,7 @@ FATAL: remaining connection slots are reserved for non-replication superuser con
In such a scenario, you can consider:
-- [upgrading to a larger compute add-on](/dashboard/project/_/settings/compute-and-disk)
+- [upgrading to a larger compute add-on](/dashboard/project/_/settings/infrastructure)
- configuring your clients to use fewer connections
- manually configuring the database for a higher number of connections
@@ -35,7 +35,7 @@ Depending on the clients involved, you might be able to configure them to work w
### Allowing higher number of connections
-You can configure Postgres connection limit among other parameters by using [Custom Postgres Config](/docs/guides/platform/custom-postgres-config#custom-postgres-config).
+You can configure Postgres connection limit among other parameters by using [Custom Postgres Config](/docs/guides/database/custom-postgres-config).
### Enterprise
diff --git a/apps/docs/content/guides/self-hosting/custom-postgres-extensions.mdx b/apps/docs/content/guides/self-hosting/custom-postgres-extensions.mdx
new file mode 100644
index 0000000000000..38a3b4b1eab55
--- /dev/null
+++ b/apps/docs/content/guides/self-hosting/custom-postgres-extensions.mdx
@@ -0,0 +1,258 @@
+---
+title: 'Custom Postgres Extensions'
+description: 'Build a custom Docker image with additional Postgres extensions.'
+subtitle: 'Build a custom Docker image with additional Postgres extensions.'
+---
+
+## Overview
+
+The `supabase/postgres` image includes a curated set of extensions that are compiled in at build time. There is no runtime mechanism to install a compiled native `.so` extension into a running container: you cannot `apk add` or `apt-get install` an extension package, because the image is built with [Nix](https://nixos.org) and its extension set is fixed when the image is produced.
+
+To add a native extension that Supabase Postgres doesn't provide, you have to build your own image. This guide walks through that end to end for the current Alpine-based images, using [`pg_uuidv7`](https://github.com/fboulnois/pg_uuidv7) as the running example.
+
+
+
+If your extension is written in pure SQL or a trusted procedural language, you don't need a custom image at all. Use [`pg_tle`](https://github.com/aws/pg_tle), which is already bundled and preloaded - run `CREATE EXTENSION pg_tle;` and install your extension through it.
+
+
+
+The proper way to add an extension is to compile it into the image's [Nix build](#build-the-extension-into-the-nix-image). That's the most robust route, but it requires Nix, building the image from source, and maintaining a fork. The rest of this guide describes a simpler alternative: build your extension in an ordinary Docker builder and layer it onto the published image. The approach can work for many standard [PGXS](https://www.postgresql.org/docs/current/extend-pgxs.html) extensions - but your mileage may vary, and the constraints in the next section are the trade-off.
+
+
+
+Supabase builds, tests, and maintains the official `supabase/postgres` images and their bundled extensions. A custom image built by following this guide is unofficial and unsupported - it's not guaranteed to work, and may break with future changes to the base image. Testing, quality assurance, and ongoing maintenance are your responsibility.
+
+
+
+### Why Postgres images need special handling
+
+The base image is Alpine Linux, but the Postgres binaries and every bundled extension live in a `/nix` store:
+
+1. The runtime is `glibc`, not `musl`. The Nix-built `postgres` and its extensions are linked against `glibc`. If you compile an extension with Alpine's native toolchain (`apk add build-base`), it links `musl` and fails to load at `CREATE EXTENSION` with an error like `libc.musl-aarch64.so.1: cannot open shared object file`. You must build in a `glibc` environment.
+2. Match the major version, and keep the builder's `glibc` no later than the image's. Extensions are ABI-stable across an entire Postgres major version. However, an extension built against a newer `glibc` than the runtime provides will fail to load (`version 'GLIBC_2.xx' not found`). The Supabase image currently ships `glibc 2.40`, so this guide builds on Debian 12 (`postgres:17-bookworm`, `glibc 2.36`), which stays safely below it. Avoid the default `postgres:17` - it's currently Debian 13 and `glibc 2.41`.
+3. The module directory is redirected. The running `postgres` is a wrapper script that overrides its library directory via a `NIX_PGLIBDIR` environment variable. Your compiled `.so` must be installed into that directory - not the path `pg_config --pkglibdir` reports. This is why you can't follow an extension's upstream install instructions which typically use `make install` or copy to `pg_config --pkglibdir`.
+
+
+
+The tag starts with the Postgres version followed by Supabase's own release numbers. Extension ABI is stable across a major version - but if a future Supabase Postgres image bumps its `glibc`, re-check the rule in point 2. You can read the image's `glibc` version with:
+
+```sh
+docker run --rm --entrypoint sh supabase/postgres:17.6.1.136 -c \
+ 'ls -d /nix/store/*glibc-2.*-* 2>/dev/null | grep -oE "glibc-2\.[0-9]+" | sort -uV | tail -1'
+```
+
+
+
+## Prerequisites
+
+- Docker installed and running
+- The exact `supabase/postgres` tag your deployment uses. For example, `supabase/postgres:17.6.1.136`
+- Extension source that builds with standard [PGXS](https://www.postgresql.org/docs/current/extend-pgxs.html)
+
+
+
+Always build against the same major version you run, and rebuild your custom image whenever you upgrade the base image.
+
+
+
+## Build the extension
+
+Use a multi-stage build: a `glibc` builder stage (`postgres:-bookworm`) to compile, and the Supabase image as the runtime stage that installs the artifacts into the correct Nix locations.
+
+### Step 1: Write the Dockerfile
+
+The example below builds [`pg_uuidv7`](https://github.com/fboulnois/pg_uuidv7) cloned from its Git repository.
+
+```dockerfile name=Dockerfile
+# syntax=docker/dockerfile:1
+ARG SUPABASE_POSTGRES_TAG=17.6.1.136
+ARG PG_MAJOR=17
+
+# --- Builder: glibc image matching the Postgres major version ---
+FROM postgres:${PG_MAJOR}-bookworm AS builder
+ARG PG_MAJOR
+ARG EXT_VERSION=v1.7.0
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ build-essential git ca-certificates postgresql-server-dev-${PG_MAJOR} \
+ && rm -rf /var/lib/apt/lists/*
+WORKDIR /src
+RUN git clone --depth 1 --branch ${EXT_VERSION} https://github.com/fboulnois/pg_uuidv7 .
+RUN make
+
+# --- Runtime: Supabase Alpine image ---
+FROM supabase/postgres:${SUPABASE_POSTGRES_TAG}
+USER root
+COPY --from=builder /src/pg_uuidv7.so /tmp/
+COPY --from=builder /src/pg_uuidv7.control /tmp/
+COPY --from=builder /src/sql/ /tmp/ext-sql/
+# The running postgres wrapper redirects its module dir via NIX_PGLIBDIR.
+# Install the .so there; install control/SQL into pg_config --sharedir.
+RUN set -eux; \
+ PLUGIN_DIR="$(grep -E '^export NIX_PGLIBDIR' /usr/bin/postgres | sed -E "s/.*'([^']*)'.*/\1/")"; \
+ SHARE_DIR="$(pg_config --sharedir)/extension"; \
+ install -m 755 /tmp/pg_uuidv7.so "$PLUGIN_DIR/"; \
+ install -m 644 /tmp/pg_uuidv7.control "$SHARE_DIR/"; \
+ install -m 644 /tmp/ext-sql/*.sql "$SHARE_DIR/"; \
+ rm -rf /tmp/pg_uuidv7.* /tmp/ext-sql
+```
+
+The same Dockerfile structure generally works for your own extensions. However, when authoring a new extension from scratch, it's best to use the Nix build instead (refer to [Build the extension into the Nix image](#build-the-extension-into-the-nix-image) below).
+
+#### Handle dependencies beyond the standard library
+
+Copying a `.so` onto the image works cleanly only when its sole runtime dependency is the C library (`libc.so.6`) - that's the image's `glibc`, already loaded in the `postgres` process, so it resolves automatically. Any other shared library the extension links (`libcurl`, `OpenSSL`, etc.) must also be present and loadable at runtime.
+
+The build happens inside Docker - check the compiled `.so` in the builder stage rather than on your host:
+
+```sh
+docker build --target builder -t ext-builder .
+docker run --rm --entrypoint sh ext-builder -c 'readelf -d /src/*.so | grep NEEDED'
+```
+
+- Only `libc.so.6` and `ld-linux-*` - the Dockerfile above is sufficient (`pg_uuidv7` is this case).
+- Anything else listed - handle those dependencies with one of the options below.
+
+Recommended: statically link the extra dependencies into the `.so`, so its only remaining `NEEDED` is `libc.so.6`. After building, re-run the check above and confirm only `libc.so.6` and `ld-linux-*` remain.
+
+A few things make this more involved than it sounds:
+
+- The distribution's own static archive is often not enough. A feature-rich `libcurl.a`, for example, includes many dependencies whose static archives aren't all installable - so you typically build a minimal static version of the dependency from source and link that.
+- PGXS may ignore the extension's `CFLAGS`. Pass extra include paths via `PG_CPPFLAGS` on the `make` command line rather than editing the Makefile.
+- Static linking has limits. It won't help a dependency that `dlopen`s plugins at runtime, and linking a library that's also loaded by another extension (two copies of OpenSSL in one process, say) can clash.
+- Some extensions hard-code their own name, so you can't rename one to sidestep a collision with a bundled extension.
+
+When static linking isn't practical, use the [Nix path](#build-the-extension-into-the-nix-image), which resolves every dependency against the image's own libraries automatically.
+
+### Step 2: Build the image
+
+Build against the tag you run in production so the runtime and major version match:
+
+```sh
+docker build \
+ --build-arg SUPABASE_POSTGRES_TAG=17.6.1.136 \
+ --build-arg PG_MAJOR=17 \
+ -t supabase-postgres-custom:17.6.1.136 \
+ .
+```
+
+### Step 3: Use the image in your stack
+
+Point the `db` service at your custom image in `docker-compose.yml`:
+
+```yaml name=docker-compose.yml
+db:
+ image: supabase-postgres-custom:17.6.1.136
+ # ...leave the rest of the service definition unchanged
+```
+
+Then recreate the database service so it picks up the new image:
+
+```sh
+sh run.sh recreate db
+```
+
+### Step 4: Enable the extension
+
+The Supabase `postgres` role is intentionally not a superuser, and extension creation is gated by [`supautils`](https://github.com/supabase/supautils). A native extension that isn't on the `supautils.privileged_extensions` allow-list can only be created by the `supabase_admin` superuser. You have two options.
+
+#### Option A: Allow the `postgres` role to create it (no rebuild)
+
+Append your extension to the allow-list in a custom `supautils` configuration. The Postgres 17 image loads any `.conf` file from `/etc/postgresql-custom/conf.d/`.
+
+```sh
+docker exec supabase-db bash -c '
+CUR=$(psql -U postgres -tAc "show supautils.privileged_extensions" | tr -d "\n")
+cat > /etc/postgresql-custom/conf.d/99-custom-extensions.conf <
+
+`/etc/postgresql-custom/` is on the `db-config` named volume, so this change persists across restarts. Read [Custom Postgres configuration](/docs/guides/self-hosting/postgres-upgrade-17#custom-postgres-configuration) for more on the `conf.d/` mechanism.
+
+
+
+#### Option B: Enable it as a superuser
+
+The image's init scripts run as `supabase_admin` (a superuser) on first boot. Drop a SQL file into the init directory to create the extension automatically for new databases:
+
+```yaml name=docker-compose.yml
+db:
+ volumes:
+ # ...keep the existing mounts (the data dir, roles.sql, etc.) and add:
+ - ./volumes/db/pg_uuidv7.sql:/docker-entrypoint-initdb.d/migrations/99-pg_uuidv7.sql:Z
+```
+
+```sql name=volumes/db/pg_uuidv7.sql
+CREATE EXTENSION IF NOT EXISTS pg_uuidv7;
+```
+
+
+
+Init scripts only run when the data directory (`./volumes/db/data`) is empty, that is on first initialization. For an already-initialized database, connect as `supabase_admin` once and run `CREATE EXTENSION` manually.
+
+
+
+## Verify the extension
+
+```sh
+docker compose exec db psql -U postgres \
+ -c "CREATE EXTENSION IF NOT EXISTS pg_uuidv7;" \
+ -c "SELECT uuid_generate_v7();"
+```
+
+```
+ uuid_generate_v7
+--------------------------------------
+ 019f897b-1003-7175-b9b5-be46fc0c3990
+(1 row)
+```
+
+## Extensions that have to be preloaded
+
+If your extension must be listed in `shared_preload_libraries`, add it with the same `conf.d/` mechanism. The `conf.d/` include runs after the baked-in setting, so restate the current value plus your library:
+
+```sh
+docker exec supabase-db bash -c '
+CUR=$(psql -U postgres -tAc "show shared_preload_libraries" | tr -d "\n")
+cat > /etc/postgresql-custom/conf.d/99-preload.conf <
+
+`shared_preload_libraries` has no append syntax. Include the full existing list plus your library, or you'll disable the extensions Supabase relies on.
+
+
+
+## Build the extension into the Nix image
+
+The Docker approach above layers a separately-compiled `.so` onto the published image. The most reliable way is to add the extension to Supabase's own [Nix](https://nixos.org) build, so it's compiled with the exact same toolchain as everything else in the image. This option sidesteps the `libc`/ABI concerns entirely and is how the bundled extensions are built. It requires Nix, building the image from source, and maintaining a fork of `supabase/postgres`.
+
+Rough guide to choosing:
+
+- One-off extension on the stock image, minimal tooling - the Docker approach in this guide.
+- Bulletproof ABI match, want it merged upstream, or it needs preload / `supautils` wiring done "the Supabase way" - the Nix build below.
+
+This guide intentionally doesn't teach Nix. The authoritative, maintained instructions live in the `supabase/postgres` repository:
+
+- [Adding a new extension package](https://github.com/supabase/postgres/blob/develop/nix/docs/adding-new-package.md) - the main walkthrough (C/C++ and Rust/pgrx patterns, where to register the extension, generating hashes)
+- [Creating a `pgrx` extension](https://github.com/supabase/postgres/blob/develop/nix/docs/creating-pgrx-extension.md) - for Rust extensions
+- [Building Postgres](https://github.com/supabase/postgres/blob/develop/nix/docs/build-postgres.md) and the full [`nix/docs`](https://github.com/supabase/postgres/tree/develop/nix/docs) directory
+
+## Keeping the image up to date
+
+Because your image is pinned to a specific `supabase/postgres` tag and depends on that build's internal Nix paths, treat it as coupled to the base image:
+
+- Rebuild with the new `SUPABASE_POSTGRES_TAG` (and matching `PG_MAJOR`) every time you upgrade Postgres.
+- Re-test `CREATE EXTENSION` after each rebuild. A change to the base OS or Nix layout - as happened when the images moved from Debian to Alpine - can require adjusting the build.
diff --git a/apps/docs/content/troubleshooting/exhaust-disk-io.mdx b/apps/docs/content/troubleshooting/exhaust-disk-io.mdx
index 73249158f86b8..555860671bb35 100644
--- a/apps/docs/content/troubleshooting/exhaust-disk-io.mdx
+++ b/apps/docs/content/troubleshooting/exhaust-disk-io.mdx
@@ -7,9 +7,9 @@ database_id = "4844905d-1456-44a1-858e-7a4995e5054c"
## Understanding disk IO and disk IO budget
-Disk IO refers to two metrics: throughput in Megabytes per second (MB/s) and IOPS which are Input/Output Operations per Second. Throughput measures how much data you can move each second, while IOPS measures how many read/write operations you can perform each second. Depending on the compute add-on of your instance you will have [different baseline performances](/docs/guides/platform/compute-add-ons#compute-size).
+Disk IO refers to two metrics: throughput in Megabytes per second (MB/s) and IOPS which are Input/Output Operations per Second. Throughput measures how much data you can move each second, while IOPS measures how many read/write operations you can perform each second. Depending on the compute add-on of your instance you will have [different baseline performances](/docs/guides/platform/compute-and-disk#compute-size).
-Smaller compute instances can burst and exceed their baseline performance for a short period of time every day. This is represented as your Disk IO Budget and once your Disk IO Budget is consumed, your instance reverts back to its baseline performance. Learn more about [choosing the right compute instance for consistent disk performance](/docs/guides/platform/compute-add-ons#choosing-the-right-compute-instance-for-consistent-disk-performance).
+Smaller compute instances can burst and exceed their baseline performance for a short period of time every day. This is represented as your Disk IO Budget and once your Disk IO Budget is consumed, your instance reverts back to its baseline performance. Learn more about [choosing the right compute instance for consistent disk performance](/docs/guides/platform/compute-and-disk#choosing-the-right-compute-instance-for-consistent-disk-performance).
## Depleting your disk IO budget
@@ -38,5 +38,5 @@ Most operations on your Supabase project require disk IO in some form. Hence, th
## How to fix
-1. **Upgrade your compute:** You can get a Compute Add-on for your project. Larger compute options (4XL and above) have more consistent disk performance. See your [upgrade options](/dashboard/project/_/settings/compute-and-disk) by selecting your project. Do reference the [different baseline performances](/docs/guides/platform/compute-add-ons#compute-size) that come with larger Compute Add-ons.
-2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/platform/going-into-prod#performance).
+1. **Upgrade your compute:** You can get a Compute Add-on for your project. Larger compute options (4XL and above) have more consistent disk performance. See your [upgrade options](/dashboard/project/_/settings/infrastructure) by selecting your project. Do reference the [different baseline performances](/docs/guides/platform/compute-and-disk#compute-size) that come with larger Compute Add-ons.
+2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/deployment/going-into-prod#performance).
diff --git a/apps/docs/content/troubleshooting/exhaust-ram.mdx b/apps/docs/content/troubleshooting/exhaust-ram.mdx
index ccea52cea00b8..51601f7c25628 100644
--- a/apps/docs/content/troubleshooting/exhaust-ram.mdx
+++ b/apps/docs/content/troubleshooting/exhaust-ram.mdx
@@ -17,7 +17,7 @@ You may observe elevated memory usage even when your database has little to no l
## Issues with high memory usage
-Every Supabase project runs in its own dedicated virtual machine. Your instance will have a different set of hardware provisioned depending on your [compute add-on](/docs/guides/platform/compute-add-ons). Depending on your workload, your compute hardware may not be suitable and can result in high RAM usage.
+Every Supabase project runs in its own dedicated virtual machine. Your instance will have a different set of hardware provisioned depending on your [compute add-on](/docs/guides/platform/compute-and-disk). Depending on your workload, your compute hardware may not be suitable and can result in high RAM usage.
A good proxy for unhealthy memory usage is swap usage. If you run out of RAM, your system will offload memory to your disk's much slower swap partition. If your swap is above 70%, chances are high that your compute hardware is not suitable for your workload. Head over to your project's [Database Health](/dashboard/project/_/observability/database) to see your swap usage.
@@ -38,10 +38,10 @@ It is also possible to monitor your resources and set up alerts using Prometheus
Everything you do with your Supabase project requires memory in some form. Hence, there can be many reasons for high RAM usage. Here are some common ones:
- **Query performance:** Queries that take a long time to complete (>1 second) could be using your RAM inefficiently. Check our guide on [examining query performance](/docs/guides/platform/performance#examining-query-performance).
-- **Too many connections:** Every connection to your database consumes memory. You can check the number of active connections under [Database Roles](/dashboard/project/_/database/roles) after you select your project. Read our guide on [too many open connections](/docs/guides/platform/troubleshooting#too-many-open-connections).
+- **Too many connections:** Every connection to your database consumes memory. You can check the number of active connections under [Database Roles](/dashboard/project/_/database/roles) after you select your project. Read our guide on [too many open connections](/docs/guides/troubleshooting/http-api-issues#too-many-open-connections).
- **Extensions:** Some extensions such as `timescaledb` or `pg_cron` can use a lot of memory. It can also add up when you have too many extensions running. You can manage your database extensions in the dashboard under [Extensions](/dashboard/project/_/database/extensions).
## How to fix your memory issues
-1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](/dashboard/project/_/settings/compute-and-disk) by selecting your project.
-2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/platform/going-into-prod#performance).
+1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](/dashboard/project/_/settings/infrastructure) by selecting your project.
+2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/deployment/going-into-prod#performance).
diff --git a/apps/docs/content/troubleshooting/exhaust-swap.mdx b/apps/docs/content/troubleshooting/exhaust-swap.mdx
index 7a730f17b4232..7b3f3b475ae13 100644
--- a/apps/docs/content/troubleshooting/exhaust-swap.mdx
+++ b/apps/docs/content/troubleshooting/exhaust-swap.mdx
@@ -15,7 +15,7 @@ High Swap is usually not a problem unless other resources (such as RAM) are cons
-Every Supabase project runs on its own dedicated virtual machine. The machine's underlying specs and hardware depend on your [compute add-on](/docs/guides/platform/compute-add-ons). If your hardware isn't suitable for your workload, you might experience high Swap usage.
+Every Supabase project runs on its own dedicated virtual machine. The machine's underlying specs and hardware depend on your [compute add-on](/docs/guides/platform/compute-and-disk). If your hardware isn't suitable for your workload, you might experience high Swap usage.
Swap is a portion of your instance's disk that is reserved for the operating system to use when the available RAM is used. As it uses the disk, Swap is slower to access and is generally used as a last resort.
@@ -58,6 +58,6 @@ Everything you do with your Supabase project requires compute. Hence, there can
If you find that your RAM and Swap usage are high, you have three options:
-1. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. See the [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/platform/going-into-prod#performance).
-2. **Upgrade your compute:** You can get a Compute Add-on for your project. Follow [this link](/dashboard/project/_/settings/compute-and-disk) and select your project to see your upgrade options.
+1. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. See the [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/deployment/going-into-prod#performance).
+2. **Upgrade your compute:** You can get a Compute Add-on for your project. Follow [this link](/dashboard/project/_/settings/infrastructure) and select your project to see your upgrade options.
3. **Read Replicas:** You can spread the load on your Supabase project by creating a Read Replica. See [the read replicas guide](/docs/guides/platform/read-replicas) for more information.
diff --git a/apps/docs/content/troubleshooting/failed-to-retrieve-tables.mdx b/apps/docs/content/troubleshooting/failed-to-retrieve-tables.mdx
index b079f6bf7586d..5160ea8cbb5c8 100644
--- a/apps/docs/content/troubleshooting/failed-to-retrieve-tables.mdx
+++ b/apps/docs/content/troubleshooting/failed-to-retrieve-tables.mdx
@@ -41,6 +41,6 @@ Once you are confident there will not be a crash loop, you can review the follow
- If it was unintentional, double check for any recursive calls in your application code, edge functions or database functions.
- Consider your table and your query structure - if your tables are very "wide" (lots of columns) or have complicated data types within them, it may be worth revisiting your architecture.
- Continue to monitor your project's [query performance tab](/dashboard/project/_/observability/query-performance) and [enable index advisor](/docs/guides/database/extensions/index_advisor) if you haven't already - especially if there are a lot of select queries.
-- If after monitoring your changes you still do not notice improvements, consider upgrading compute if you think this level of activity is going to be regular. It will give you more memory overhead to process tasks like this. You can view all compute offerings [here](/dashboard/project/_/settings/compute-and-disk).
+- If after monitoring your changes you still do not notice improvements, consider upgrading compute if you think this level of activity is going to be regular. It will give you more memory overhead to process tasks like this. You can view all compute offerings [here](/dashboard/project/_/settings/infrastructure).
If you want to effectively monitor your project's performance minute by minute, you can use the [Metrics API](/docs/guides/telemetry/metrics).
diff --git a/apps/docs/content/troubleshooting/failed-to-run-sql-query-connection-terminated-due-to-connection-timeout.mdx b/apps/docs/content/troubleshooting/failed-to-run-sql-query-connection-terminated-due-to-connection-timeout.mdx
index e33ace0060993..83e85220dc7c0 100644
--- a/apps/docs/content/troubleshooting/failed-to-run-sql-query-connection-terminated-due-to-connection-timeout.mdx
+++ b/apps/docs/content/troubleshooting/failed-to-run-sql-query-connection-terminated-due-to-connection-timeout.mdx
@@ -12,7 +12,7 @@ message = "Error: Failed to run sql query: Connection terminated due to connecti
This error typically happens when the database is overloaded and causing an outage. As the database does not respond in a timely manner there can be a variety of symptoms such as tables not loading, error messages related to retrieving data and the dashboard seems to be unresponsive.
- Check your database health in [Database reports](/dashboard/project/_/observability/database).
-- If needed, increase resources in [Compute and Disk](/dashboard/project/_/settings/compute-and-disk).
+- If needed, increase resources in [Infrastructure](/dashboard/project/_/settings/infrastructure).
- Alternatively, you can restart the database in [Project Settings](/dashboard/project/_/settings/general) but this may be only a temporary fix if the project is undersized / unoptimized.
Review the appropriate guides based on your scenario:
diff --git a/apps/docs/content/troubleshooting/high-cpu-usage.mdx b/apps/docs/content/troubleshooting/high-cpu-usage.mdx
index e710d5df09e7e..b80d3dc4e61a3 100644
--- a/apps/docs/content/troubleshooting/high-cpu-usage.mdx
+++ b/apps/docs/content/troubleshooting/high-cpu-usage.mdx
@@ -9,7 +9,7 @@ Learn what high CPU usage could mean for your Supabase instance and what could h
## The danger of high CPU usage
-Every Supabase project runs in its dedicated virtual machine. Your instance will have a different set of hardware provisioned depending on your [compute add-on](/docs/guides/platform/compute-add-ons). Your hardware may not be suitable for the intended workload and may experience high CPU usage.
+Every Supabase project runs in its dedicated virtual machine. Your instance will have a different set of hardware provisioned depending on your [compute add-on](/docs/guides/platform/compute-and-disk). Your hardware may not be suitable for the intended workload and may experience high CPU usage.
High CPU usage could come with a range of issues:
@@ -39,5 +39,5 @@ Everything you do with your Supabase project requires compute. Hence, there can
There are two ways to solve high CPU:
-1. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/platform/going-into-prod#performance).
-2. **Upgrade your compute:** You can get a Compute Add-on for your project. Follow [this link](/dashboard/project/_/settings/compute-and-disk) and select your project to see your upgrade options.
+1. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](/docs/guides/deployment/going-into-prod#performance).
+2. **Upgrade your compute:** You can get a Compute Add-on for your project. Follow [this link](/dashboard/project/_/settings/infrastructure) and select your project to see your upgrade options.
diff --git a/apps/docs/content/troubleshooting/http-api-issues.mdx b/apps/docs/content/troubleshooting/http-api-issues.mdx
index ced7f2e4365b0..936ec4d58c522 100644
--- a/apps/docs/content/troubleshooting/http-api-issues.mdx
+++ b/apps/docs/content/troubleshooting/http-api-issues.mdx
@@ -21,20 +21,20 @@ Symptoms of HTTP API issues include:
The most common class of issues that causes HTTP timeouts and 5xx response codes is the under-provisioning of resources for your project. This can cause your project to be unable to service the traffic it is receiving.
-Each Supabase project is provisioned with [segregated compute resources](../platform/compute-add-ons). This allows the project to serve unlimited requests, as long as they can be handled using the resources that have been provisioned. Complex queries, or queries that process larger amounts of data, will require higher amounts of resources. As such, the amount of resources that can handle a high volume of basic queries (or queries involving small amounts of data), will likely be unable to handle a similar volume of complex queries.
+Each Supabase project is provisioned with [segregated compute resources](../platform/compute-and-disk). This allows the project to serve unlimited requests, as long as they can be handled using the resources that have been provisioned. Complex queries, or queries that process larger amounts of data, will require higher amounts of resources. As such, the amount of resources that can handle a high volume of basic queries (or queries involving small amounts of data), will likely be unable to handle a similar volume of complex queries.
You can view the resource utilization of your Supabase Project using the [reports in the Dashboard](/dashboard/project/_/observability/database).
Some common solutions for this issue are:
-- [Upgrading](/dashboard/project/_/settings/compute-and-disk) to a [larger compute add-on](../platform/compute-add-ons) in order to serve higher volumes of traffic.
+- [Upgrading](/dashboard/project/_/settings/infrastructure) to a [larger compute add-on](../platform/compute-and-disk) in order to serve higher volumes of traffic.
- [Optimizing the queries](../platform/performance#examining-query-performance) being executed.
- [Using fewer Postgres connections](../platform/performance#configuring-clients-to-use-fewer-connections) can reduce the amount of resources needed on the project.
- [Restarting](/dashboard/project/_/settings/general) the project. This only temporarily solves the issue by terminating any ongoing workloads that might be tying up your compute resources.
- All databases of the project, including [Read replicas](/docs/guides/platform/read-replicas), will be restarted.
- If you only want to restart a specific Read Replica, you can do so from the [Infrastructure Settings page](/dashboard/project/_/settings/infrastructure).
-If your [Disk IO budget](../platform/compute-add-ons#disk-io) has been drained, you will need to either wait for it to be replenished the next day, or upgrade to a larger compute add-on to increase the budget available to your project.
+If your [Disk IO budget](../platform/compute-and-disk#disk) has been drained, you will need to either wait for it to be replenished the next day, or upgrade to a larger compute add-on to increase the budget available to your project.
## Unable to connect to your Supabase project
@@ -46,7 +46,7 @@ Errors about too many open connections can be _temporarily_ resolved by [restart
- If you're receiving a `No more connections allowed (max_client_conn)` error:
- Configure your applications and services to [use fewer connections](../platform/performance#configuring-clients-to-use-fewer-connections).
- - [Upgrade](/dashboard/project/_/settings/compute-and-disk) to a [larger compute add-on](../platform/compute-add-ons) to increase the number of available connections.
+ - [Upgrade](/dashboard/project/_/settings/infrastructure) to a [larger compute add-on](../platform/compute-and-disk) to increase the number of available connections.
- If you're receiving a `sorry, too many clients already` or `remaining connection slots are reserved for non-replication superuser connections` error message in addition to the above suggestions, switch to using the [connection pooler](/docs/guides/database/connecting-to-postgres#connection-pool) instead.
### Connection refused
diff --git a/apps/docs/content/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM.mdx b/apps/docs/content/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM.mdx
index 8138030cd14c4..a35f30c5325ec 100644
--- a/apps/docs/content/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM.mdx
+++ b/apps/docs/content/troubleshooting/increase-vector-lookup-speeds-by-applying-an-hsnw-index-ohLHUM.mdx
@@ -72,7 +72,7 @@ show maintenance_work_mem;
**4. Increase cores for index creation (optional)**
-The `max_parallel_maintenance_workers` variable limits the amount of cores that can be used by maintenance operations, including indexing tables. In your session, you should try to set it to a value roughly 1/2 to 2/3s of your [compute core amount](/docs/guides/platform/compute-add-ons):
+The `max_parallel_maintenance_workers` variable limits the amount of cores that can be used by maintenance operations, including indexing tables. In your session, you should try to set it to a value roughly 1/2 to 2/3s of your [compute core amount](/docs/guides/platform/compute-and-disk):
```sql
set max_parallel_maintenance_workers to ;
@@ -100,12 +100,12 @@ show statement_timeout;
**6. Consider temporarily upgrading your compute size (optional)**
-If your task is particularly long, you can speed it up by boosting your computing power temporarily. Compute size is charged by the hour, so you can increase it for an hour or two to finish your task faster, then scale it back afterwards. Here is a list of [compute add-ons](/docs/guides/platform/compute-add-ons). If you want to temporarily upgrade, you can find the add-ons for your project in your [Dashboard's Add-ons Settings.](https://supabase.green/dashboard/project/_/settings/addons)
+If your task is particularly long, you can speed it up by boosting your computing power temporarily. Compute size is charged by the hour, so you can increase it for an hour or two to finish your task faster, then scale it back afterwards. Here is a list of [compute add-ons](/docs/guides/platform/compute-and-disk). If you want to temporarily upgrade, you can find the add-ons for your project in your [Dashboard's Add-ons Settings.](https://supabase.green/dashboard/project/_/settings/addons)
**7. Consider increasing disk size (optional)**
HSNW indexes can produce temporary files during their construction that may consume a few GBs worth of disk.
-Consider increasing the disk size in the [Compute and Disk settings](/dashboard/project/_/settings/compute-and-disk) to accommodate for short-term disk stress.
+Consider increasing the disk size in the [Infrastructure settings](/dashboard/project/_/settings/infrastructure) to accommodate for short-term disk stress.
{
setShowCreateBranchModal(false)}
className="pointer-events-auto"
- href={`/project/${ref}/settings/compute-and-disk`}
+ href={getInfrastructurePath(projectRef)}
>
- Compute and Disk
+ Infrastructure
diff --git a/apps/studio/components/interfaces/Database/Backups/RestoreToNewProject/AdditionalMonthlySpend.tsx b/apps/studio/components/interfaces/Database/Backups/RestoreToNewProject/AdditionalMonthlySpend.tsx
index 746446bc5b62a..d39a85d6dc407 100644
--- a/apps/studio/components/interfaces/Database/Backups/RestoreToNewProject/AdditionalMonthlySpend.tsx
+++ b/apps/studio/components/interfaces/Database/Backups/RestoreToNewProject/AdditionalMonthlySpend.tsx
@@ -13,7 +13,7 @@ export const AdditionalMonthlySpend = ({
be able to update the compute size and increase the disk size after the new project is
created in{' '}
- Project Settings > Compute and Disk
+ Project Settings > Infrastructure
diff --git a/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx b/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx
index 81f29c2018494..30319bc6fd30c 100644
--- a/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx
+++ b/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx
@@ -14,6 +14,7 @@ import { CreateNewProjectDialog } from '@/components/interfaces/Database/Backups
import { projectSpecToMonthlyPrice } from '@/components/interfaces/Database/Backups/RestoreToNewProject/RestoreToNewProject.utils'
import { DiskType } from '@/components/interfaces/DiskManagement/ui/DiskManagement.constants'
import { Markdown } from '@/components/interfaces/Markdown'
+import { getServiceVersionsPath } from '@/components/interfaces/Settings/General/ServiceVersions/ServiceVersions.utils'
import { AlertError } from '@/components/ui/AlertError'
import { InlineLink } from '@/components/ui/InlineLink'
import { NoPermission } from '@/components/ui/NoPermission'
@@ -158,7 +159,7 @@ export const RestoreToNewProject = () => {
diff --git a/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx b/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx
index 03a04ecb40de8..724da3d3ec675 100644
--- a/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx
+++ b/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx
@@ -11,6 +11,7 @@ import {
} from 'ui-patterns/PageSection'
import { DocsButton } from '../../ui/DocsButton'
+import { getInfrastructurePath } from '@/components/interfaces/Settings/Infrastructure/Infrastructure.utils'
import { DOCS_URL } from '@/lib/constants'
// [Joshen] Only used for non AWS projects
@@ -30,12 +31,10 @@ export function DiskManagementPanelForm() {
type="default"
layout="responsive"
title="Disk Management has moved"
- description="Disk configuration is now managed alongside Project Compute on the new Compute and Disk page."
+ description="Disk configuration is now managed alongside Project Compute on the Infrastructure page."
actions={
}
/>
diff --git a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx
index 82bfd945a6d92..6e626f6b2045c 100644
--- a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx
+++ b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx
@@ -70,6 +70,7 @@ export const AutoScaleFields = ({ form }: AutoScaleFieldProps) => {
{
{
{
diff --git a/apps/studio/components/interfaces/DiskManagement/fields/ThroughputField.tsx b/apps/studio/components/interfaces/DiskManagement/fields/ThroughputField.tsx
index eb854c5872ea7..9b07712f8fb88 100644
--- a/apps/studio/components/interfaces/DiskManagement/fields/ThroughputField.tsx
+++ b/apps/studio/components/interfaces/DiskManagement/fields/ThroughputField.tsx
@@ -77,6 +77,7 @@ export function ThroughputField({ form, disableInput }: ThroughputFieldProps) {
Higher throughput suits applications with high data transfer needs.
@@ -100,6 +101,7 @@ export function ThroughputField({ form, disableInput }: ThroughputFieldProps) {
{
setValue('throughput', e.target.valueAsNumber, {
diff --git a/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx b/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx
index b953b74630ce0..e3ca55cb70646 100644
--- a/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx
+++ b/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx
@@ -2,6 +2,7 @@ import Link from 'next/link'
import { Button } from 'ui'
import { Admonition } from 'ui-patterns/Admonition'
+import { getServiceVersionsPath } from '@/components/interfaces/Settings/General/ServiceVersions/ServiceVersions.utils'
import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
interface UpgradeDatabaseAlertProps {
@@ -24,7 +25,7 @@ export const UpgradeDatabaseAlert = ({ minimumVersion = '15.6' }: UpgradeDatabas