The State of React: November 2026
Ant Design joins the table this month, so it's eight libraries now. The rest is a big stretch for bestax, a big Mantine release the day before this snapshot, and a command palette from Chakra.
This edition reflects each library as of November 10, 2026 and covers everything since the October edition. The full matrix lives on its own comparison page, and the latest edition of The State of React always has the freshest data.
If you haven't read one of these before, 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. It isn't affiliated with Devographics' annual State of React survey, which shares the name.
In the ring: bestax (Bulma v1), react-bulma-components (the other Bulma wrapper), Ant Design, Mantine, MUI, Chakra UI, shadcn/ui, and React-Bootstrap.
Ant Design Joins the Table
Leaving Ant Design out made this table look smaller than the real field. Its React package, antd, had about 5.3 million npm downloads in the week of November 3. Of the other libraries here that you install as a dependency, only MUI's @mui/material had more, and Mantine's core package had about 3.7 million. The repo goes back to 2015 and calls it "an enterprise-class UI design language and React UI library." Its catalog reads that way, heavy on tables, forms, trees, and pickers.
How I filled in its column:
- It follows the current release, 6.7.0, and the
antdpackage first. - Official companion packages count too, the same rule that counts Mantine's
@mantine/*and MUI's@mui/x-*. That's@ant-design/iconsfor icons, Ant Design X for chat bubbles, agent traces, and code highlighting, and Ant Design Charts for charts and a gauge. - Pro Components doesn't count. It's a layer of page-level business components built on top of
antd, and its stable release only supportsantd4 and 5 anyway. Ant Design Mobile doesn't count either, since it's a separate library. - A few 6.x deprecations decide cells.
Button.Groupgave way toSpace.Compact, the input addons moved toSpace.CompactandSpace.Addon, and theListcomponent gave way toListy, so those are what the column links.
It lands on 140 of the 180 rows: 90 with a dedicated component and 50 through a prop, a mode, or a docs demo. That's the most ◐ cells of any column, and it says something about how Ant Design is built. It leans on a few big components with a lot of modes. DatePicker picks a month, a year, a week, or a quarter through its picker prop. Select does multi-select and tags through mode. Typography does copy buttons, keyboard keys, and text clamping through props.
It's the only library in the table with a dedicated transfer list, and it's one of two with a cascader, a product tour, and a speed dial. Where it's empty is mostly the low-level pieces: no portal, focus trap, or transition primitive you can use on their own, no CSS grid, scroll area, or container, and no command palette. It hands you the finished component, not the parts to build your own.
Some names will trip you up if you're coming from elsewhere. Anchor is a table of contents, message and notification are toasts, Space is a gap container, Layout is the app shell, and Empty is the empty state.
As for this month, 6.7.0 (November 4) adds no components, but it has a long list of props and accessibility work. It adds a suffix prop that replaces suffixIcon on the pickers and selects, accessible names for clear buttons, keyboard and screen reader fixes in DatePicker, TimePicker, Select, and Table's row selection, and a shimmer prop on Typography. 6.6.7 (October 20) and 6.6.8 (October 26) are fixes.
To see the whole column, filter the comparison page to bestax and Ant Design, or add whichever libraries are on your own shortlist.
What Shipped since October
Mantine
Mantine shipped the most again, and most of it came out the day before this snapshot.
- 9.8.0 (November 9) added a pile of components:
- Mentions, a textarea that opens suggestions when you type
@or another trigger. - PhoneInput, an international phone field with a country selector and formatting masks. Flags aren't bundled, so you draw them with
renderFlag. - Diff in
@mantine/code-highlight, which compares two strings in a unified or side-by-side view. - WeekPicker and QuarterPicker, each with an input version, plus MaskedDateInput, which types a date into separate masked fields for the day, month, and year.
- A new
@mantine/emojipackage with an EmojiPicker, an input, and a popover. It ships no emoji data, so you install a data package and pass it in (getting started).
- Mentions, a textarea that opens suggestions when you type
- One behavior change to know before you upgrade: the
@mantine/datespickers now return focus to the input when the dropdown closes. That's usually what you want, but a test that checks focus after closing may notice. - 9.7.3 (October 17), 9.7.4 (October 25), and 9.7.5 (November 4) are fixes plus small opt-in props, like
loaderPropson every input.
MUI
No new components this stretch, and no Material UI release at all.
- Material UI is still on v9.5 from October 9, with v10.0.0-alpha.0 on npm's
nexttag. MUI's main branch has picked up more breaking changes for v10 since that alpha. The biggest is that Stack, and the action rows in Dialog, Card, and Accordion, now space their children with CSSgap, so Stack'suseFlexGapprop goes away. None of it is published yet, and I still haven't seen a date for v10. - MUI X shipped v9.16 (October 20) and v9.17 (October 30). Charts Premium can export to Excel, Data Grid Premium has computed columns, and Data Grid Pro's row and column reordering now works with touch and a pen.
- The Scheduler got a confirmation before deleting an event and right-to-left support. If you're already on its beta, though, the one in 9.17 has breaking changes: recurring events in the Event Timeline are opt-in now, and
dateLocaletakes a locale string instead of a date-fns object. The Scheduler is still in beta, and Chat is still in alpha.
Chakra UI
The release that was waiting last month shipped.
- 3.38.0 (November 3) added Command, a searchable command menu that works inline or in a dialog, along with a
useHotkeyshook to open it with a shortcut andKbdGroupto show the shortcut's keys. - The announcement calls it backward compatible with two things to check.
Field.ErrorTextnow links to its field througharia-describedby, so a test usingtoHaveAccessibleErrorMessageshould switch totoHaveAccessibleDescription. AndPopover.Titlerenders anh2now. - The v2-to-v3 codemod was rebuilt too, with a dry run and new transforms.
- On v4, still no date and no beta. The v4 discussion was rewritten into a plan on October 31: Panda as the only styling engine, no Emotion in core, and Server Components without a provider. It still waits on a stable v6 of Ark UI, which is at its first prerelease from October 6.
shadcn/ui
One changelog entry this stretch, on October 14, and it's all about UI for AI agents.
- Trace lists the steps an agent takes, like reasoning, tool calls, and sources, with running and error states.
- Code Block shows code, terminal output, logs, and diffs. Syntax highlighting is an opt-in hook.
- AI Elements are 21 copy-in patterns built from those two and the rest of the registry: chat, a prompt input, reasoning, plans, a file tree, and more. shadcn says they replace AI SDK Elements, which it plans to deprecate.
- The CLI shipped 4.21.5 through 4.23.0. If you only run the CLI, nothing changes. If you import from the package, 4.22.0 moved its schemas to Zod 4, and 4.23.0 moved its MCP server to version 2 of the MCP SDK.
React-Bootstrap
A little movement. v3.0.0-beta.6 (October 22) is two bug fixes, and it's the first v3 prerelease in 13 months. The stable release is still 2.10.10 from May 2025.
Last month I said the newest commit on the main branch was from April. That's out of date now. From October 25 to 31 the maintainers merged a week of work, including two breaking v3 fixes: Navbar no longer forces the light variant, which fixes it on dark themes, and stacked progress bars get Bootstrap's own wrapper. None of it is released yet.
react-bulma-components
No change. The last release is still 4.1.0 from February 2022, built for Bulma 0.9, and the last commit is still from January 2024.
bestax
This is the one I work on, and it was a big month. The October edition ended with a list of gaps in my own column: a data grid, a tree view, a command palette, a color picker, charts, a dropzone, and a rich text editor. Five of those seven shipped.
@allxsmith/bestax-bulmawent from 5.31 to 5.67, with 36 new components. The ones that closed October's gaps:- DataTable, a table you can sort, search, page, and select, built on the
Tableparts. ItsuseDataTablehook is public, and it can write its rows out as CSV. - TreeView, with checkbox modes and branches that load their children, and TreeSelect, a form field that picks from one.
- Command, a search over things to do, inline or as a command palette.
- ColorPicker, ColorInput, and ColorSwatch.
- Dropzone, an area to drop files on that checks and lists them.
- DataTable, a table you can sort, search, page, and select, built on the
- More form controls: SegmentedControl, Combobox, PinInput, PasswordInput, CheckboxCard and RadioCard, and Fieldset.
- Layout: AppFrame, the frame an app's pages sit in, plus Stack, Group, Center, Flex, Splitter, ScrollArea, and Affix.
- Showing data: Timeline, DescriptionList, Stat and Stats, NumberFormatter, RingProgress, Kbd, EmptyState, Lightbox, and TableOfContents.
- Buttons: IconButton, which requires a name, and CopyButton.
- LocaleProvider sets the language and writing direction, and the date pickers, number formatting, and search matching all read it.
- For Next.js, the client modules are marked
'use client'now, so a Server Component can import bestax, and the parts of compound components likeCard.Headerare exported by name for the places a Server Component can't reach them (setup). - The tools kept going too:
- create-bestax went from 4.2 to 4.7, with templates for React Router, TanStack Router, the Next.js App Router, and the React Compiler. New projects lint with Oxlint, with ESLint one flag away, and the TypeScript ones get TypeScript 7.
bestax-migrateconverts a whole Bulma HTML page now, not just JSX that uses Bulma classes.- The docs have a Templates page with Bulma templates rebuilt with bestax, and live examples open in StackBlitz or CodeSandbox.
Charts and a rich text editor are still missing, and five of the six rows Mantine's release added are gaps in my column too. The sixth, a phone input, is only an example on the Input page. The order I'm working through them in is public.
What Changed in the Table
The table below shows only the rows that moved since October. Highlighted cells changed because something shipped: 35 cells in bestax's column, Chakra's Command, and shadcn/ui's Code Block. There are no corrected cells this time.
Twelve rows are new, and they're not all the same kind of new:
- Six are from Mantine's 9.8.0: mentions, a phone input, an emoji picker, a diff viewer, a week picker, and a quarter picker. Most of the other marks on those rows were already there. Ant Design's
Mentionsand its week and quarter modes, for example, predate the release. The exception is shadcn/ui's diff lines, which came with this month's Code Block. - Two shipped this month too: bestax's Stat (Chakra already had one) and shadcn/ui's Trace.
- Four are matrix additions, things Mantine was already shipping in October that had no row: a masked input, a JSON viewer, a rolling number, and a product tour.
The Ant Design column shows up on every row. It's new, so on the rows October already had there's nothing to compare it against, and its cells there aren't highlighted.
One row got a new name, too. Affix (sticky) is now Affix (fixed or sticky), since Mantine's Affix, and now bestax's, pins an element to a corner of the viewport rather than making it sticky. It's a rename, so the table compares the row with its old self, and the change in bestax's cell is the new Affix component.
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 an unstyled Element primitive, and adds 83 more rows of the full matrix: date, range, and time inputs, autocomplete, a data table, a tree view, a command palette, a color picker, a dropzone, Carousel, Steps, Toast, Tooltip, Popover, Timeline, and AppFrame, among others.
A few honest takeaways across the wider field:
- Mantine still has the widest first-party catalog, 163 of 180 rows, and it's still the one moving fastest. Six of this edition's new rows exist because of one Mantine release.
- Ant Design comes in at 140 rows, close to Chakra and bestax, but it gets there differently: fewer components, each with more modes. If your app is a back office full of tables, forms, and trees, it's built for exactly that.
- MUI still owns the heavy data and app surfaces through its X packages: Data Grid, Charts, Tree View, Date Pickers, and the Scheduler beta. This stretch was features in X and no Material UI release, with v10 still an alpha.
- Chakra UI closed its command palette gap with Command. It's still the closest peer to bestax's prop-driven styling model, and it still has no dedicated data grid.
- React-Bootstrap is still the smallest set, a faithful Bootstrap wrapper, but its main branch is moving again.
- bestax covers 143 rows now, with 121 dedicated components. That puts it second by count, but I pick the rows, so take the count lightly. What it adds that most libraries leave to composition are the Bulma layout pieces: Hero, Level, Media, Section, and Panel. The gaps worth knowing about: charts, a rich text editor, an event calendar, a transfer list, a product tour, and Mantine's new inputs.
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 a whole new column is the likeliest place for me to have gotten something wrong. A fix lands on the comparison page first, and the next edition marks it as a correction.
Please open an issue. Corrections make the next edition better.
One Last Track
The series is named after A State of Trance, Armin van Buuren's weekly radio show, so each edition ends with what Armin and Gryffin, my two favorite DJs, have been up to.
- Armin van Buuren got to episode 1300 of the radio show on October 22, with a 13-hour ADE special live from Amsterdam, and fans got their first listen of the ASOT 2027 anthem during it. Its name isn't settled yet: the show's own tracklists have called it both "Into The Known" and "Into The Unknown." The Los Angeles festival from last month got its shape: three stages, produced with Insomniac, tickets on sale since October 22, and no lineup yet. Two new tracks came out: OMIKI's remix of "Sunny Days" (October 23) and "What If I Told You" with Douwe Bob (October 30), which they first played to 40,000 people at AMF on October 24. And Piano, his acoustic album, won the Edison public prize for classical music on October 29. One I missed last time: DJ Mag's Top 100 came out on October 6, with Armin at No. 7 and named the world's No. 1 trance DJ.
- Gryffin didn't put out anything new this stretch. Last month I said he was between releases, but the orchestral edit of "World Away" had come out October 9, so that wasn't quite right. ELEMENTS I still doesn't have a date I can find. The Los Angeles show grew to two nights, and he apologized on his Instagram story for the long lines getting in. The run finishes at Red Rocks this Friday, November 13, with Oliver Heldens, AR/CO, and Ember.
The cover stays on LIVE SET, one month again.
See you in the next one.
