Home AssistantHome AssistantContributors
On this page

The frontend is everything people see and touch in Home Assistant: dashboards, the settings pages, the automation editor, the more-info dialog, and every other screen. The same code runs in a browser, in the companion apps, and on a wall tablet in someone's hallway. It lives in its own repository: home-assistant/frontend.

It is a TypeScript application, built from web components with Lit. It talks to Home Assistant Core over a WebSocket connection, and keeps itself in sync as things change in the home.

Who this area is for

  • Frontend contributors who want to fix a bug, polish a screen, or build a new feature in the frontend itself.
  • Integration developers whose backend change needs something new in the interface, like a more-info view or a WebSocket command.
  • Third-party developers who build custom cards, card features, badges, dashboard strategies, or panels that people install on their own.
  • Companion app developers who embed the frontend in a native app.

You need to know your way around TypeScript or JavaScript, HTML, and CSS. Lit and web components are easy to pick up as you go.

Fast, and everywhere

The frontend is a progressive web app, designed mobile first. It has to be fast on a budget Android phone with little memory, and it has to keep working on an old tablet that stopped getting updates years ago. To do both, every release ships two builds:

  • Modern: for browsers released in the last two years. Little transpilation, few polyfills, as fast as it gets.
  • Legacy: for older browsers, down to the floors pinned in .browserslistrc, like Safari 12 on old iPads and Chrome 59 on old Fire tablets.

Home Assistant serves each browser the build it can run. Keep both in mind when you add a dependency or a new browser API.

Start here

Guides and reference

  • Development: the development environment, running the frontend, the gallery and the demo, coding guidelines, and tests.
  • Architecture: how the frontend is put together. Lit and the ha-* components, the hass object and contexts, the data layer, translations, theming, routing, and panels.
  • Custom cards and more: build cards, card features, badges, views, strategies, and panels that people load into their own Home Assistant.
  • Extend the frontend: add a more-info view or a state card for a domain, or a WebSocket command for your integration.
  • Reference: commands, the hass object, external authentication, and the external bus used by the companion apps.

Who to talk to

When you ask for help, push your work to a branch and share the link. People help you much faster when they can see the code.

Was this page helpful?

Last updated on .