Skip to main content

The State of React — July 2026

· 4 min read
Alex Smith
Software Engineer
The State of React — July 2026: React component libraries, compared

Picking a React component library is one of the bigger architectural calls in a project, and the honest answer to “which one” depends entirely on what you’re building. We maintain bestax, a component library for Bulma v1, so we spend a lot of time studying the field. This post maps it out fairly and in the open: every user-facing capability across seven React libraries, with each cell linking straight to that library’s own documentation so you can check our work.

It’s a point-in-time capture — the first edition of a series we’ll refresh regularly. We’re calling it The State of React, with a nod to Armin’s long-running radio show. Over time we’d like it to grow into a wider read on the React ecosystem; for now, it stays focused on component libraries.

Snapshot — July 2026

The table below reflects each library as of July 27, 2026. Component catalogs move fast — the latest edition of The State of React always has the freshest data.

In the ring: bestax (Bulma v1), react-bulma-components (the other Bulma wrapper), Mantine, MUI, Chakra UI, shadcn/ui, and React-Bootstrap.

Each row is a capability; read across to see who ships it. is a dedicated component, is available via a prop or by composition, and a muted dash means no first-party equivalent. The columns are abbreviated (hover a header for the full name); hover any cell for the component name, or click it to open that component’s docs.

Data as of July 27, 2026A newer edition may exist — see the latest edition.
Dedicated component Via prop / composition NoneHover a cell for the component name; click it to open the docs.
Capabilitybestaxr-bulmaMantineMUIChakrashadcnR-Bootstrap
Buttons & actions
Button
Button group
Icon buttonnone
Close / delete button
Copy buttonnonenonenonenonenone
File-trigger buttonnonenonenonenonenone
Toggle buttonnonenonenone
Segmented / toggle groupnonenone
Split buttonnonenone
Floating action buttonnonenonenonenonenonenone
Speed dialnonenonenonenonenonenone
Link-styled button
Inputs & form controls
Text input
Textarea
Number input (steppers)nonenonenonenone
Password inputnonenonenonenonenonenone
Checkbox
Checkbox groupnonenonenone
Radio
Radio groupnonenone
Switchnone
Select
Multi-selectnonenonenone
Autocompletenonenone
Combobox (headless)nonenonenonenone
Tag / token inputnonenonenone
Pills input (multi-value)nonenonenonenonenonenone
PIN / OTP inputnonenonenonenone
JSON inputnonenonenonenonenonenone
Slidernone
Range slider (dual thumb)nonenone
Angle slidernonenonenonenonenonenone
Ratingnonenonenone
Color inputnonenonenonenonenone
Color picker (palette)nonenonenonenonenone
File inputnone
Fieldsetnonenonenone
Field (label+control+error)
Input addons / adornments
Floating labelnonenonenonenonenone
Date & time
Date inputnonenonenone
Date picker (popover)nonenonenone
Date range pickernonenonenonenone
Date-time pickernonenonenonenone
Time input / pickernonenonenonenone
Calendar (inline)nonenonenonenone
Month pickernonenonenonenonenone
Year pickernonenonenonenonenone
Navigation
Navbar / app barnonenone
App shell (layout frame)nonenonenonenonenonenone
Breadcrumb
Menu (vertical nav)none
Dropdown menu (actions)
Pagination
Stepper / stepsnonenonenone
Tabs
Bottom navigationnonenonenonenonenonenone
Burger / hamburgernonenonenonenone
Table of contentsnonenonenonenonenonenone
Command palette / spotlightnonenonenonenonenone
Route progress barnonenonenonenonenonenone
Layout & grid
Containernone
Grid — flex 12-colnone
Grid — CSS gridnonenonenone
Grid cellnone
Stack (vertical)nonenone
Group (horizontal)nonenonenone
Flexnonenonenonenone
Centernonenonenonenonenone
Spacernonenonenonenone
Aspect rationonenone
Scroll area (custom bars)nonenonenonenonenone
Splitter (resizable)nonenonenonenonenone
Affix (sticky)nonenonenonenonenonenone
Sectionnonenonenonenonenone
Hero / bannernonenonenonenonenone
Level (space-between bar)nonenonenone
Media objectnonenonenonenonenone
Tile (Bulma grid tile)nonenonenone
Footernonenonenonenone
Box (polymorphic primitive)nonenonenone
Paper / elevated surface
Data display
Avatarnonenone
Avatar groupnonenone
Badge (corner indicator)nonenonenone
Tag / label
Chip (deletable / interactive)nonenone
Card
Table (static)
Data grid (sort/filter/page)nonenonenonenonenone
Description / data listnonenonenonenonenone
List (styled)none
Tree viewnonenonenonenonenone
Tree selectnonenonenonenonenonenone
Timelinenonenonenonenone
Kbd (keyboard key)nonenonenonenone
Number formatternonenonenonenonenone
Imagenone
Image list / gallerynonenonenonenonenone
Background imagenonenonenonenonenonenone
Figurenonenonenonenonenone
Iconnonenone
Theme icon (colored container)nonenonenonenonenonenone
Carouselnonenonenone
Chartsnonenonenonenone
Spoiler (clamp / expand)nonenonenonenonenonenone
Masonry layoutnonenonenonenonenonenone
Typography
Text / bodynone
Heading / titlenone
Subtitlenonenone
Inline codenonenonenonenone
Code block (syntax highlight)nonenonenonenone
Blockquotenonenonenonenone
Highlight / mark textnonenonenonenonenone
Rich-HTML style wrappernonenone
Dividernonenone
Inline semantic (em/strong/span)nonenonenone
Feedback & status
Alert / message box
Toast / snackbarnone
Progress (linear)
Spinner (standalone)none
Loading overlaynonenonenonenone
Ring / circular progressnonenonenonenone
Semi-circle progressnonenonenonenonenonenone
Gaugenonenonenonenonenone
Skeletonnone
Empty statenonenonenonenone
Overlays
Modal
Confirm / alert dialognonenone
Drawer / off-canvasnone
Swipeable drawernonenonenonenonenone
Popovernonenone
Hover cardnonenonenonenone
Tooltipnone
Backdrop / scrimnonenonenonenonenone
Disclosure
Accordion (grouped)nonenone
Collapse (single)none
Panel (heading + body)nonenonenonenonenone
Rich input & special
Dropzone (drag-drop upload)nonenonenonenonenone
Rich text editornonenonenonenonenonenone
Transfer listnonenonenonenonenonenone
Utilities & infrastructure
Theme / providernone
Global config providernonenonenonenone
CSS reset / baselinenonenonenonenonenonenone
Portalnonenonenonenone
Focus trapnonenonenonenonenone
Click-away listenernonenonenonenonenonenone
Transition primitivesnonenone
Scroll-reveal (on-scroll)nonenonenonenonenonenone
Visually hidden (a11y)nonenonenonenone
No-SSR guardnonenonenonenonenone
classNames utilitynonenone
How this was compiled — method & caveats
  • Rows are capabilities, not raw exports — sub-parts are folded into their parent and internal utilities dropped, so a column approximates each library’s user-facing catalog.
  • means the capability exists via a prop or by composing primitives, not as a dedicated named component; it is treated as “absent” when judging what a library uniquely ships.
  • Official companion packages count as first-party (Mantine @mantine/*, MUI @mui/lab & @mui/x-*). shadcn/ui is a copy-paste registry powered by Radix, cmdk, TanStack Table, and react-day-picker — not an npm dependency.
  • Matched by purpose, not name (e.g. bestax Badge → Mantine Indicator / MUI Badge). Competitor links are best-effort; a few resolve to a library’s component index rather than an exact page.

What the matrix says

bestax is a superset of react-bulma-components

Within the Bulma world there isn’t much contest left. react-bulma-components covers Bulma-core only and has been inactive since ~2021. bestax matches essentially all of it (bar Bulma’s Tile) and adds roughly 50 more components — date/time pickers, autocomplete, rating, tag input, slider, switch, Carousel, Steps, Avatar, Badge, Toast, Tooltip, Skeleton, Sidebar, Dialog, and Reveal.

A few honest takeaways across the wider field:

  • Mantine has the widest first-party catalog — rich inputs (color, PIN, JSON), plus Spotlight, ScrollArea, HoverCard, and a full app-shell layout system.
  • MUI owns heavy data and app-frame surfaces through its X packages: Data Grid, Charts, Tree View, and Date Pickers, plus FAB, Speed Dial, and Transfer List.
  • Chakra UI is the closest peer to bestax’s prop-driven styling model and is deep on form controls — but ships no date pickers, charts, carousel, or data grid.
  • React-Bootstrap is the smallest set: a faithful Bootstrap wrapper with no date/time pickers, rating, autocomplete, stepper, or tag input.
  • bestax covers the mainstream set and adds Bulma-idiomatic layout — Hero, Level, Media, Section, Panel — that most libraries leave to composition.
shadcn/ui plays by different rules

shadcn/ui looks broad because it’s a copy-paste registry, not an npm dependency: its behavior comes from Radix UI, cmdk, TanStack Table, and react-day-picker. You own the code it drops into your project — powerful, but a different maintenance model than the others here.

Corrections welcome

We compiled this by hand from each library’s component source and documentation, so it will have edges — a mislabelled cell, a capability we scoped wrong, or a competitor link that’s drifted. It’s meant to be honest, not perfect.

Spot something off?

Please open an issue — corrections make the next edition better.

See you in the next one.