abaabil

Abaabil vs Headless UI

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 Headless UI, over the 13 it offers, comes to 68,004 B, or 9.2x the size.

What Headless UI is

Tailwind Labs’ unstyled component set, designed to pair with Tailwind CSS.

headlessui.com

Per component, gzipped

abaabil's column is its a11y tier, the one most applications should use. 13 components are directly comparable; the widest gap is select at 66x. Headless UI has no equivalent for 10 of the twenty-three (tooltip, file, slider, toolbar, breadcrumb, pagination, progress, alert, avatar, badge), so those are left out rather than counted as a win.

JavaScript weight in gzipped bytes, abaabil against Headless UI, per component.
ComponentabaabilHeadless UIratio
button5577,11913x
dialog58016,72529x
popover49530,45262x
menu1,12032,84029x
combobox1,09743,94340x
input5018,35217x
textarea5068,35217x
checkbox5349,87618x
radio44412,06727x
switch42310,49825x
select53034,80666x
accordion3649,97227x
tabs78611,12314x
all of them, one bundle7,36468,0049.2x

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.

Reading this fairly. Headless UI does not tree-shake per component: importing one widget pulls in a large shared core, so its rows move less than the others. That is a real property of the package rather than a claim that any one of its components contains that much code.

abaabil's figures are JavaScript only, the same as every other column here, and unlike Headless UI 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 Headless UI instead

You are on Tailwind and want components from the same people, with the same conventions and documentation style. The set is small and focused, which is a virtue if it covers what you need.

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.