Home Assistant Frontend

This offers the official frontend to control Home Assistant. This integration is by default enabled, unless you’ve disabled or removed the default_config: line from your configuration. If that is the case, the following example shows you how to enable this integration manually:

# Example configuration.yaml entry

Configuration Variables

themes map (Optional)

Allow to define different themes. See below for further details.

[identifier] list | map Required

Name to use in the frontend.

[css-identifier] list | string Required

The CSS identifier.

extra_module_url list (Optional)

List of additional javascript modules to load in latest javascript mode.

extra_js_url_es5 list (Optional)

List of additional javascript code to load in es5 javascript mode.

development_repo string (Optional)

Allow to point to a directory containing frontend files instead of taking them from a pre-built PyPI package. Useful for Frontend development.

Defining Themes

Starting with version 0.49 you can define themes:

# Example configuration.yaml entry
      primary-color: pink
      text-primary-color: purple
      mdc-theme-primary: plum
      primary-color: blue

The example above defined two themes named happy and sad. For each theme you can set values for CSS variables. If you want to provide hex color values, wrap those in apostrophes, since otherwise YAML would consider them to be comments (primary-color: '#123456'). For a partial list of variables used by the main frontend see ha-style.ts.

As with all configuration, you can either:

  • Directly specify the themes inside your configuration.yaml file
  • Put them into a separate file (e.g. themes.yaml) and include that in your configuration (themes: !include themes.yaml)
  • Create a dedicated folder (e.g. my_themes) and include all files from within this folder (themes: !include_dir_merge_named my_themes)

For more details about splitting up the configuration into multiple files, see this page.

Check our community forums to find themes to use.

Setting themes

There are 2 themes-related services:

  • frontend.reload_themes: Reloads theme configuration from your configuration.yaml file.
  • frontend.set_theme: Sets backend-preferred theme name.

Service set_theme

Service data attribute Description
name Name of the theme to set, default for the default theme or none to restore to the default.
mode If the theme should be applied in light or dark mode light or dark (Optional, default light)

If no dark mode backend theme is set, the light mode theme will also be used in dark mode. The backend theme settings will be saved and restored on a restart of Home Assistant.

Manual Theme Selection

When themes are enabled in the configuration.yaml file, a new option will show up in the user profile page (accessed by clicking your user account initials at the bottom of the sidebar). You can then choose any installed theme from the dropdown list and it will be applied immediately. This will overrule the theme settings set by the above service calls, and will only be applied to the current device.

Set a theme

Loading extra JavaScript

Starting with version 0.95 you can load extra custom JavaScript.


# Example configuration.yaml entry
    - /local/my_module.js
    - /local/my_es5.js

Modules will be loaded with import(), on devices that support it (latest mode). For other devices (es5 mode) you can use extra_js_url_es5, this will be loaded with <script defer src=''></script>

The ES5 and module version will never both be loaded, depending on if the device supports import the module of ES5 version will be loaded.

Manual Language Selection

The browser language is automatically detected. To use a different language, go to the user profile page (accessed by clicking your user account initials at the bottom of the sidebar) and select one. It will be applied immediately.

Choose a Language