UI

A business phone system inside your product, in an afternoon.

Open-source React components for embedded texting, calling, voicemail, number porting, and 10DLC compliance — built on the Handset API. Installed with the shadcn CLI: the source lands in your repo, styled with your tokens, yours to change.

1. Point the CLI at the registry

2. Install the components

Live demo — this is the messaging block, running on mock data. Send something.

Components

35+ components across the whole phone system — realtime built in, your API key never in the browser. Install only what you use.

Blocks

Messaging

Voice

Numbers & compliance

Call routing

Realtime & plumbing

@handset/react

The headless layer on npm — hooks for messaging, voice, numbers, compliance, and routing — if you'd rather bring your own UI.

How it works

  1. Components render in your app and call /api/handset/* — routes in your backend, added by @handset/next-routes.
  2. Your server holds the Handset API key and scopes every request to the signed-in user's tenant. No keys, no tokens in the browser.
  3. The Handset API does the rest: numbers, delivery, threading, 10DLC compliance, STOP/HELP handling.

MIT licensed. Built by Handset, the business phone API for vertical SaaS.