Lovelace UI


This is an experimental feature. Configuration might change in future versions.

Starting with Home Assistant 0.72, we’re experimenting with a new way of defining your interface. We’re calling it the Lovelace UI.

The Lovelace UI is:

  • Extremely fast. We create the user interface when the UI configuration changes. When a state changes, we just make the UI represent the current state.
  • Extremely customizable. We have a new file for just configuration. In the past, we declined UI specific options because they did not fit in the state machine. They will fit in a configuration file for a user interface.
  • Extremely extensible. It’s based on the web standard custom elements. Don’t like the built-in cards? Make your own! Custom cards are treated the same as built-in cards and are configured the same way. Check the docs.
  • Making the backend faster. With Lovelace, the backend will no longer need to maintain entities like groups for the sole purpose of showing them on the frontend.

If you’re not using Firefox 63+ or Chrome, please be sure to read the FAQ below.

How it works

The old user interface relied solely on the state machine. This caused trouble as it meant that the state machine was now not only the source for device states, but also for user interface configuration. With Lovelace, we’re taking a completely different approach. All user interface configuration will live in a separate file, controlled by the user.

Diagram showing how states no longer contain UI configuration. Visual comparison of old configuration versus new configuration

Trying it out

Create a new file <config>/ui-lovelace.yaml and add the following content. Adjust the entity names to entities that exist in your Home Assistant installation.

As a super minimal example, here’s the bare minimum you will need for this to work:

title: My Awesome Home
views:
    # View tab title.
  - title: Example
    panel: true
    # Makes the first card fill the view
    cards:
        # The markdown card will render markdown text.
      - type: markdown
        title: Lovelace
        content: >
          Welcome to your **Lovelace UI**.

A slightly more advanced example shows additional elements which can be used to customize your frontend.

title: My Awesome Home
# Include external resources
resources:
  - url: /local/my-custom-card.js
    type: js
  - url: /local/my-webfont.css
    type: css

# Optional background for all views. Check https://developer.mozilla.org/en-US/docs/Web/CSS/background for more examples.
background: center / cover no-repeat url("/background.png") fixed
# Exclude entities from "Unused entities" view
excluded_entities:
  - weblink.router
views:
    # View tab title.
  - title: Example
    # Unique id for direct access /lovelace/${id} and editing it from the UI.
    id: example
    # Optional background (overwrites the global background).
    background: radial-gradient(crimson, skyblue)
    # Each view can have a different theme applied. Theme should be defined in the frontend.
    theme: dark-mode
    # The cards to show on this view.
    cards:
        # The filter card will filter entities for their state
      - id: peoplehome # Every card needs an ID, for it to be edited from the UI.
        type: entity-filter
        entities:
          - device_tracker.paulus
          - device_tracker.anne_there
        state_filter:
          - 'home'
        card:
          type: glance
          title: People that are home

        # The picture entity card will represent an entity with a picture
      - type: picture-entity
        image: https://www.home-assistant.io/images/default-social.png
        entity: light.bed_light

    # Specify a tab icon if you want the view tab to be an icon.
  - icon: mdi:home-assistant
    # Title of the view. Will be used as the tooltip for tab icon
    title: Second view
    cards:
        # Entities card will take a list of entities and show their state.
      - type: entities
        # Title of the entities card
        title: Example
        # The entities here will be shown in the same order as specified.
        # Each entry is an entity ID or a map with extra options.
        entities:
          - light.kitchen
          - switch.ac
          - entity: light.living_room
            # Override the name to use
            name: LR Lights

        # The markdown card will render markdown text.
      - type: markdown
        title: Lovelace
        content: >
          Welcome to your **Lovelace UI**.

Now restart Home Assistant, navigate to <YOUR HASS URL>/lovelace. When you make changes to ui-lovelace.yaml, you don’t have to restart Home Assistant or refresh the page. Just hit the refresh button at the top of the UI.

IDs for cards and views

If you want to edit your views and cards from the UI, every card and view needs an ID. This ID is used to save your config from the UI.

Configuration splitting

ui-lovelace.yaml only supports basic configuration splitting. Only !include and !secret are supported, be aware that content that is included with !include and !secret can not be edited from the UI.

Setting Lovelace as the Default UI

Once you are ready to start using Lovelace UI as your main user interface, click on info, the “i” icon under ‘Developer Tools” in the Home Assistant side-bar. Next, locate »Set Lovelace as default page on this device« under the Home Assistant version information and click it.

Note that this is a per-device setting and will need to be changed on each device you access the UI from.

Custom Cards

It is possible to add your own custom cards to show up in the Lovelace UI. For more information, check the developer docs.

Current limitations

This is the very very early version aimed at gathering feedback. Discussion and suggestions are welcome in the ui-schema repository and in the chat in #lovelace.

FAQ

I am running Firefox but, custom cards like gauge-card look bad or don’t load at all. How do I fix this?

This is probably because your version of Firefox doesn’t have custom components supported or enabled. Please upgrade to version 63 or higher, otherwise set dom.webcomponents.customelements.enabled and dom.webcomponents.shadowdom.enabled to true in about:config.

Custom cards don’t load on my iOS device?

Home Assistant comes with two versions of the frontend. A compatibility mode for older devices and a modern mode. The custom cards need to target one mode and usually choose the modern mode. Before Home Assistant 0.76, we had an issue in the automation and script editor that prevented modern iOS and Mac devices running Safari from using the modern mode.

If you can, resolve this issue by upgrading to Home Assistant 0.76 or later. If you are on an older version and don’t mind that the automation and script editor don’t work on iOS devices, you can force the new version via the configuration:

frontend:
  javascript_version: latest

I would like to add an image to my card, but I do not know where to put them.

Given examples refer to /local/example_image.jpg. That means you should have www directory next to your HA configuration.yaml. An image kept in HA_configuration_dir/www/example_image.jpg will be shown after refreshing Lovelace page.

Restart Home Assistant after creating the www directory. Otherwise, HA will not know that you created this directory.

My ui-lovelace.yaml file suddenly has ID’s added to all cards and views!

In version 0.81.0 we started preparing for the ability to edit you Lovelace UI from the UI itself. To be able to do this every view and card should have a unique ID. If your cards or views didn’t had an ID, Home Assistant would add a random one. This behaviour was changed in 0.81.1, Home Assistant will no longer change your configuration without asking first. You can edit the generated ID, the only restriction is that it is unique. You could even delete the IDs if you don’t want to use the UI edit functionality.