Conversation
Regenerate all npm lockfiles to the latest versions within the existing semver ranges (node 24 / npm 11, lockfileVersion 2) across the root, dash-renderer, the three component packages, and dash-component-plugins. No direct dependency crosses a major boundary. This supersedes the stale, failing dependabot PRs, which had bundled breaking majors (eslint 9, typescript 6, webpack-cli 7, react-window 2, Babel 8). - renderer: pin transitive types-ramda to 0.29.2 via a scoped override. @types/ramda 0.29.1 pulls types-ramda, which within its range jumped to 0.29.10 and tightened keys() to `extends object`, breaking the type check with 37 tsc errors. Also bump webpack-cli to ^7 to match the component packages (verified building). - dash-table: webpack-dev-server 5.2.4 -> 5.2.6 (security, closes #3868). - dependabot.yml: ignore the majors that break the build so stale red PRs stop reopening: typescript >=6, @babel/* >=8, babel-loader >=10, react-window >=2 (dcc), @types/ramda >=0.30 (renderer). Verified on node 24: renderer build/eslint/prettier/karma (85), dash-core-components build/es-check/eslint/jest (85), dash-table and dash-html-components build/es-check/eslint, dash-component-plugins build. Supersedes #3868, #3869, #3890, #3904, #3905, #3906, #3910, #3917-#3920.
Dash performance benchmarks
growth = late-third / early-third per-op time; ~1 is flat, a large value means the per-op cost scales with accumulated state. machine scale vs baseline: 0.80x - divided out of the baseline ratios so they compare like for like (the absolute warn/fail ceilings are left un-scaled); calibrated on |
Two CI failures from the first pass: - dash-renderer, dash-html-components and dash-component-plugins have no .npmrc, so CI installs them with plain `npm ci` (no legacy-peer-deps). Their locks were generated with --legacy-peer-deps, which relaxed peer resolution and picked an inconsistent ajv, so plain `npm ci` rejected them (ajv 6.15.0 vs 8.20.0). Regenerated those three without the flag. Root, dash-core-components and dash-table keep --legacy-peer-deps to match their own .npmrc. - dash-table: d3-format 3.1.0 -> 3.1.2 changed significant-digit formatting and broke a js-unit test (expected '0.0', got '0'). Pinned d3-format to 3.1.0 (it is not in the table's dependabot allow list, so it was never meant to move here). Verified with plain `npm ci` on renderer/html/plugins, legacy `npm ci` on root/dcc/table, renderer karma 85/85, and table karma 786/786.
|
camdecoster
left a comment
There was a problem hiding this comment.
This all seems fine. I just had one question before approving.
| "typescript": "^5.8.3", | ||
| "webpack": "^5.104.1", | ||
| "webpack-cli": "^5.1.4", | ||
| "webpack-cli": "^7.0.3", |
There was a problem hiding this comment.
This is a major update, contradicting the PR description. Was this intentional?
There was a problem hiding this comment.
. Also bumped webpack-cli ^5 -> ^7 to match the component packages (verified building).
I think it's fine, the other packages were already on 7, this one had drifted.



What
A single consolidated dependency-update PR to replace the batch of stale, failing dependabot PRs. All six npm lockfiles are regenerated to the latest versions within the existing semver ranges (node 24 / npm 11, preserving
lockfileVersion 2): root,dash/dash-renderer,components/dash-core-components,components/dash-table,components/dash-html-components, and@plotly/dash-component-plugins.No direct dependency crosses a major boundary. The open dependabot PRs fail because they bundle breaking majors (eslint 9, typescript 6/7, webpack-cli 7, react-window 2, Babel 8). Per a conservative policy, this PR takes every safe minor/patch/security bump and holds the breakers.
Notable changes
@types/ramda@0.29.1transitively pullstypes-ramda, which within its range jumped 0.29.2 -> 0.29.10 and tightenedkeys()'s generic toextends object, breakingkeys<string>(...)insrc/actions/callbacks.tswith 37tscerrors. Pinnedtypes-ramdato 0.29.2 via a scopedoverridesentry (dev-only typings, no source change). Also bumpedwebpack-cli^5->^7to match the component packages (verified building).webpack-dev-server5.2.4 -> 5.2.6 (security, closes Bump webpack-dev-server from 5.2.4 to 5.2.6 in /components/dash-table in the npm-dependencies-security group across 1 directory #3868).ignoreentries so the majors that break the build stop reopening red PRs:typescript >=6,@babel/* >=8,babel-loader >=10(all npm dirs),react-window >=2(dcc),@types/ramda >=0.30(renderer, to stay in sync with the override). eslint/prettier/@typescript-eslint were already locked by the existing allow-lists.Verification (all on node 24, CI's version)
Known held vulnerabilities
Two dev/build-only advisories remain, fixable only by breaking majors, so held under the conservative policy:
elliptic(vianode-polyfill-webpack-plugin, browser crypto polyfill; needs the plugin's v4 major)serialize-javascript(viamochatest runner; needs mocha 12)Supersedes
Stale dependabot PRs: #3868, #3869, #3890, #3904, #3905, #3906, #3910, #3917, #3918, #3919, #3920. These should be closed once this merges.
Follow-ups (not in this PR)
@plotly/dash-component-pluginshas nodependabot.ymlentry (its 4 stale PRs Bump @babel/core, @babel/preset-env, @babel/preset-react and babel-loader in /@plotly/dash-component-plugins #3917-Bump webpack from 5.99.6 to 5.109.2 in /@plotly/dash-component-plugins #3920 predate the current allow-lists). Its lock is refreshed here, but it has no ongoing dependabot coverage; adding a restricted entry is a separate decision.@plotly/eslint-config-dash, test-component packages, etc.) are likewise not covered by dependabot. No open PRs today; noting the gap.