- Category
- Developer Tools
- Rank
- No. 404Tools index
- Pricing
- Open Source
- Platform
- web
- Type
- TOOL
- Builder
- @shiweidu
- GitHub
- 3.4k stars
- Latest release
- @cloudflare/kumo@2.10.0
- Added
- Jul 4, 2026
About
Kumo is Cloudflare's open-source React component library for building modern, accessible web applications. Built on top of Base UI, it handles keyboard navigation, focus management, and ARIA attributes out of the box. It includes a CLI for querying component docs and a Figma plugin for design token sync.
What it does
Kumo is the React component set Cloudflare uses for its own dashboards, published to npm. Components wrap Base UI primitives, so keyboard handling, focus and ARIA come from that layer rather than hand-rolled code. Styling is Tailwind with semantic color tokens generated from a single theme configuration; light and dark switch through a CSS function instead of a dark variant. A command-line tool ships alongside it: it lists components, prints their documented props, and copies composite page-level blocks into your repository as editable source. Machine-readable component metadata is derived from the TypeScript types and shipped inside the package.
Why it's ranked here
What sets this apart from the average component library is the generated metadata: props, variant values and demo code are derived from the TypeScript source and published for agents to read, and the same data answers a terminal query. That is a real reason to pick it if you want a model writing consistent UI code. The cost is coupling. Cloudflare branding components are first-class exports, one theme targets FedRAMP, the package is ESM only, and the workspace pins a recent Node major. Fine inside a Cloudflare-shaped stack, awkward as a neutral house style.
What's good
Supply chain hygiene is unusual and welcome: the workspace refuses to install any dependency published in the last three days, with a short explicit exclusion list. Token discipline is enforced by five custom lint rules rather than a style guide nobody reads, so raw color classes and dark variants fail the check. Imports are per component, so you can pull one widget without the rest. Base UI primitives are re-exported for cases where the styled wrapper is too opinionated. Contributions require a changeset, validated by a pre-push hook.
Tradeoffs
The toolchain is all-in on one vendor: build, test, lint and format run through a single unified CLI, so contributing means adopting it rather than your usual setup. ESM only, no CommonJS build. A specific icon package is a required peer dependency. Two exported components are already marked deprecated in the entry module, which suggests the API is still moving. Blocks are copied into your repository rather than imported, so you own their maintenance after install. Generated registry files are absent from the tree; they arrive at build time and in the published package.
How to use it well
Best fit: a team building an internal console or admin UI in React that wants accessibility handled and is happy to inherit someone else's token names. It earns a slot when agents write your components, because the terminal documentation command and the shipped metadata give the model an exact prop surface instead of guesswork. It does not cover routing, data fetching or form state, and it is not a white-label system: the logo components and default palette are Cloudflare's. Bring your own icons, since one icon package is required.
Technical notes+
The package entry at packages/kumo/src/index.ts re-exports roughly forty component modules plus the cn utility and deliberately excludes blocks. packages/kumo/src/command-line/cli.ts is a plain switch over argv covering init, blocks, add, ls, doc, docs, migrate and ai, with no argument-parser dependency. packages/kumo/scripts/component-registry/index.ts drives codegen: it discovers components on the filesystem, runs ts-json-schema-generator against each props type, follows $ref chains and merges allOf intersections, folds in variant descriptions and classes, and caches by content hash with eight components processed concurrently. packages/kumo/scripts/theme-generator/index.ts writes theme CSS from a config module and can print a token rename map that the migrate command consumes. lint/kumo-plugin.js registers the five oxlint rules. packages/kumo/src/catalog/index.ts exposes a JSON-UI runtime that validates model-generated trees against generated schemas. packages/kumo/src/code/server.tsx wraps Shiki with eighteen pre-bundled languages and two hardcoded themes. pnpm-workspace.yaml sets the release-age floor and the catalog of pinned dependency ranges.
Observed
- License
- MIT, Cloudflare, Inc. (LICENSE)
- Language
- TypeScript and React, ESM only, no CommonJS build
- Install surface
- npm package @cloudflare/kumo, plus subpath imports per component and per primitive
- Interfaces
- React library and an npx CLI: init, blocks, add, ls, doc, docs, migrate, ai
- Peer dependencies
- react, react-dom, @phosphor-icons/react
- Repository shape
- pnpm monorepo: component library, Astro docs site, Figma plugin, screenshot worker
- Supply chain policy
- pnpm-workspace.yaml rejects dependencies published within the last three days, with a named exclusion list
- Lint rules
- lint/kumo-plugin.js registers five custom oxlint rules covering color tokens, dark variants, variant shape, cross-package imports and flow rendering
- Accessibility base
- Built on Base UI, whose primitives are re-exported
- Agent surface
- Component registry generated from TypeScript types, queryable from the CLI and shipped in the package
Read from README.md, package.json, LICENSE, AGENTS.md, CONTRIBUTING.md, pnpm-workspace.yaml, packages/kumo/src/index.ts, packages/kumo/src/command-line/cli.ts, packages/kumo/src/registry/index.ts, packages/kumo/src/catalog/index.ts, packages/kumo/scripts/component-registry/index.ts, packages/kumo/scripts/theme-generator/index.ts, packages/kumo-docs-astro/src/pages/cli.mdx, lint/kumo-plugin.js, packages/kumo/src/code/server.tsx.
What it can do
Provide accessible, design-system-compliant UI components for React applications
React project with component imports → Pre-built UI components with keyboard navigation, focus management, and ARIA attributes
Enable granular component imports for tree-shaking
Individual component import statements → Optimized bundle containing only the imported components
Re-export Base UI primitives
Base UI primitive references within a Kumo project → Accessible low-level UI primitives available through a single Kumo entry point
Query component documentation via CLI
CLI command specifying a component name or topic → Component documentation and usage information in the terminal
Synchronize design tokens between Figma and the codebase
Design tokens defined in a Figma file → Synchronized design tokens exported for use in the React component library
Tags
Tech Stack
Comments (0)
No comments yet
Indexed by a proprietary survey. Corrections welcome.
