abaabil

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.

www.radix-ui.com/primitives

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.

JavaScript weight in gzipped bytes, abaabil against Radix Primitives, per component.
ComponentabaabilRadix Primitivesratio
dialog58013,49323x
popover49523,62848x
menu1,12029,58326x
tooltip45918,81741x
checkbox5345,77211x
radio44410,22723x
switch4234,82711x
select53030,22357x
slider7059,62614x
accordion3648,65524x
tabs7869,07912x
toolbar7848,01410x
progress4932,8215.7x
avatar4603,0716.7x
all of them, one bundle7,36448,7126.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.

Compare against another library.