Dashboard layout broken after upgrading from Core 2026.3.0 to 2026.8.x (vertical-stack-in-card + layout-card + bubble-card

Hi everyone,

I’m running Home Assistant OS and I’ve found a reproducible issue with my dashboard layout after upgrading Home Assistant Core from 2026.3.0 to 2026.8.x.

What happens

After updating to Core 2026.8.x, the Quick Actions section in my sidebar becomes compressed and all Bubble Cards overlap each other. The rest of the dashboard mostly remains in the correct position, but the sidebar layout is broken.

What I’m using

  • Home Assistant OS 18.2
  • Home Assistant Core 2026.8.x (problem)
  • Home Assistant Core 2026.3.0 (works correctly)
  • Android Home Assistant Companion App
  • custom:vertical-stack-in-card
  • custom:layout-card (v2.4.7)
  • custom:bubble-card
  • custom:button-card

I’m attaching my screenshot of the broken layout.

The issue is limited to the Quick Actions section in the sidebar (the part that contains the Bubble Cards). On Core 2026.3.0 the exact same YAML renders correctly, while on Core 2026.8.x the Bubble Cards in that section overlap each other and the layout becomes compressed.

I’ve already tested:

  • clearing the Android Companion App cache;
  • restarting Home Assistant;
  • checking for HACS updates (none available);
  • modifying the layout-card grid settings;Preformatted text
  • replacing parts of the layout with vertical-stack.

None of these changes made any difference.

Since the exact same dashboard works correctly on 2026.3.0, I suspect a frontend rendering regression introduced somewhere between 2026.3 and 2026.8.

Has anyone seen something similar with vertical-stack-in-card, layout-card, or bubble-card in recent Home Assistant Core versions?


type: custom:vertical-stack-in-card
cards:
  - type: markdown
    content: '{{ ''%02d'' | format(now().hour) }}:{{ ''%02d'' | format(now().minute) }}'
    card_mod:
      style: |
        ha-card {
          font-size: 60px;
          font-weight: 250;
          height: 50px;
          margin-top: -2%;
          background: none;
          box-shadow: none;
          backdrop-filter: none !important
  - type: markdown
    content: |-
      {% set dag = now().strftime('%A') %} {{ dag.replace('Monday', 'maandag')
           .replace('Tuesday', 'dinsdag')
           .replace('Wednesday', 'woensdag')
           .replace('Thursday', 'donderdag')
           .replace('Friday', 'vrijdag')
           .replace('Saturday', 'zaterdag')
           .replace('Sunday', 'zondag') }}, {{ now().day }}-{{ now().month }}-{{ now().year }}
    card_mod:
      style: |
        ha-card {
          font-size: 15px;
          font-weight: 300;
          margin-top: -12%;
          background: none;
          box-shadow: none;
          backdrop-filter: none !important
  - type: custom:layout-card
    layout: |
      grid-template-columns: 4% 92% 4%
      grid-template-rows: 4% 92% 4%
      grid-template-areas: |
        ". . ."
        ". cards ."
        ". . ."
    cards:
      - type: grid
        columns: 2
        square: false
        cards:
          - type: custom:button-card
            template: bubble_card_graph
            entity: sensor.temp_sensor
            variables:
              card_name: Temp.
              card_icon: mdi:thermometer
              graph_color: '#A2AADB'
          - type: custom:button-card
            template: bubble_card_graph
            entity: sensor.temp_sensor_humidity
            variables:
              card_name: Humidity
              card_icon: mdi:water
              graph_color: '#AEC8A4'
      - type: custom:bubble-card
        card_type: button
        button_type: state
        entity: sensor.lights_on_counter
        name: Lights
        icon: mdi:lightbulb
        card_layout: normal
        styles: |-
          ha-card {
            --bubble-main-background-color: rgba(255,255,255,0.1) !important;
          }
      - type: custom:bubble-card
        card_type: button
        button_type: state
        entity: counter.beddengoed_verschonen_reminder
        show_name: true
        show_last_changed: false
        show_attribute: false
        attribute: icon
        name: 'Nights '
        icon: mdi:bed
        styles: >-
          ha-card {
            --bubble-main-background-color: rgba(255,255,255,0.1) !important;
          }

          ${card.querySelector('.bubble-name').innerText =
          hass.states['counter.beddengoed_verschonen_reminder'].state + '
          nights' }

          ${card.querySelector('.bubble-state').innerText = 'since last sheets
          change' }
        sub_button:
          - entity: counter.beddengoed_verschonen_reminder
            show_background: false
            name: ''
            show_name: true
            icon: mdi:restore
            tap_action:
              action: call-service
              target:
                entity_id: entity
              service: counter.reset
        card_layout: normal
  - type: custom:gap-card
    height: 5
  - type: custom:button-card
    name: Quick Actions
    styles:
      card:
        - background: none
        - box-shadow: none
        - backdrop-filter: none !important
      name:
        - justify-self: start
        - margin-left: 8%
        - font-size: 14pt
        - font-weight: 600
  - type: custom:layout-card
    layout: |
      grid-template-columns: 4% 92% 4%
      grid-template-rows: 4% 92% 4%
      grid-template-areas: |
        ". . ."
        ". cards ."
        ". . ."
    cards:
      - type: custom:bubble-card
        card_type: button
        button_type: state
        entity: automation.motion_sensor
        name: Motion Sensor
        icon: mdi:motion-sensor
        styles: |-
          .bubble-icon {
            color: ${hass.states[entity].state === 'on' ? 'rgb(255,255,255)' : 'rgba(255,255,255,0.6)'} !important;
          }
          ha-card {
            --bubble-main-background-color: rgba(255,255,255,0.1) !important;
          }
        sub_button:
          - entity: automation.motion_sensor
            icon: mdi:toggle-switch
            show_background: false
            tap_action:
              action: call-service
              target:
                entity_id: entity
              service: automation.turn_off
            visibility:
              - condition: state
                entity: automation.motion_sensor
                state: 'on'
          - entity: automation.motion_sensor
            icon: mdi:toggle-switch-off-outline
            show_background: false
            tap_action:
              action: call-service
              target:
                entity_id: entity
              service: automation.turn_on
            visibility:
              - condition: state
                entity: automation.motion_sensor
                state: 'off'
        show_last_changed: false
        show_state: true
        card_layout: normal
        button_action:
          tap_action:
            action: none
      - type: custom:bubble-card
        card_type: button
        show_last_updated: false
        show_last_changed: false
        show_state: true
        show_attribute: false
        sub_button: []
        button_type: state
        entity: switch.sp01
        tap_action:
          action: toggle
        name: SP01
        icon: phu:smart-plug-sonoff
      - type: custom:bubble-card
        card_type: button
        button_type: state
        name: Wake Up Automation
        icon: mdi:weather-sunset-up
        entity: automation.weekend_wake_up
        styles: |-
          .bubble-icon {
            color: ${hass.states[entity].state === 'on' ? 'rgb(255,255,255)' : 'rgba(255,255,255,0.6)'} !important;
          }
          ha-card {
            --bubble-main-background-color: rgba(255,255,255,0.1) !important;
          }
        card_layout: normal
        tap_action:
          action: none
        button_action:
          tap_action:
            action: navigate
            navigation_path: '#wake-up'
card_mod:
  style: |
    ha-card {
      background: none;
      box-shadow: none;
      backdrop-filter: none !important;
      padding: 12px
    }
view_layout:
  grid-area: sidebar