Open-source React components for embedded texting, built on the Handset API. Install with the shadcn CLI.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
git clone https://github.com/handset-hq/handset-uiTools overview
# Handset UI
**Texting inside your product, in an afternoon.**
Open-source React components for embedded messaging, built on the
[Handset API](https://handset.dev). Distributed the shadcn way: the CLI copies
the source into your repo, styled with your Tailwind tokens, yours to change.
```bash
# 1. Point the shadcn CLI at the Handset registry
npx shadcn@latest registry add @handset=https://ui.handset.dev/r/{name}.json
# 2. Install a complete texting surface + the server proxy route
npx shadcn@latest add @handset/messaging @handset/next-routes
```
Set `HANDSET_API_KEY` in your env, wire `resolveTenantId()` in the generated
route to your session, and render it:
```tsx
import { HandsetProvider } from "@handset/react";
import { Messaging } from "@/components/handset/messaging";
export default function MessagesPage() {
return (
<HandsetProvider>
<div className="h-[600px]">
<Messaging />
</div>
</HandsetProvider>
);
}
```
## What's in the registry
| Item | What it is |
| --- | --- |
| `@handset/messaging` | Two-pane texting surface — inbox + thread, responsive to mobile |
| `@handset/inbox` | Conversation list: previews, relative times, STOP badges, infinite scroll |
| `@handset/thread` | Message history: delivery states, opt-out handling, wired composer |
| `@handset/composer` | Draft box with live SMS segment counting and unicode detection |
| `@handset/next-routes` | Next.js proxy route — your API key never reaches the browser |
## Architecture
Two layers, like shadcn-on-Radix:
- **[`@handset/react`](packages/react)** (npm, versioned) — headless hooks:
`useConversations`, `useThread`, `useComposer`, plus segment math and a tiny
client. Logic we maintain; bring your own UI if you prefer.
- **The registry** ([`apps/www/registry`](apps/www/registry)) — the visual
components, copied into your project as source.
Components never hold API keys. They call proxy routes in **your** backend
(added by `@handset/next-routes`); your server holds the Handset key and your
existing session auth decides which tenant each signed-in user sees. The
Handset API handles the rest — numbers, delivery, threading, 10DLC compliance,
STOP/HELP.
## Development
```bash
pnpm install
pnpm --filter @handset/react build # hooks package
pnpm dev # docs site + live demo at localhost:3000
pnpm registry:build # compile registry.json → public/r/*.json
```
The docs site serves a mock Handset API (`apps/www/app/api/handset`) so the
demo works with zero setup.
## Requirements
- React 18+ (components target React 19 / Tailwind v4 / shadcn CLI ≥ 3)
- A [Handset](https://handset.dev) account for real traffic — the demo runs on
mock data without one
## Roadmap
See [ROADMAP.md](ROADMAP.md) — shipped components, what's next (call
summaries, MMS attachments, more framework proxies), and non-goals. Issues
with real use cases move items up the list.
## License
[MIT](LICENSE) © Handset HQ, Inc.
What people ask about handset-ui
What is handset-hq/handset-ui?
+
handset-hq/handset-ui is tools for the Claude AI ecosystem. Open-source React components for embedded texting, built on the Handset API. Install with the shadcn CLI. It has 1 GitHub stars and its last recorded update is dated 2026-08-18.
How do I install handset-ui?
+
You can install handset-ui by cloning the repository (https://github.com/handset-hq/handset-ui) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is handset-hq/handset-ui safe to use?
+
Our security agent has analyzed handset-hq/handset-ui and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains handset-hq/handset-ui?
+
handset-hq/handset-ui is maintained by handset-hq. The last recorded GitHub activity is dated 2026-08-18, with 0 open issues.
Are there alternatives to handset-ui?
+
Yes. On ClaudeWave you can browse similar tools at /categories/tools, sorted by popularity or recent activity.
Deploy handset-ui to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/handset-hq-handset-ui)<a href="https://claudewave.com/repo/handset-hq-handset-ui"><img src="https://claudewave.com/api/badge/handset-hq-handset-ui" alt="Featured on ClaudeWave: handset-hq/handset-ui" width="320" height="64" /></a>More Tools
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
The best-benchmarked open-source AI memory system. And it's free.
The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]