Skip to content

← Back to YouLab

Guide for modifying the OpenWebUI frontend.

Don’t use Docker for frontend development. OpenWebUI has native dev mode with instant hot-reloading.

OpenWebUI is a nested git repository at OpenWebUI/open-webui/:

  • Origin: https://github.com/open-webui/open-webui
  • Not a submodule—requires separate commits/PRs
  • Data persists in backend/data/

Terminal 1 - Backend (port 8080):

Terminal window
cd OpenWebUI/open-webui/backend
./dev.sh

Terminal 2 - Frontend (port 5173):

Terminal window
cd OpenWebUI/open-webui
npm install # first time only
npm run dev

Browser: http://localhost:5173

Frontend proxies API calls to localhost:8080 automatically in dev mode.

TaskDockerNative Dev
Edit Svelte component5-10 min rebuild<100ms hot reload
See changesRestart containerInstant
Debug issuesRebuild from scratchFix and continue
FilePurpose
src/lib/components/layout/Sidebar.svelteMain sidebar
src/lib/i18n/locales/en-US/translation.jsonTranslations
src/lib/components/icons/*.svelteIcon components
backend/dev.shBackend dev script
backend/data/webui.dbSQLite database

Use Docker only for production builds.

IssueFix
Missing: picomatch from lock filegit checkout package.json package-lock.json
JavaScript heap out of memoryAdd to Dockerfile: ENV NODE_OPTIONS="--max-old-space-size=4096"
Cypress download failedAdd to Dockerfile: ENV CYPRESS_INSTALL_BINARY=0
Terminal window
cd OpenWebUI/open-webui
docker compose build open-webui
docker compose up -d open-webui