DEV Community

Joffrey Mischler
Joffrey Mischler

Posted on

What's new in MQTT Dashboard since v1.5.0

A few months back I posted about MQTT Dashboard — a self-hostable, single-binary MQTT explorer + drag-and-drop dashboard for IoT developers. Since then I've shipped five minor releases (1.6 → 1.9) and stood up a public live demo at mqtt-dashboard.apps.joff.sh.

TL;DR — better topic explorer, mobile support, cron validation, JSON dashboard import/export, confirm dialogs on destructive buttons, a new gauge panel, config-based broker seeding, and a hosted demo.


1.6.0 — Explorer that scales to real brokers

The topic tree was hard to navigate on brokers with hundreds of topics: every node was expanded by default, there was no way to collapse the whole tree, and no shortcut to subscribe to everything under a root.

Three changes address this:

  • Expand / collapse all buttons at the tree root
  • A wildcard root node — click it to subscribe to # for that broker
  • Default collapsed — new trees start clean instead of rendering every node

1.7.0 — Mobile support

Opening the dashboard on a phone previously produced a broken layout. 1.7 is a responsive pass: mobile navigation, layout adjustments, and styling fixes on the image/text panel edit modals and separator sizing.

It's not a mobile-first app, but the "quick check from a phone" flow works now.


1.7.2 — Cron panel validation

The Cron panel schedules automatic publishes with a visual builder. Previously, if the expression was typed by hand and was invalid, the panel silently did nothing.

The expression is now validated as you type, with UI feedback on invalid entries.


1.8.0 — Portable dashboards, safer buttons

Import / export dashboards as JSON

You can now export a full dashboard (panels, positions, topics, cron config) to a JSON file and re-import it — into the same instance, a different broker, or a fresh install.

Use cases:

  • Back up a setup before making changes
  • Share a starter dashboard for a specific device or use case
  • Migrate between instances without rebuilding by hand

Confirm dialog on Button panels

The Button panel one-click-publishes a preset payload. That is fine for home/lights/toggle, less fine when the neighbouring button is pump/emergency-stop.

Buttons can now opt into a confirm dialog. Off by default, on for the ones that matter.


1.9.0 — Gauge panel and config-based seeding

New Gauge panel

A new panel type that renders the last value of a topic as a live gauge. It handles three payload shapes:

  • Numbers — classic min/max/unit gauge (temperature, battery %, RSSI)
  • Booleans — a large on/off status indicator
  • Strings — hero text for status-style payloads (online, armed, …)

It also supports pulling a specific field out of a JSON payload via a key path, so you don't need to reshape MQTT messages upstream to get a clean display.

Config-based broker seeding

Instances can now be seeded with brokers from a config file on startup. Handy for reproducible deployments, dev environments, and the hosted demo — no more "click through the setup wizard every fresh volume."

Other 1.9.0 changes

  • Unified topic selector across panels (one component, one behaviour)
  • Improved wildcard validation
  • Client certificate config layout fix
  • Better starter dashboard templates

1.9.1 — Cron panel reliability

Follow-up fixes on the Cron panel: the enable/disable switch toggle, a stuck "waiting" state, and progress bar reset on schedule change.


Live demo

Setting up an MQTT broker just to evaluate a dashboard is a lot to ask. There's now a hosted demo stack at mqtt-dashboard.apps.joff.sh: a Mosquitto broker with traffic, a pre-seeded dashboard, and a scheduled reset so shared state stays clean.


What's next

Roadmap items I'm working on:

  • User-created panel types — a way to define your own panel and share it
  • More options on base panels — small "I wish this button could do X" requests

Try it

If it's useful to you, a ⭐ on the repo helps me prioritize what to work on next.

Top comments (0)