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 hooksconst 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