Self-hosted dashboard returns HTTP 500: missing `@radix-ui/react-icons-311a50637b01fce4`

Author: tjramageCreated Sep 9, 2026Updated Sep 10, 2026

Most of the latest published dashboard images start successfully but returns HTTP 500 on GET /.

I reproduced this independently using the official Compose configuration, fresh data volumes, and matched backend/dashboard revisions. No application code, bind mounts or existing database were used.

Results

Revision Platform Backend /version Dashboard /
849a6fc605b5a910c9834b61a77c5475cc24d189 ARM64, native (latest) 200 500
bbca5ed2d8ca058f3cd58660e1b5ac871cbc7fd6 ARM64, native 200 500
42e27e8308998d256d20c9f1fcc35a9230a9c4ca ARM64, older control 200 200

Host: Apple Silicon Mac, Docker Desktop 4.84.0, Docker Engine 29.6.2.

Error

The dashboard reports Next.js 16.3.3 and Ready in 0ms, then logs:

Error: Failed to load external module @radix-ui/react-icons-311a50637b01fce4:
Error: Cannot find module '@radix-ui/react-icons-311a50637b01fce4'

Require stack:
- /app/.next/server/chunks/ssr/[root-of-the-server]__1lbpoc0._.js
- /app/.next/server/chunks/ssr/[turbopack]_runtime.js
- /app/.next/server/pages/_document.js
...
- /app/server.js

I've also tested AMD64 (emulated). Subsequent requests repeatedly returned 500 with the same missing-module error.

Reproduction

  1. Start from the official self-hosted Compose configuration in an empty directory.
  2. Pin both services:
yaml
services:
  backend:
    image: ghcr.io/get-convex/convex-backend:bbca5ed2d8ca058f3cd58660e1b5ac871cbc7fd6
  dashboard:
    image: ghcr.io/get-convex/convex-dashboard:bbca5ed2d8ca058f3cd58660e1b5ac871cbc7fd6
  1. Use a new Compose project and fresh volume. Keep the official environment defaults, including NEXT_PUBLIC_DEPLOYMENT_URL.
  2. Start the services, wait for backend health and dashboard readiness, then request:
bash
curl -i http://127.0.0.1:3210/version
curl -i http://127.0.0.1:6791/
docker compose logs --no-color dashboard

Expected: dashboard root loads successfully.

Actual: backend is healthy, but dashboard root returns 500.

Possible investigation area

The dashboard Dockerfile uses pnpm deploy --legacy --prod, then copies the standalone server.js to /app/server.js. Could the generated external-module references require files or links that are missing from the resulting runtime layout?

Source: get-convex/convex-backend