Starting with Mattermost v12.0 (October 2026), the Mattermost web and desktop apps are built on React 19

Why is Mattermost upgrading to React 19?

React 19 is the current stable major release of React. Upgrading keeps Mattermost on a supported version of our core UI framework, unlocks React’s concurrent rendering model, and lets us adopt the modern APIs that ship in React 19. See the official React 19 Upgrade Guide for the complete set of changes.

What does this mean for plugin developers?

This only affects plugins that register web app (frontend) components. Server-only plugins with no web app bundle, such as those that only register commands, webhooks, and API integrations, are unaffected and require no changes.

Mattermost web app plugins do not bundle their own copy of react and react-dom because they use the version provided by the web app. When v12.0 ships React 19, your plugin’s components render under React 19 whether or not you rebuild. Plugins that call APIs removed in React 19 or that depend on legacy synchronous rendering behavior may break.

What changed in React 19 that could affect my plugin?

The full list is in the React 19 Upgrade Guide. The changes most likely to affect a Mattermost plugin:

  • Legacy ReactDOM APIs removed. ReactDOM.findDOMNode has been removed and should be replaced by using refs directly. APIs such as ReactDOM.render, ReactDOM.hydrate, and unmountComponentAtNode have also been removed, but most plugins should not need to use them.

  • propTypes and defaultProps on function components removed. Move to default parameters and TypeScript types.

  • Legacy Context and string refs removed. contextTypes/getChildContext and string refs (ref=“foo”) no longer work. They should be replaced with createContext and useRef/ref callbacks.

  • Concurrent rendering and automatic batching. More state updates are now batched, and effect timing can differ. Components that relied on synchronous, un-batched updates may behave unexpectedly.

How do I prepare my plugin?

  1. Read the React 19 Upgrade Guide.

  2. Run the migration codemods against your plugin: npx codemod@latest run react-19-migration-recipe.

  3. Fix any removed-API usage surfaced by the codemods and by console warnings.

  4. Build and test your plugin against a Mattermost v12.0 release candidate during the beta window, before v12.0 ships.

When does this take effect?

Mattermost v12.0 (October 2026) is the first release built on React 19. Plugins that avoid the removed APIs and don’t depend on legacy synchronous rendering should continue to work without changes. We recommend validating your plugins against a v12.0 release candidate before the release.