plotly.js 4.0.0 (released 2026-08-24) is a breaking major that reflex-components-plotly cannot take as a straight version bump. The pin is currently held at plotly.js@3.7.0, and plotly.js is filtered out of the release branch's outdated-dependency check with a pointer to this issue's problem.
Why it's blocked
plotly.js 4.0.0 removes the mapbox traces and the mapbox subplot outright:
scattermapbox, choroplethmapbox, and densitymapbox trace types are gone
- the
mapbox subplot and the mapboxAccessToken config option are gone
- upstream's guidance is to migrate to the equivalent
*map traces (scattermap, choroplethmap, densitymap), which are MapLibre-based and need no access token
Reflex ships PlotlyMapbox in packages/reflex-components-plotly/src/reflex_components_plotly/plotly.py, built on the plotly.js-mapbox-dist-min bundle. That bundle and the component both need a deprecation path before the pin can move.
Other 4.0.0 changes worth checking while migrating:
- MathJax v2 support dropped (v3/v4 only)
- Chart Studio config attributes removed:
showLink, linkText, sendData, showSources
- all
*src attributes and layout.hidesources removed from the schema
- color processing switched from TinyColor to culori, which changes decimal-fraction handling in
rgb()/rgba() strings and now rejects invalid CSS colors
- overlaying axes default to
tickmode: 'sync'; splom.axis.matches defaults to true; geo plots auto-fit to trace data
- minimum Node raised to 22 (already satisfied —
Node.MIN_VERSION is 22.22.0)
What needs doing
Notes
react-plotly.js was already moved to 4.1.0 separately — its peer range is plotly.js >=3.0.0, so it is compatible with the 3.7.0 pin in the meantime and is not part of this migration.
Upstream changelog: https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md
plotly.js 4.0.0 (released 2026-08-24) is a breaking major that
reflex-components-plotlycannot take as a straight version bump. The pin is currently held atplotly.js@3.7.0, andplotly.jsis filtered out of the release branch's outdated-dependency check with a pointer to this issue's problem.Why it's blocked
plotly.js 4.0.0 removes the mapbox traces and the mapbox subplot outright:
scattermapbox,choroplethmapbox, anddensitymapboxtrace types are gonemapboxsubplot and themapboxAccessTokenconfig option are gone*maptraces (scattermap,choroplethmap,densitymap), which are MapLibre-based and need no access tokenReflex ships
PlotlyMapboxinpackages/reflex-components-plotly/src/reflex_components_plotly/plotly.py, built on theplotly.js-mapbox-dist-minbundle. That bundle and the component both need a deprecation path before the pin can move.Other 4.0.0 changes worth checking while migrating:
showLink,linkText,sendData,showSources*srcattributes andlayout.hidesourcesremoved from the schemargb()/rgba()strings and now rejects invalid CSS colorstickmode: 'sync';splom.axis.matchesdefaults totrue; geo plots auto-fit to trace dataNode.MIN_VERSIONis 22.22.0)What needs doing
PlotlyMapboxper the project's deprecation policy (console.deprecate()with adeprecation_versionof the next dot version,removal_versionof the next major), pointing users at a*map-based replacementplotly.js*pins inplotly.pyto 4.x, including the per-variantplotly.js-*-dist-minbundles (confirm each variant still exists in 4.x)plotly\.jsfrom the frontend ignore list in.github/workflows/check_outdated_dependencies.ymlNotes
react-plotly.jswas already moved to 4.1.0 separately — its peer range isplotly.js >=3.0.0, so it is compatible with the 3.7.0 pin in the meantime and is not part of this migration.Upstream changelog: https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md