Bosle Clément
03/11/2026, 10:37 AMruntime-core.esm-bundler.js:275
TypeError: Cannot read properties of undefined (reading 'ui')
at fhe.fn (ContextSidebar.vue:55:71)
at QX (reactivity.esm-bundler.js:391:28)
at get value (reactivity.esm-bundler.js:1655:5)
at setup (ContextSidebar.vue:58:90)Marvin
03/11/2026, 10:37 AMMarvin
03/11/2026, 10:42 AMserverSettings.server.ui... but getting an undefined object. In practice, this almost always happens when the UI can’t load the server settings from the API (the GET to /api/admin/settings fails or returns an unexpected response), so serverSettings (or serverSettings.server.ui) is undefined and the Vue component crashes.
Quick checks to pinpoint the cause:
- In your browser devtools, Network tab, reload the page and look for a request to /api/admin/settings.
- Status should be 200 and the JSON should include:
{
"server": {
"ui": {
"enabled": true,
"serve_base": "/",
"api_url": "...",
"show_promotional_content": true
}
}
}
- If it’s failing (404, 500, CORS, or network error), that’s the root cause.
- Hit these endpoints directly in your browser:
- https://YOUR-HOST/api/health
- https://YOUR-HOST/api/admin/settings
- Check the Prefect API server pod logs for startup/errors:
- kubectl logs -f deploy/<your-prefect-server-deployment>
Common causes in Helm/Kubernetes:
- Ingress path or subpath mismatch: If you’re serving the UI under a subpath (e.g. /prefect), the API route /api must still resolve correctly. You’ll need to:
- Ensure your ingress rewrites map the UI base path and /api correctly to the API service.
- Set the server UI base to match your subpath so UI links resolve:
- Env var on the server container: PREFECT_SERVER_UI_SERVE_BASE=/prefect
- UI cannot find the API at the expected URL:
- By default, the UI tries window.location.origin + /api. If your API is on a different hostname or path, set:
- PREFECT_SERVER_UI_API_URL=<https://your.domain.tld/api>
- Make sure your ingress and CORS allow the browser origin to access that API.
- Timing/initialization hiccups: If the API isn’t ready yet, the first UI load can fail. A refresh after the API is ready should load once /api/admin/settings returns.
Recommendations:
1) Verify connectivity
- Confirm /api/health and /api/admin/settings are reachable from your browser at the same host/path you use for the UI.
- If you see CORS errors, allow your UI origin in the API’s CORS configuration and/or adjust ingress headers.
2) If serving behind a subpath or different host
- Set these on the Prefect server container (in the Helm chart, add them to the server container env):
PREFECT_SERVER_UI_API_URL=<https://your.domain.tld/api>
PREFECT_SERVER_UI_SERVE_BASE=/ # or your subpath, e.g. /prefect
Then ensure your ingress rewrites /api to the API service and the UI base path to the UI service.
3) Consider updating to the latest 3.6.x patch
- There have been small improvements between 3.6.20 and newer 3.6.x that make the UI more resilient if the settings call fails briefly. Changelog: 3.6.20 → 3.6.21
If you can share:
- Your prefect-helm chart version
- The URL (and whether you’re on a subpath)
- Relevant bits of your values.yaml (ingress and any server UI env overrides)
- A screenshot or copy of the Network tab result for /api/admin/settings
…I can help you zero in on the exact fix and provide the right Helm values snippet.