The State of React: August and September 2026
This one's late. August came and went without an edition, so this is a combined August and September issue of The State of React, and I'm sorry for the gap.
This edition reflects each library as of September 26, 2026 and covers everything since the July edition. The full matrix now lives on its own comparison page, and the latest edition of The State of React always has the freshest data.
If you're new here, The State of React is a dated, side-by-side look at the mainstream React component libraries, capability by capability, with every cell linking to that library's own docs. I maintain bestax, a React component library for Bulma v1, so I've got a horse in this race. That's why every cell links out: you shouldn't have to take my word for any of it.
As for why it's late: most of August went into bestax itself (more on that below), and the edition slipped. Two months of release notes is a lot, so I've kept this to what you'd actually notice in an app.
In the ring: bestax (Bulma v1), react-bulma-components (the other Bulma wrapper), Mantine, MUI, Chakra UI, shadcn/ui, and React-Bootstrap.
What Shipped Since July
Mantine
Mantine shipped the most, by a wide margin.
- 9.5.0 landed July 27, the same day as the last edition, so it didn't make the table. It added a Cascader for nested selects, SunburstChart and BulletChart, and keyboard navigation for charts, on by default.
- 9.6.0 (August 31) added a new
@mantine/lightboxpackage, an ActionBar for bulk actions on selected items, and four more chart types: Gauge, Waffle, Matrix, and Candlestick. Notifications can stack now, too. One breaking change to know about: Dropzone moved to react-dropzone 20, so picking more files thanmaxFilesnow accepts files up to the limit instead of rejecting the whole batch. - The patch releases since then are bug and accessibility fixes.
MUI
A polish stretch. Material UI added no new components, and every release carried accessibility work.
- Material UI v9.3 (August 5): Toggle Button Group moves to roving-tabindex keyboard navigation, and Autocomplete announces its loading and no-options messages to screen readers.
- v9.4 (August 28): an opt-in
theme.focusVisiblegives every component the same keyboard focus ring, and Tooltip works on a disabled button without a wrapper element. - MUI X: Data Grid Premium picked up spreadsheet-style formulas and a Formula Bar in v9.12 (August 21), and Charts got better keyboard navigation in v9.13 (September 4). The Scheduler is still in beta.
Chakra UI
- 3.37.0 (August 28) added DateInput, a segmented field for typing dates, with a range mode and a time-only mode.
- Chakra v4 is still in the planning stage, and the discussion is public if you want to follow it.
I also owe Chakra a correction. The July edition said it ships no date pickers, charts, or carousel. That was already wrong on July 27: Chakra had a DatePicker, Carousel, Charts, TreeView, TagsInput, Splitter, ScrollArea, and CodeBlock. The table has all of them now, and Chakra's column went from 79 checkmarks to 90.
shadcn/ui
- The
cn()helper every shadcn project kept inlib/utils.tsis now its owncnpackage (CLI 4.21, September 4). New projects get it frominit,shadcn migrate cnmoves an existing one over, and nothing changes where you call it. - A new Questionnaire component handles multi-step question flows (surveys, onboarding, intake forms), for Base UI, Radix, and React Aria.
- The CLI can now read registries from
package.jsonand pull from private GitHub registries.
None of that moves a cell in the table.
React-Bootstrap
Quiet. The latest stable release is still 2.10.10 from May 2025, v3 has been in beta since September 2025, and the last commit to the main branch was this April. Nothing in the table moved.
react-bulma-components
Also quiet, and that's been true for a while. The last release is 4.1.0 from February 2022, which targets Bulma 0.9, and the last commit landed in January 2024. The July edition called it inactive since about 2021, which was a little early; those two dates are the accurate version.
bestax
This is the one I work on, and it's where August went.
@allxsmith/bestax-bulmawent from 5.8 to 5.16. There are no new components, so the bestax column didn't move, but there's a lot of fit and finish:- Modal caught up with Dialog on accessibility: Escape closes it, the page stops scrolling behind it, focus moves in and comes back out, and it can portal out of a parent that clips it (#617).
- Refs now forward on Button, LinkButton, Modal, Dropdown, and Navbar.
- Smaller Bulma-parity additions:
isFullwidthon every full-width component, group sizes on Buttons, Tags, and Message,isLighton Tag, touch-only responsive viewports, and the white-bis and white-ter colors. - The CommonJS build ships as
.cjswith its own type declarations, sorequire()and TypeScript both resolve it cleanly.
- Three tools grew up around the library:
bestax-mcphit 1.0 on August 12. It's an MCP server that hands an AI coding agent the component docs, props, and examples.- An ESLint plugin hit 1.0 on September 20. It flags bestax code that doesn't do what it looks like it does, such as a helper prop value that quietly renders nothing.
- The
bestax-migratecodemod already moved apps off react-bulma-components. It now handles rbx, bloomer, and plain Bulma class markup too.
And one correction on my own column: the July table said bestax had no burger menu. Navbar.Burger was there the whole time. It's marked now.
What Changed in the Table
The full matrix got long enough that it was hard to read inside a post, so it has moved to its own comparison page. There you can pick the libraries and feature groups you care about, search for a component, and hide the rows where your picks all agree. From here on, each edition shows just what changed since the last one.
That's the table below. Highlighted cells changed (before → after), and the rest of each row is there for context. Most of it is the Chakra correction, plus new rows for an action bar, a cascader, and a lightbox, the capabilities that showed up since July. I also fixed a batch of doc links that had moved, so every cell opens a live page again. Hover any cell for the component name, or click it to open that component's docs.
What the Matrix Says
Within the Bulma world there isn't much of a contest. react-bulma-components covers Bulma core only and hasn't shipped since February 2022. bestax covers everything it does except Bulma's old Tile and a polymorphic Element primitive, and adds 41 more rows of the full matrix: date and time inputs, autocomplete, rating, tag input, slider, switch, Carousel, Steps, Avatar, Badge, Toast, Tooltip, Skeleton, Sidebar, Dialog, and Reveal, among others.
A few honest takeaways across the wider field:
- Mantine still has the widest first-party catalog, and it's also the one moving fastest: a cascader, a lightbox, an action bar, and six chart types in two months.
- Chakra UI is a lot bigger than the last edition gave it credit for: DatePicker and the new DateInput, Carousel, Charts, TreeView, and Splitter. It's still the closest peer to bestax's prop-driven styling model. The big thing it doesn't ship is a data grid.
- MUI still 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. This stretch was about accessibility, not new surface.
- React-Bootstrap is still the smallest set: a faithful Bootstrap wrapper with no date or time pickers, rating, autocomplete, stepper, or tag input.
- bestax covers the mainstream set and adds the Bulma layout pieces most libraries leave to composition: Hero, Level, Media, Section, and Panel. The gaps worth knowing about: no popover, hover card, accordion, date range picker, or data grid.
shadcn/ui looks broad because it's a copy-paste registry, not an npm dependency. Its behavior comes from Base UI, Radix, or React Aria, plus cmdk, TanStack Table, and react-day-picker. You own the code it drops into your project. That's powerful, and it's a different maintenance model from everything else here.
Corrections Welcome
I compile this by hand from each library's source and docs, and this edition shows it has edges: it fixes a Chakra column that undersold Chakra by a lot, and a cell in my own column. It's meant to be honest, not perfect.
Please open an issue. Corrections make the next edition better.
One Last Track
Since you made it to the end, a confession: this series was never really named after React. It's named after A State of Trance, Armin van Buuren's weekly radio show, which turns 25 this year. Armin and Gryffin are my two favorite DJs, so here's what they've been up to while I was busy missing deadlines.
- Armin van Buuren just put out "Take Me Home" (September 25), a trance version of Red Hot Chili Peppers' "By the Way" that keeps the melody and rewrites the lyrics. He's also playing five-hour sets every Monday at UNVRS in Ibiza through October 5, and the A State of Trance festival is back at Rotterdam Ahoy on February 26 and 27, 2027. The radio show aired episode 1296 on September 24, so 1300 is about a month out.
- Gryffin teamed up with BUNT. on "World Away," with vocals from Inez. It's a single off his fourth album, ELEMENTS I, which is due this fall. He also headlines Red Rocks on November 13, with Oliver Heldens and AR/CO in support.
That's also why the cover says B2B this time. Two months, one set.
See you in the next one.
