Prepare Plugins to Support React 19
Following the release of React SDK 11 with support for React 19, and the removal of support for React 16 and 17, we’d like to remind all plugin authors to ensure their custom dashboard plugins are upgraded.
Plugins must be compatible with React 18 and React 19 to continue working as GoodData dashboards transition to React 19. Please upgrade all custom dashboard plugins by the end of January 2026.
Upgrade Options
There are two ways to prepare your plugin:
Option 1: Generate a new plugin skeleton (recommended)
This is the safest and recommended approach. Generate a fresh plugin skeleton using the latest plugin toolkit, then copy your plugin source code and dependencies into it.
npx @gooddata/plugin-toolkit@latest dashboard-plugin init
The generated template already contains the correct configuration for React 18/19 compatibility.
Option 2: Update an existing plugin
If you choose to update an existing plugin, make sure to apply all of the following changes carefully.
Make sure your plugin depends on the latest compatible version of the GoodData UI SDK.
If your
package.jsoncontains overrides or resolutions for reselect, remove them."overrides": { "reselect": "4.1.5" } "resolutions": { "reselect": "4.1.5" }Update your
webpack.config.cjsto explicitly share react/jsx-runtime. Refer to the plugin template for the exact placement of this configuration.shared: { ... "react/jsx-runtime": { singleton: true, import: false, strictVersion: false, } }Your plugin must declare peer dependencies that allow both React 18 and React 19.
"peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }In your Module Federation configuration, remove
requiredVersionfor bothreactandreact-dom.shared: { react: { ... // requiredVersion: deps.react, ← REMOVE THIS }, "react-dom": { ... // requiredVersion: deps["react-dom"], ← REMOVE THIS } }
Recommendations
Please take into account our general recommendatons when updtating your React environment:
- Avoid libraries that bundle or depend on React internals, as this can cause runtime conflicts.
- Ensure all third-party libraries used by the plugin support both React 18 and React 19.
- Do not use React 19–only features in plugins yet; plugins must remain compatible with React 18.
Verification
After rebuilding your plugin, use the React compatibility testing application to verify that it runs correctly with both React 18 and React 19.
The testing application:
- Expects a path to a directory containing the built plugin
- Runs the plugin against React 18 and React 19 one at a time
- Helps confirm that the plugin will continue to work before and after the dashboards app transitions to React 19
For details, see the tool documentation and the README.md in the SDK repository.
As a reference, see how the Radial Bar Chart plugin was updated in pull request #77. After applying these changes, the plugin works correctly when tested with both React 18 and React 19 using the compatibility testing application.
Note that the plugin is still built with React 18 dependencies. The purpose of these changes is to ensure it also runs correctly with React 19.