GitHub

Bundle size and a11y comparison

Numbers are gzipped, post-tree-shake bundle deltas for a single-component import in a fresh Vite + esbuild project. Library version captured below. React libraries are included for context — they ship a different runtime; the comparison is at the user's surface, not internal architecture. Update by running scripts/refresh-competitor-sizes.mjs (re-builds each fixture and re-measures).

Toggle

Kumiki subpath: @kumiki/components/toggle

LibraryVersionFrameworkgzipBar
Kumiki0.x.x-previewSvelte 51.1 KB
Bits UI2.16Svelte 5800 B
Melt UI0.86Svelte 51.4 KB
React Aria1.5React2.1 KB
Radix UI1.1React1.7 KB

Dialog

Kumiki subpath: @kumiki/components/dialog

LibraryVersionFrameworkgzipBar
Kumiki0.x.x-previewSvelte 53.1 KB
Bits UI2.16Svelte 51.5 KB
Melt UI0.86Svelte 52.4 KB
React Aria1.5React2.4 KB
Radix UI1.1React3.1 KB
Zag.js1.7Framework-agnostic core3.7 KB

Combobox

Kumiki subpath: @kumiki/components/combobox

LibraryVersionFrameworkgzipBar
Kumiki0.x.x-previewSvelte 54.1 KB
Bits UI2.16Svelte 54.4 KB
Melt UI0.86Svelte 55.7 KB
React Aria1.5React4.8 KB
Zag.js1.7Framework-agnostic core5.3 KB

Tabs

Kumiki subpath: @kumiki/components/tabs

LibraryVersionFrameworkgzipBar
Kumiki0.x.x-previewSvelte 52.2 KB
Bits UI2.16Svelte 51.3 KB
Melt UI0.86Svelte 52.1 KB
React Aria1.5React2.3 KB
Radix UI1.1React2.6 KB

Select

Kumiki subpath: @kumiki/components/select

LibraryVersionFrameworkgzipBar
Kumiki0.x.x-previewSvelte 52.8 KB
Bits UI2.16Svelte 53.0 KB
Melt UI0.86Svelte 54.3 KB
React Aria1.5React3.6 KB
Radix UI1.1React4.0 KB

Accessibility & i18n features

Headline capabilities each library ships out of the box. Sourced from docs/market-research.md §4.5–§7. As of .

FeatureKumikiBits UIMelt UIRadix UIReact AriaZag.jsHeadless UI
Standard Schema validation Kumiki's form-field accepts any Standard Schema validator (Zod / Valibot / ArkType) without per-library adapters.······
Non-Gregorian calendars Kumiki uses @internationalized/date as a peer dep; calendars (Islamic, Hebrew, Buddhist, …) are tree-shaken per consumer.·····
RTL keyboard inversion Kumiki inverts physical-direction keys (Tabs ArrowRight / Slider) inside the FSM, driven by LocaleProvider's `dir`. Bits / Melt / Headless UI rely on consumer-supplied `dir` and don't always flip the keyboard contract.
APG keyboard tests in CI Kumiki ships per-component .kb.ts specs that exercise each WAI-ARIA APG keyboard interaction in Playwright on every PR.·
Screen-reader CI (Guidepup) Kumiki schedules nightly Guidepup runs against macOS-VoiceOver + Windows-NVDA. Radix / React Aria document manual SR testing but do not gate CI on it.····
Target ARIA version Kumiki tracks WAI-ARIA 1.3 (suggestion / comment / switch role refinements). Per market-research §7.1.31.21.1/1.21.21.21.21.2

Legend: shipped   partial   manual only / opt-in   · not provided

Caveats

  • Sizes are 'incremental' — what the user pays after their first kumiki import (foundations like @kumiki/runtime are amortized). The first-import number is ~1 KB higher.
  • React libraries (Radix, React Aria) appear here for cross-ecosystem context, not as direct head-to-head competitors. Their numbers exclude React itself, which is already in a typical React user's bundle.
  • Numbers are gzip — Kumiki's CI gates use brotli, which is typically ~10–15% smaller. We use gzip here because it is the comparison the rest of the ecosystem publishes.
  • Competitor numbers are reproduced from the user-supplied market research (see docs/market-research.md §7). Refresh by running scripts/refresh-competitor-sizes.mjs against fresh installs of each package.

Bundle data last updated: . Feature matrix as of . Source data: apps/docs/src/data/competitor-sizes.json.