// the find
home-assistant/frontend
:lollipop: Frontend for Home Assistant
The official frontend for Home Assistant, the open-source home automation platform. It is a TypeScript app built on Lit web components that renders dashboards, entity controls, and configuration screens against the Home Assistant backend. It is aimed at Home Assistant contributors and at anyone who wants to read how a large Lit application is organised, not at people looking for a reusable UI library.
- The demo setup under demo/src/stubs fakes many integrations, including Matter, Thread, ZHA, Modbus, MQTT, and Bluetooth. You can run most of the UI without a real home, which is the easiest way into the codebase.
- The .agents/skills directory holds written guidance on components, contexts, events, styling, testing, and user-facing text. The conventions are documented instead of being left to be inferred from the code.
- Bundle size is treated as a CI concern. bundle-budget.json, check-bundle-size.cjs, Brotli and Zopfli compression, and the custom Babel plugins mean size regressions show up in review rather than in production.
- PR standards, blocking labels, and a separate e2e workflow are enforced by scripts in .github, so the review bar does not depend only on maintainers remembering it.
- This is not a library. The components depend on Home Assistant's websocket API, its stores, and its types, so taking a piece out for another project means first untangling those dependencies.
- The README is a pointer page. Setup is script/setup and the real development guide lives on developers.home-assistant.io, so a fresh clone sends you into scripts to find out what they do.
- Two build pipelines sit side by side: gulp under build-scripts/gulp and rspack, plus several custom loaders. A new contributor has to work out which one a given target uses before they can change anything.
- Several generated files (device classes, sensor entity constants, icons JSON) are synced from upstream by workflows. The frontend's picture of the backend is only as current as those jobs, and a missed sync is easy to overlook.