mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Webevaluationupdated 30 Aug 2026

kumo review

Kumo is Cloudflare's React component library for building web interfaces with a consistent visual system. It wraps Base UI primitives, supplies styles and semantic color tokens, and handles keyboard, focus, and ARIA behavior that application teams would otherwise assemble themselves.

+22 / 3dstars / 7d
Verdict

Our Kumo checkout installed 961 packages, but its build failed in 9 seconds and 14 of 1,275 tests failed, so contributors should expect repository work before a clean baseline. The published library is still worth trying for a React product that deliberately wants Cloudflare's design language and Base UI behavior. Check light-mode contrast and run the exact component set through your accessibility suite before standardizing on it.

We ran it

Lab card: what happened when we ran kumoScreenshot of kumo (kumo-ui.com)
Install✓ · 41s961 packages · 982 MB
Build✗ · 9s
Tests✗ · 33s1061 passed · 14 failed · 200 skipped of 1275 (vitest)
Repo703 files~139,188 lines of source · 5.7 MB · 12 CI workflows

Answers from our run

Does kumo build from source?

Dependencies installed in 41 seconds (961 packages), and the build failed. We cloned commit f74936f into a clean Debian container with 3 CPUs and no project-specific setup.

Do kumo's tests pass?

Not all of them: 1061 of 1275 passed and 14 failed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use kumo?

Teams that need a neutral visual base: the README describes Kumo as Cloudflare's design-system-compliant library, so its defaults carry Cloudflare's product language.

What are the alternatives to kumo?

shadcn/ui, Radix Primitives, Material UI. Our Kumo checkout installed 961 packages, but its build failed in 9 seconds and 14 of 1,275 tests failed, so contributors should expect repository work before a clean baseline.

Setup2/541-second install, followed by a docs import build failure
Docs4/5Usage is concise; contributor detail moves into AGENTS.md
Community4/53,760 stars with an August 2026 push and active reports
Maturity3/5Versioned releases exist, but our build and 14 tests failed

Who it’s for

React teams that want Cloudflare's interface style and are comfortable adopting its design tokens.
Product developers who prefer packaged components plus granular imports over copying component source into each application.
Teams already using pnpm and willing to work inside a TypeScript monorepo when contributing.
Designers and engineers who can use the included Figma plugin and token-sync workflow.

Who it’s NOT for

Teams that need a neutral visual base: the README describes Kumo as Cloudflare's design-system-compliant library, so its defaults carry Cloudflare's product language.
Projects that cannot take React, React DOM, and Phosphor Icons as peer dependencies; the installation section names all three.
Accessibility programs that accept defaults without verification: open issue 733 reports the stock light-mode brand text token at 2.58:1 contrast against white.
Contributors who need a clean build from this checkout: our build stopped because the docs package could not import @cloudflare/kumo/scripts/theme-generator/config.
Users seeking a source-copy workflow like shadcn/ui: Kumo is installed as a package, and its README documents imports rather than vendoring components.

Setup reality

Our pnpm install succeeded in 41 seconds, adding 961 packages and using 982 MB on disk. The build failed after 9 seconds because the Astro docs package could not import @cloudflare/kumo/scripts/theme-generator/config. Tests failed after 33 seconds: 1,061 passed, 14 failed, and 200 were skipped out of 1,275.

Application use needs React, React DOM, Phosphor Icons, the Kumo stylesheet, and the package itself. Contributors use pnpm workspaces; the optional Figma token-sync build needs FIGMA_TOKEN and can also take FIGMA_FILE_KEY. Ordinary component use needs no hosted service or credential.

This is a monorepo with 5.7 MB checked out but a 982 MB installed tree in our container. The docs site uses Astro, and the failed build came from that workspace. Consumers should separately verify the published package in their own bundler rather than treating the monorepo build result as proof that package imports fail.

Kumo packages Cloudflare's interface choices for React

Kumo provides styled React components on top of Base UI. The library handles keyboard navigation, focus management, and ARIA attributes, while Cloudflare's tokens determine color and presentation. Consumers import components such as Button, Input, and Dialog, then load one stylesheet. Granular paths such as @cloudflare/kumo/components/button are available when an application wants narrower imports. Kumo also re-exports Base UI primitives for cases where its packaged components do not cover the required interaction.

That arrangement is most attractive to a team that wants Cloudflare's design decisions, not merely accessible behavior. The repository had 3,760 stars and an MIT license when fetched, and the package has a normal versioned release line. A product with a distinct brand will still have to audit every token and state it overrides. If the goal is a neutral behavior layer, importing Base UI or Radix directly may leave less Kumo-specific styling to undo.

The package install is short, while the workspace is heavy

Application setup in the README is four packages: Kumo plus React, React DOM, and Phosphor Icons. A component import and @cloudflare/kumo/styles provide the first rendered control. The command-line package can list components or print their documentation, which is handy for an engineer or coding agent working without the live documentation site open. No Cloudflare account is listed as a runtime requirement.

Our clean install finished in 41 seconds, but pnpm added 961 packages and occupied 982 MB. That is contributor-workspace cost rather than proof that a production bundle ships anything close to 982 MB. The repository itself contained 703 files, about 139,188 source lines, and 5.7 MB checked out. Teams evaluating the published package should measure their own client bundle, because the supplied lab run contains no browser bundle-size result.

What happened when we ran it

Our sandbox installed commit f74936f successfully in 41 seconds. The build then failed with exit code 1 after 9 seconds. Astro could not load its config because packages/kumo-docs-astro/src/lib/vite-plugin-kumo-colors.ts imported @cloudflare/kumo/scripts/theme-generator/config, which the build could not find. pnpm stopped at the first failing workspace, the Kumo Astro documentation package.

Tests also exited 1 after 33 seconds. Vitest reported 1,061 passed, 14 failed, and 200 skipped out of 1,275. The failures were concentrated in 3 files: 2 catalog tests, 3 add-command tests, and 9 blocks-command tests. The log tail does not state why those assertions failed, so it would be speculation to connect them to the missing docs import. Both commands independently failed in the fresh Debian container.

The scan found 12 CI workflow files and pnpm workspaces, with no Dockerfile and no root tests directory. We ran the checkout with 3 CPUs, 8 GB of RAM, Node 22, no secrets, and no privileged container access. That environment establishes a reproducible repository result. It does not show whether a fresh consumer application can install the released package and render an individual Button successfully.

The default light brand text has a documented contrast problem

Kumo's accessibility pitch deserves testing at the token level. Open issue 733 checks the published 2.10.0 stylesheet and reports that the orange --text-color-kumo-brand token has a 2.58:1 contrast ratio on the white light surface. The issue compares that result with the 4.5:1 WCAG AA threshold for normal text. It also reports 7.42:1 in dark mode, isolating the complaint to the light branch.

This does not make every Kumo component inaccessible. It does mean the phrase handles accessibility should be read as behavior support, not an exemption from checking colors, labels, focus order, zoom, or application composition. Release 2.12.0 fixed disabled and loading semantics for Toolbar.Button, another reminder that component accessibility changes over time. Pin the package, test both color modes, and rerun checks during upgrades.

Base UI supplies behavior, while Kumo owns the opinionated layer

The escape valve is useful. Base UI primitives are re-exported, so an application can use a Popover primitive when Kumo's complete component is too prescriptive. That reduces the need to bring in another primitive dependency for one exception. It can also blur ownership if half a screen uses finished Kumo components and the rest uses locally styled primitives. Teams need rules for when to stay inside the component catalog and when custom composition is acceptable.

Version 2.12.0 illustrates that the public surface is still changing. It added a Text heading variant, deprecated numbered heading variants, and marked MenuBar for future removal in favor of segmented Tabs. The same release added scrollToItem to the sidebar API and made reduced-motion behavior explicit for smooth scrolling. These are sensible changes, but consumers should expect migrations rather than assuming the current names will remain untouched.

The Figma path is optional and requires its own credential

The monorepo includes a Figma plugin and an optional token-sync step. Contributors copy an example environment file and provide FIGMA_TOKEN, with FIGMA_FILE_KEY listed as optional, before building that workspace. Product teams without Figma can ignore this route. Teams that use it should keep the token out of the repository and decide which side, code or design file, is authoritative when values disagree.

GitHub recorded a last push on August 28, 2026, eight days after release 2.12.0. The repository showed 49 combined issues and pull requests, not 49 confirmed defects. Recent reports cover animation behavior and color contrast, while the release notes contain fixes across component semantics and visual states. Kumo is active enough to evaluate, but our failed 9-second build and 14 failed tests make a clean contributor checkout a requirement to verify, not an assumption.

Alternatives

ProjectWhat it isPick it when
shadcn/ui gh↗A component collection that copies editable source into your application.pick this instead when owning and changing each component matters more than receiving a versioned Cloudflare package.
Radix PrimitivesLow-level React primitives focused on behavior and accessibility.pick this instead when you want to supply the complete visual system yourself.
Material UI gh↗A mature React component suite with a broad component catalog and theme system.pick this instead when breadth, long-established documentation, and a larger user base outweigh a Cloudflare-specific look.

What people are saying

  1. [github-trending] cloudflare/kumo

Sources

  1. Kumo README
  2. GitHub repository facts
  3. Kumo 2.12.0 release
  4. Light-mode brand text contrast issue
  5. Tabs indicator animation issue

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →