Skip to main content

The React toolkit for Home Assistant UIs

Headless React hooks and components for Home Assistant entities and services. Build custom dashboards without the hassle of raw WebSockets or HASS service calls.

Build better interfaces

The WebSocket and state plumbing is handled, so you can spend your time on the UI

๐Ÿ’ก

17 Entity Types

Lights, climate, cameras, media players, alarm panels, and twelve more, each fully typed. Capability flags like supportsBrightness keep your UI honest about what a device can do, and callService covers everything else Home Assistant exposes.

๐Ÿช

Hooks or Components

Every entity works as a render-prop component or a hook. Pick per component and mix freely. Both read from the same store.

๐ŸŽจ

Headless Design

No styles shipped and no classes to override. Bring your own CSS, Tailwind, or component library.

โšก

Live State, No Plumbing

One shared WebSocket keeps every entity in sync, and each component re-renders only when its own entity changes. No Redux, no context wiring, no polling.

๐Ÿ”

Auth Handled

OAuth with automatic token refresh, long-lived tokens, or your own server-side transport so credentials never reach the browser.

๐Ÿงช

Mock Mode

Flip one provider prop and develop against a built-in simulated Home Assistant that answers service calls and state updates like the real thing. Build, demo, and test without touching your house.

// Render props
<Light entityId="light.floor_lamp">
{({ isOn, toggle }) => (
<button onClick={toggle}>
{isOn ? 'ON' : 'OFF'}
</button>
)}
</Light>
// Or hooks
const light = useLight('light.floor_lamp')
<button onClick={light.toggle}>
{light.isOn ? 'ON' : 'OFF'}
</button>

Choose your style

Use render props for full control or hooks for direct access

Three Example Dashboards

Complete vanilla CSS, shadcn/ui, and MUI builds in the repo.

React 16.14+

React is the only peer dependency, anything from 16.14 on.

MIT Licensed

Use it in anything, commercial or not.

Ready to build?

Point hass-react at your Home Assistant instance and start building