Skip to content
touchcn
Esc
navigateopen⌘Jpreview
On this page

Introduction

A shadcn-style mobile component library for Angular, React, and Vue — Material 3 on Android, liquid glass on iOS. Own your code.

touchcn is a component library for mobile web and cross-platform apps. Components adapt to the platform at runtime: Material Design 3 on Android, an iOS liquid-glass frosted look on iOS — one component set, no per-platform branching in your code.

Not a component package

touchcn follows the distribution model popularized by shadcn/ui — if you’re used to installing a component library from npm (Ionic, Angular Material, MUI), this works differently:

  • Components are source you own. npx touchcn add button copies the styled component source into your project. You import it from your own codebase and can edit every line — there is no opaque package to fight or fork.
  • Only the engine is an npm dependency. Platform detection, theming, and behavior primitives ship as small versioned packages; the components you copy are thin, styled compositions on top of them.
  • Updates still reach you. The CLI records what it installed: npx touchcn diff shows what changed upstream, and npx touchcn update applies it — three-way merging into files you’ve edited instead of overwriting them. See Updating components.

Why touchcn

Own your code

The CLI copies styled sources into your project. Edit them freely — nothing is imported from an opaque package.

Platform-adaptive

Material 3 on Android, iOS 26 liquid glass on iOS. The same components re-skin themselves at runtime.

Angular, React & Vue

Identical component set, one registry per framework. Same tcn-* classes and behavior across all three.

Updates without lock-in

The CLI pulls upstream fixes into your copied components — three-way merging files you’ve edited.

How it fits together

Four layers stack together — you depend on the first three and copy the fourth into your app:

  1. Core (@touchcn/core) — framework-agnostic platform detection, AppearanceManager, cn().
  2. Tailwind (@touchcn/tailwind) — a Tailwind v4 CSS-first token preset with .ios / .md namespaces.
  3. Headless (@touchcn/angular / @touchcn/react / @touchcn/vue) — unstyled behavior and accessibility primitives.
  4. Registry (touchcn add …) — styled components wiring layers 1–3 together, copied in via the CLI.

Where to next

Last updated on August 16, 2026

Was this page helpful?