litellm - 💡(How to fix) Fix [Bug]: Admin UI stuck on loading spinner (v1.83.10) - Next.js hydration fails

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Fix Action

Fix / Workaround

What I Tried

  • Set PROXY_BASE_URL environment variable
  • Removed LITELLM_LICENSE
  • Disabled STORE_MODEL_IN_DB
  • Patched Prisma budget_limits query errors
  • Tested with main-latest tag (v1.82.6 - same issue)
  • Verified CORS headers (access-control-allow-origin: *)

Code Example

INFO: "POST /login HTTP/1.1" 303 See Other
INFO: "POST /ui/?login=success HTTP/1.1" 405 Method Not Allowed
INFO: "GET /ui/ HTTP/1.1" 200 OK
# No further API calls from UI client

---

set-cookie: token=eyJ...; Path=/; SameSite=lax
RAW_BUFFERClick to expand / collapse

Bug Description

Admin UI at /ui/ loads HTML successfully (HTTP 200) but JavaScript hydration never completes - stuck permanently on "🚅 LiteLLM" logo with spinning loader.

Environment

  • LiteLLM Version: 1.83.10 (main-stable)
  • Docker Image: ghcr.io/berriai/litellm:main-stable
  • Database: PostgreSQL 16
  • Redis: 7
  • OS: macOS (Docker Desktop)

Reproduction Steps

  1. Deploy LiteLLM with Docker Compose (PostgreSQL + Redis backend)
  2. Set UI_USERNAME, UI_PASSWORD, LITELLM_MASTER_KEY
  3. Access http://localhost:4000/ui/
  4. UI shows loading spinner indefinitely

Observed Behavior

  • HTML: Returns 200 OK with BAILOUT_TO_CLIENT_SIDE_RENDERING template
  • Static assets: All JS/CSS chunks at /litellm-asset-prefix/_next/static/ return 200 OK
  • Login flow: POST /login → 303 redirect → cookie set correctly (JWT with user_role: proxy_admin)
  • API: All API endpoints work correctly (/user/info, /v1/models, etc.)
  • Client-side: JS loads but never hydrates - no subsequent API calls observed in server logs after UI HTML load

Server Logs (sanitized)

INFO: "POST /login HTTP/1.1" 303 See Other
INFO: "POST /ui/?login=success HTTP/1.1" 405 Method Not Allowed
INFO: "GET /ui/ HTTP/1.1" 200 OK
# No further API calls from UI client

Cookie Response

set-cookie: token=eyJ...; Path=/; SameSite=lax
  • No HttpOnly flag (JS can read)
  • SameSite=lax
  • JWT contains valid user_role: proxy_admin and session key

What I Tried

  • Set PROXY_BASE_URL environment variable
  • Removed LITELLM_LICENSE
  • Disabled STORE_MODEL_IN_DB
  • Patched Prisma budget_limits query errors
  • Tested with main-latest tag (v1.82.6 - same issue)
  • Verified CORS headers (access-control-allow-origin: *)

Expected Behavior

UI should hydrate and display the admin dashboard after loading.

Additional Context

  • Login page (/ui/login/) also stuck on same loading spinner
  • API works perfectly - can manage keys, view models, check spend via curl
  • Issue appears to be in Next.js static export client-side hydration, not server-side

Possibly Related

  • #11531 - /ui is not accessible
  • #12226 - Fix rendering ui on non-root images

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

litellm - 💡(How to fix) Fix [Bug]: Admin UI stuck on loading spinner (v1.83.10) - Next.js hydration fails