Bubble Card 3
v3.3.0-beta.1
Hi! Salut ! Hallo! Hola! Ciao! Olá! Ola! Hoi! Moien! Grüezi! Hej! Hei! Tere! Sveiki! Cześć! Ahoj! Živjo! Bok! Zdravo! Szia! Bună! Helo! Dia duit! Kaixo! Saluton! Halló! Halo! Xin chào! Merhaba! Përshëndetje! Здравей! Здраво! Привет! Привіт! Γεια! Բարև! გამარჯობა! שלום! مرحبا! سلام! नमस्ते! নমস্কার! வணக்கம்! నమస్కారం! നമസ്കാരം! สวัสดี! 안녕하세요! こんにちは!你好!
If you've been thinking about trying Bubble Card, I definitely think this is the best release to start with! This beta is the biggest release (in added lines of code) I have ever put together, and I'm (soooo) impatient to get your feedback on it!
Bubble Card now fully speaks your language. The whole editor is now localized in the 64 languages Home Assistant supports, with Right-to-Left support, and the documentation is translated as well! As I don't speak that many languages, I gave AI this colossal task, and this beta is here to catch the mistakes that this automated process could have made. All the available languages, and how you can help me, are listed on this page. Thank you so much in advance!
The entity picker got a whole new dimension. Since v3.2.3, picking an entity in Home Assistant (2026.6 and up) can suggest Bubble Cards. This release takes that much further, with cards designed around what your entity can actually do, and above all with modules that can now add their own suggestions! That's the part that really changes what a module can be. Until now, a module could restyle a card, now it can ship a complete card, or even a whole layout, as a one-click suggestion. One more thing: I'm also planning to add native card templates, and this feels like the perfect foundation for them. 🍻
And it got faster, when you open a pop-up, when you edit a card, on dashboards carrying a lot of modules, on low end devices...
I have also fixed A LOT of what you reported (and more...), including several memory leaks that were slowly eating resources on dashboards that stay open for days, like wall tablets.
Important
If you install Bubble Card manually instead of using HACS, note that the editor dictionaries now live in a translations/ folder next to bubble-card.js. Download bubble-card.zip from the release and extract it, otherwise the editor will stay in English.
Tip
How to test this beta?
The easiest way is to click on the button below, or go to HACS, search for Bubble Card, and click on it. Then, click the three dots icon in the top-right corner and select "Redownload". You'll be able to choose the beta version under "Need a different version?".
As always, thank you for your incredible support and for helping me polish this project! 🍻
And now, here is everything that has been added and fixed in this release:
New entity suggestions
-
Cards designed for the entity you picked:
Bubble Card has answered the card picker since v3.2.3, thanks to @piitaya. His entries are still there, and this release puts a set of designed cards above them. A light comes with its brightness slider and its color sub-buttons, a cover with its position slider and a tilt button when it tilts, a vacuum with its start, pause and dock buttons... 33 domains are covered, and you are only ever offered what your entity can really do. -
Modules can add their own suggestions:
The part I am most excited about. A module can now contribute complete cards to the picker, as declarative rules or computed in code, so a module that ships a layout can offer that layout in one click. It is all in the new module documentation. I will update my own modules very soon so you can try the suggestions they bring, and see what the idea gives on real ones!
For module creators
-
An Entity suggestions panel in the Module Editor:
Write your rules or your code hook, and see the actual cards your module would offer, rendered live in the card preview column with a switch to go back to the card you are editing. Errors are reported where you are typing rather than in the browser console. -
Modules can release what they started:
A pop-up rebuilds all of its cards every time it opens, so a timer or an observer that one module has started per card used to outlive that card with no way to clean up. The newonTeardownhook closes that whole class of leak. -
Modules can skip work that they have already done:
A module that touches the DOM runs again on every style pass, several times per card per pop-up open, for an identical result. The newhasChangedhelper lets it say what its work depends on and skip the rest. On one of my own modules this alone halved the opening time of a pop-up on a low-end iPad. -
The Module Editor no longer drops what it does not know:
Opening a module in the editor and saving it used to silently delete any key the editor did not handle, including the new suggestions ones. Every declaration now survives a round trip. -
The module documentation was rewritten:
It had outgrown its name. It now covers the editor schema, reading your configuration from your code, entity suggestions, and how to keep a module fast. It moved to module-documentation.md.
Warning
Check the compatibility rules before you publish an update. The two helpers above only exist from this version. Using one of them without a guard throws on an older Bubble Card, and your whole module is then skipped, so your users lose all of your styling rather than that one feature. There is a typeof pattern for that and it takes two lines, please read staying compatible with older versions before you publish anything.
Localization
-
Complete editor localization:
The entire editor is localized using native Home Assistant translations and local dictionaries, for the 64 languages supported by Home Assistant. Card texts like the calendar ones are translated too. #1432 #2290 -
Right-to-Left (RTL) support:
Bubble Cards and the editor now properly (and finally) mirror their layout for RTL languages, providing a native feel for languages like Arabic or Hebrew. #2066 #1456 #1504 #1086 #2148 -
Documentation in 62 languages:
The whole documentation is now translated and reachable from this page. -
Module Store and My Modules translations:
Module descriptions, names and editor labels are translated on the fly, both in the Module Store and in My Modules, making it much easier to discover and understand new modules in your own language. -
Translation through Bubble Card Tools:
Your browser can only translate on its own over HTTPS, which many of you do not use locally. Bubble Card Tools v1.1.1 now does it when the browser cannot, with a cache shared by every device in your home, so a description is only translated once. Update the integration to get it. -
Enhanced language switching:
The editor footer now features an "Auto" toggle for language selection and a dedicated English switch for quick overrides.
⚡ Performance
-
Faster pop-up opening:
A pop-up now renders its cards before revealing them instead of a third of a second after, and settles its sliders instead of animating them into place once open. The shell no longer flashes on screen before it opens. #2548 -
Much cheaper style processing:
A style template that interpolates nothing is now resolved once for every card that uses it instead of once per card, and Bubble Card no longer rescans every template on every card update. This is the kind of work that adds up on dashboards carrying a lot of modules. -
One render per burst instead of one per change:
A card that receives several state changes at once now renders once, not once per change. -
A lighter card picker:
Suggestion previews stay untouched until they are about to be seen, so opening the picker no longer builds and updates every card in the list at once. -
Halved the Bubble Card Tools cache:
The module cache stored the code of every module twice, which alone could push your browser past its storage quota and stop the cache from ever refreshing. The duplicate is gone and the old cache is reclaimed on first access. -
Faster boot with Bubble Card Tools:
The module cache no longer cold-loads on every boot, and it now waits for Home Assistant instead of giving up on revalidating for the whole session. -
Fixed several memory leaks:
Template subscriptions, timer intervals, editor instances and cached pop-up contexts were all kept alive after their card was removed. This is now fixed, which should noticeably reduce CPU and memory usage on dashboards that stay open for a long time.
Note
What matters most to test in this beta
The editor in your own language, since 64 of them were translated at once and I speak almost none. A word that reads wrong, a label that overflows its field, a page that mirrors badly in Arabic or Hebrew, all of that is worth telling me (the same goes for the documentation).
The entity suggestions, because they are brand new. Pick a few of your entities and tell me whether the cards you are offered are the ones you would have built by hand. A missing variant, one that makes no sense for a domain, a wrong order, I want to hear it.
Your pop-ups, which got a lot of work under the hood. Opening and closing, the browser back button, and anything that looks off on a phone or a tablet.
And if something you rely on broke, say so even if it feels small. A beta is exactly the moment for that, and every report I got on the last ones made this release better.
💡 Other new features and enhancements
-
Support for every Home Assistant condition:
Every condition type Home Assistant offers now works wherever you use conditions, in module editors, in sub-button visibility and in pop-up triggers. That includes the ones the native builder proposes. And a condition Bubble Card cannot evaluate now says so in your browser console instead of silently being false, which was really hard to figure out. #2540 -
Multi-day calendar events:
An event covering several days is now displayed on every day it covers, instead of only on the day it starts, following the same rules as the Home Assistant agenda. Timed events keep a time on their first and last day and read as all day in between. #2556 -
Outlined sub-buttons and sliders that blend in:
A sub-button or a slider painted in the same color as the card behind it used to disappear. It now gets a discreet outline, only in that case, and you can remove it with--bubble-sub-button-outline. -
Home Assistant terminology for card names:
Domain cards are now named with Home Assistant's own terminology, so the card picker matches the wording you already know. -
Smarter editor defaults:
Added an "Auto" default option to slider editor dropdowns for more flexible configurations.
✔️ Bug fixes and improvements
-
Fixed the browser back button after opening pop-ups:
Every pop-up left behind a history entry when it stayed open more than a second and a half, so leaving the view needed one extra press of the back button per pop-up you had opened. #2563 -
Fixed pop-up layout space:
Closed pop-ups no longer reserve layout space when placed inside custom stacks, preventing weird gaps in your dashboard. #2552 #2533 #2544 #2532 #2379 PR #2535 by @oiahoon, thank you so much! 🍻 -
Fixed "Unsaved changes" loop:
Resolved an issue where closing the standalone pop-up editor could trigger an infinite loop of unsaved changes warnings. #2437 #2538 #2551 #2499 -
Improved pop-up interactions:
Pop-ups now correctly stay open when a drag operation starts inside the pop-up and ends outside of it, like when dragging a slider, panning a map or swiping a card. This is also fixing #2554. -
Fixed click-outside behavior:
Stopped the system from "swallowing" the first click when interacting outside of a pop-up that is still opening. -
Fixed pop-ups resizing the dashboard behind them:
Opening a pop-up placed alone in a column no longer widens the other columns and narrows them again on close, so the whole dashboard behind it stopped jumping twice per opening. -
Fixed pop-ups opening off-centre when the sidebar is hidden:
A hidden sidebar, kiosk mode, the companion app or a sidebar mod no longer pushes your pop-ups sideways, because they now measure the panel Home Assistant actually renders instead of trusting a width token. The fixed sub-buttons footer and the horizontal buttons stack had the same defect and are fixed too. #2537 -
Fixed pop-ups that never opened outside a shadow tree:
A pop-up mounted straight into the light DOM was skipped on every update, with no shell and no error. It now initializes normally. -
Fixed pop-up header sub-buttons ignoring their visibility conditions:
Header sub-buttons now refresh as soon as their visibility conditions change. #2550 -
Fixed frozen timer countdowns:
Timer countdowns no longer freeze after a disconnect/reconnect cycle or after reopening a pop-up. -
Fixed cards ignoring module changes after switching views:
When you left a view and came back to it, some cards stopped picking up your module and YAML changes until a full page reload. They now update instantly again. -
Fixed pop-ups closing behind other dialogs:
Clicking inside another Home Assistant dialog no longer closes the pop-up underneath it. -
Fixed the current view highlight staying on:
Closing a pop-up with the browser back button left its button highlighted in the horizontal buttons stack. -
Fixed the select dropdown hidden behind the cards below it:
A select dropdown now opens above the cards that follow it, and the card no longer clips it. #2334 #2520 -
Fixed the slider value while dragging:
A slider whose entity changes its own range, like a climate switching mode, showed a value computed against the range it had when the card was built. PR #2564 by @derekclapham, thank you! 🍻 -
Fixed the calendar showing "undefined":
A calendar with no event no longer renders a stray empty line, and its placeholder no longer triggers a more-info on an entity that does not exist. PR #2558 by @cycsmail, thank you! 🍻 -
Fixed an editor field you cannot empty:
Clearing a text field in the editor left its last character in the configuration and put it back on the next render. The key is now removed, as it should be. -
Fixed the horizontal buttons stack (finally):
A button added to a live stack now lands once in the row instead of twice, buttons keep their own configuration slot whenauto_orderreorders them, and the row keeps one order on Firefox when a button has no motion sensor. -
Fixed taps landing on nothing in a bottom sub-buttons row:
Clicks now pass through the empty parts of a bottom row. -
Fixed the text scrolling effect:
It now comes up every time, and it no longer overwrites text that one of your style templates wrote. -
Fixed the default active color turning pale on dark themes:
Short hex colors like#111were not parsed, so the default active color came out washed out on the dark theme. Every hex and rgb syntax is now supported, and the color cache is cleared when you switch themes. #2536 -
Fixed conditional sub-buttons changing the card height:
The card now reserves its height for sub-button rows that appear and disappear on conditions, so it no longer grows and shrinks as your conditions change. #2517 -
Fixed grouped sub-button rows order:
Grouped sub-button rows are now kept in the order you configured them. -
Fixed the sub-buttons card freezing in footer mode:
A sub-buttons card set to footer mode inside a pop-up no longer freezes. #2528 -
Fixed the climate editor bringing back a deleted sub-button:
The default HVAC modes menu was added back to the top of the list on every edit, which also shifted the indexes of your other sub-buttons and broke the modules relying on them. Opening a saved card no longer touches your configuration. #2176 #2456 -
Fixed the empty column losing its height:
The empty column card now keeps its configured rows on refresh, including in masonry views, stacks and pop-ups. #2523 -
Fixed the horizontal buttons stack with a full browser storage:
A saturated browser storage no longer leaves the horizontal buttons stack collapsed and unresponsive. -
Fixed media player image transitions:
Artwork transitions are now based on a proper preload, so a slow or failing image can no longer leave the card in a wrong state. -
More resilient to future Home Assistant updates:
Bubble Card no longer relies on assumptions about how the Home Assistant frontend is built, and these are now covered by automated tests, so a change on their side should no longer (let's not say never) be able to break your pop-ups. -
Legacy pop-up polish:
Restored the opening transitions for legacy pop-ups and ensured they remain reachable via their hash. -
Editor polish:
Reduced unnecessary re-renders and improved card preview refreshes, the slider min/max/step row now stays inside its panel... -
And more...
Bubble News 🍻
Over the past few years, I’ve been working on Bubble Card almost every day to make it the best it can be, and I still can’t believe how much it has grown in popularity. Watching the community grow and seeing so many people using my work has been incredibly rewarding ❤️
That’s why I decided to launch a Patreon, as a way to offer something more to those who want to support me. Thanks to your support, I’m now able to work on this project full-time from home with my family, which is truly a dream come true.
Since then, I’ve released six modules that can be configured directly from the editor, just like any other Bubble Card feature. I’m also doing my best to release a new module every month.
![]() Bubble Weather Animated weather backgrounds with daily/hourly forecasts |
![]() Bubble Badges 2 Unlimited badges on any sub-button or the main icon |
![]() Bubble Calendar Enhanced Add time and date on buttons or calendar cards with customizable layout options |
![]() Bubble Neon A dynamic theme that automatically assigns unique vibrant colors to each Bubble Card |
![]() Custom dropdown Full control over labels, icons, and actions on select cards and sub-buttons |
Bubble Quick Launcher Turn your sub-buttons card into a clean and compact launcher grid, perfect for room controls, navigation menus, scenes, and quick actions |
I’m also finally happy with my own dashboard, built entirely with Bubble Card and only new custom modules I've been working on for months! Including one that adds unique colors and styles to all cards, one for the weather, one for graphs, square cards, time... I’ll release more of these modules soon, with a detailed post on Patreon and a new YouTube video. I would love to know what you think!
Thank you so much for being part of this amazing community, your support always makes a huge difference! ❤️
I’ve been wanting to start my own YouTube channel for a while, focusing on tutorials around Home Assistant and Bubble Card, and I really hope you will enjoy my videos. Don’t hesitate to subscribe to help give my channel more visibility. Thank you in advance!
I want to highlight that on the GitHub page, in the Discussions section, you can share and discover some amazing YAML examples from the community. Go check it out! Some of the creations are absolutely incredible!
And if you are interested I've opened a Subreddit for Bubble Card where I post my progress on the project. Here it is:
Also, if you ever want to grab me a fresh beer, here are some easy ways 🍻




