Abaabil vs Radix Primitives
Both libraries, measured the same way on the same day: each entry point bundled with its own module graph, gzipped, React treated as external. All twenty-three abaabil components together come to 7,364 B. The same set from Radix Primitives, over the 14 it offers, comes to 48,712 B, or 6.6x the size.
What Radix Primitives is
Unstyled, accessible behaviour primitives from WorkOS. You get the keyboard handling, focus management and ARIA wiring, and you write every line of the CSS yourself.
Per component, gzipped
abaabil's column is its a11y tier, the one most applications should use. 14 components are directly comparable; the widest gap is select at 57x. Radix Primitives has no equivalent for 9 of the twenty-three (button, combobox, input, textarea, file, breadcrumb, pagination, alert, badge), so those are left out rather than counted as a win.
| Component | abaabil | Radix Primitives | ratio |
|---|---|---|---|
| dialog | 580 | 13,493 | 23x |
| popover | 495 | 23,628 | 48x |
| menu | 1,120 | 29,583 | 26x |
| tooltip | 459 | 18,817 | 41x |
| checkbox | 534 | 5,772 | 11x |
| radio | 444 | 10,227 | 23x |
| switch | 423 | 4,827 | 11x |
| select | 530 | 30,223 | 57x |
| slider | 705 | 9,626 | 14x |
| accordion | 364 | 8,655 | 24x |
| tabs | 786 | 9,079 | 12x |
| toolbar | 784 | 8,014 | 10x |
| progress | 493 | 2,821 | 5.7x |
| avatar | 460 | 3,071 | 6.7x |
| all of them, one bundle | 7,364 | 48,712 | 6.6x |
The last row matters more than any single one above it. A library with a large shared runtime pays for it once, so the gap always narrows as you use more of it. Quoting only the widest row would be the easiest way to mislead you with real numbers.
abaabil's figures are JavaScript only, the same as every other column here, and unlike Radix Primitives it arrives already styled. That cost is real and tracked separately rather than folded in: the whole stylesheet is 5,217 B gzipped if you import all of it. The method, and every library at once, is on the Why page.
When to choose Radix Primitives instead
You need a primitive abaabil does not have, or you want the ecosystem around it. Radix covers ground abaabil deliberately does not, and its collection has years of edge cases worked out of it in production. If your design system is already built on Radix, the cost of the runtime is a cost you have already paid.
abaabil is twenty-three components and stops there. It has no date picker, no data grid, no virtualised list, and no plans for any of them. If the thing you need is on that list, the size comparison above is irrelevant to your decision, and you should take the library that has it.
If abaabil is the right fit
Setup is four steps and the first one is npm i abaabil. Every component has its own page with a live example at the tier you would actually import. Or read when not to use it first, which is the section written to talk you out of it.