Skip to main content

The State of React: November 2026

· 18 min read
Alex Smith
Software Engineer
The State of React, November 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, LIVE SET reads in the top left corner, EP. 004 in the top right, and a caption along the bottom reads November 2026, React component libraries, compared

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.

Snapshot: November 2026

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 antd package first.
  • Official companion packages count too, the same rule that counts Mantine's @mantine/* and MUI's @mui/x-*. That's @ant-design/icons for 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 supports antd 4 and 5 anyway. Ant Design Mobile doesn't count either, since it's a separate library.
  • A few 6.x deprecations decide cells. Button.Group gave way to Space.Compact, the input addons moved to Space.Compact and Space.Addon, and the List component gave way to Listy, 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/emoji package 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).
  • One behavior change to know before you upgrade: the @mantine/dates pickers 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 loaderProps on 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 next tag. 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 CSS gap, so Stack's useFlexGap prop 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 dateLocale takes 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 useHotkeys hook to open it with a shortcut and KbdGroup to show the shortcut's keys.
  • The announcement calls it backward compatible with two things to check. Field.ErrorText now links to its field through aria-describedby, so a test using toHaveAccessibleErrorMessage should switch to toHaveAccessibleDescription. And Popover.Title renders an h2 now.
  • 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.

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 Mentions and 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 changed from October 13, 2026 to November 10, 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-bulmaMantineMUIAntChakrashadcnR-Bootstrap
Buttons & actions
Icon buttonnone
Copy buttonnonenonenone
Segmented / toggle group
Floating action buttonnonenonenonenone
Inputs & form controls
Password inputnonenonenone
Selectable card (checkbox / radio)nonenonenone
Combobox (headless)nonenonenone
PIN / OTP inputnonenonenone
Masked inputnewnonenonenonenonenonenonenone
Mentions (@ input)newnonenonenonenonenonenone
Phone inputnewnonenonenonenonenone
Color inputnonenonenone
Color picker (palette)nonenonenonenone
Fieldsetnone
Date & time
Week pickernewnonenonenonenonenone
Quarter pickernewnonenonenonenonenonenone
Navigation
App shell (layout frame)nonenonenone
Table of contentsnonenonenonenonenone
Command palette / spotlightnonenonenonenone
Layout & grid
Stack (vertical)none
Group (horizontal)none
Flexnonenone
Centernonenonenone
Scroll area (custom bars)nonenonenonenone
Splitter (resizable)nonenonenone
Affix (fixed or sticky)nonenonenone
Data display
Data grid (sort/filter/page)nonenonenone
Description / data listnonenonenone
Tree viewnonenone
Tree selectnonenonenonenonenone
JSON viewernewnonenonenonenonenonenonenone
Timelinenonenonenone
Agent tracenewnonenonenonenonenonenone
Kbd (keyboard key)nonenonenone
Number formatternonenonenonenone
Rolling numbernewnonenonenonenonenonenonenone
Stat (label and figure)newnonenonenonenonenone
Lightbox (media viewer)nonenonenonenone
Color swatchnonenonenonenonenone
Typography
Code block (syntax highlight)nonenonenone
Diff viewernewnonenonenonenonenone
Feedback & status
Ring / circular progressnonenonenone
Empty statenonenonenone
Overlays
Product tournewnonenonenonenonenonenone
Rich input & special
Dropzone (drag-drop upload)nonenonenonenone
Emoji pickernewnonenonenonenonenonenone
Utilities & infrastructure
Locale / direction providernone
Skip link (a11y)nonenonenonenonenonenone

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 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 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 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.

Spot something off?

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.