Web DevelopmentFebruary 20, 20251 min read

Wiz Inspector Extension

A Manifest V3 browser extension that turns the painful manual UDP-packet workflow for debugging Wiz smart home devices into one-click inspection and state diffing.

#Chrome Extension#Manifest V3#JavaScript#Debugging
Laptop screen displaying browser extension source code used to inspect Wiz smart home configurations
Web Development · Wiz Inspector Extension

Why I Built It

While working on my Wiz Lamp Control dashboard, I kept needing to see the raw state of every lamp — IP addresses, power draw, firmware versions, scene configs. Logging UDP packets manually with tcpdump worked, but it was slow and hostile to iterate on.

So I packaged the debugging workflow into a browser extension.

What It Does

  • Device discovery panel — lists every Wiz device found on the network with live status
  • Raw message inspector — send arbitrary JSON-RPC commands and view responses inline
  • State diffing — snapshot a lamp’s config before and after a change to see exactly what moved
  • Preset command library — common getPilot/setPilot payloads one click away

Implementation Details

The extension uses Chrome’s Manifest V3 service worker to fire UDP packets through a tiny local relay bridge, since browsers can’t send UDP natively. The popup UI is built with plain HTML/CSS and renders device state in a collapsible tree.

Lessons Learned

This project taught me a lot about debugging tooling as a product: the features I thought would matter (raw packet view) mattered less than the ones I almost skipped (state diffing). Good tools expose changes, not just data.

Note — If you build a tool like this, make every destructive action undoable. Debugging is inherently exploratory, and you should never punish the user for clicking the wrong button.