Skip to main content

The State of React: August and September 2026

· 11 min read
Alex Smith
Software Engineer
The State of React, August and September 2026, drawn as a synthwave radio-show cover: a glowing cyan React atom orbits a striped setting sun, equalizer bars rise along a pink horizon over a neon grid floor, THE STATE OF sits in gold above REACT in cyan and white, B2B SET reads in the top left corner, EP. 002 in the top right, and a caption along the bottom reads August + September 2026, React component libraries, compared

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.

Snapshot: September 2026

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/lightbox package, 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 than maxFiles now 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.focusVisible gives 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 in lib/utils.ts is now its own cn package (CLI 4.21, September 4). New projects get it from init, shadcn migrate cn moves 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.json and 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-bulma went 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: isFullwidth on every full-width component, group sizes on Buttons, Tags, and Message, isLight on Tag, touch-only responsive viewports, and the white-bis and white-ter colors.
    • The CommonJS build ships as .cjs with its own type declarations, so require() and TypeScript both resolve it cleanly.
  • Three tools grew up around the library:
    • bestax-mcp hit 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-migrate codemod 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 changed from July 27, 2026 to September 26, 2026Every other row held steady. Compare the full matrix.
✓ Dedicated component◐ Via prop / composition– NoneHighlighted cells changed (before → after); the rest of each row is shown for context.
Capabilitybestaxr-bulmaMantineMUIChakrashadcnR-Bootstrap
Buttons & actions
Action bar (bulk actions)newnonenonenonenonenone
Inputs & form controls
Password inputnonenonenonenonenone
Cascader (nested select)newnonenonenonenonenonenone
Tag / token inputnonenonenone
Date & time
Date inputnonenone
Date picker (popover)nonenone
Date range pickernonenonenone
Time input / pickernonenonenone
Calendar (inline)nonenonenone
Month pickernonenonenonenone
Year pickernonenonenonenone
Navigation
Burger / hamburgernonenonenone
Layout & grid
Scroll area (custom bars)nonenonenonenone
Splitter (resizable)nonenonenonenone
Data display
Tree viewnonenonenonenone
Lightbox (media viewer)newnonenonenonenonenonenone
Carouselnonenone
Chartsnonenonenone
Typography
Code block (syntax highlight)nonenonenonenone
Feedback & status
Gaugenonenonenonenonenone
Rich input & special
Rich text editornonenonenonenonenone

What the Matrix Says​

bestax is a superset of react-bulma-components

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 plays by different rules

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.

Spot something off?

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.