Upgrade sharp 0.34.5 → 0.35.0 (major-class bump)
PR here: FlowFuse/node-red-dashboard#2179
Dependabot PR: dependabot/npm_and_yarn/sharp-0.35.0
Why this is out of the weekly batch
sharp is a 0.x package, so 0.34 → 0.35 is semver-breaking, and the release ships a long list of breaking changes. Per our Dependabot triage policy, major-class bumps get pulled out of the weekly slot and owned as their own work item.
Key breaking changes:
- Requires Node ≥ 20.9.0 (drops Node 18)
- Removes deprecated
failOnError constructor property
- Renames
format.jp2k → format.jp2
- Lossy AVIF output retuned (SSIMULACRA2-based quality metrics)
- Adds
limitInputChannels (default 5)
Blast radius (contained)
sharp is a direct devDependency and is not imported in shipped code — used only via build tooling.
vite-plugin-image-optimizer@2.0.2 — peer sharp >=0.34.0, satisfied by 0.35 ✅ (this tool actually calls sharp during vite build)
@vite-pwa/assets-generator@1.0.0 — hard-pins sharp ^0.33.5, keeps its own nested 0.33.5 (unaffected)
- CI runs Node 24, so the Node ≥20.9 requirement is already met.
What needs to be done
Upgrade sharp 0.34.5 → 0.35.0 (major-class bump)
PR here: FlowFuse/node-red-dashboard#2179
Dependabot PR:
dependabot/npm_and_yarn/sharp-0.35.0Why this is out of the weekly batch
sharpis a0.xpackage, so0.34 → 0.35is semver-breaking, and the release ships a long list of breaking changes. Per our Dependabot triage policy, major-class bumps get pulled out of the weekly slot and owned as their own work item.Key breaking changes:
failOnErrorconstructor propertyformat.jp2k→format.jp2limitInputChannels(default 5)Blast radius (contained)
sharpis a direct devDependency and is not imported in shipped code — used only via build tooling.vite-plugin-image-optimizer@2.0.2— peersharp >=0.34.0, satisfied by 0.35 ✅ (this tool actually calls sharp duringvite build)@vite-pwa/assets-generator@1.0.0— hard-pinssharp ^0.33.5, keeps its own nested 0.33.5 (unaffected)What needs to be done
npm run buildon Node ≥20.9 and confirm optimized image output is correct (AVIF retuning can change results).npm run generate-pwa-assetsand verify PWA icons/assets are clean.engines.node: ">=14"inpackage.json(CI is already Node 24) — decide whether to bump the declared floor.