Skip to content

chore: update dev and CI dependencies to latest#23

Merged
bnimit merged 6 commits into
mainfrom
chore/deps-full-update
Jun 25, 2026
Merged

chore: update dev and CI dependencies to latest#23
bnimit merged 6 commits into
mainfrom
chore/deps-full-update

Conversation

@bnimit

@bnimit bnimit commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates all dev/CI tooling to its latest versions, adjusts configs for the breaking changes, and drops the now-EOL Node 20. The library and example app both build, type-check, lint, and test clean on Node 22 and 24.

Package upgrades (package.json)

A fresh yarn outdated reports zero outdated direct dependencies in root and example/ after this PR.

Majors: vite 7→8 · @vitejs/plugin-react 5→6 · eslint 9→10 · eslint-config-reearth 0.3.8→0.4.0 · typescript 5.9→6 · jsdom 27→29 · vite-plugin-dts 4→5 · vite-plugin-svgr 4→5 · vite-plugin-css-injected-by-js 3→5
Minors/patches: vitest →4.1.9 · prettier →3.8.4 · postcss →8.5.15 · react/react-dom →19.2.7 · @types/react →19.2.17
Resolutions: @babel/runtime →7.29.7 · js-yaml →4.2.0
Added: @microsoft/api-extractor 7.58.9 (required peer for .d.ts bundling)
Example app: brought up from vite 3 / typescript 4.8 / @vitejs/plugin-react 2

Resolution pins intentionally held

@babel/runtime (8.0.0 available) and js-yaml (5.0.0 available) are not bumped to their new majors. They're security/dedup floors that must stay within the major their consumers require — @testing-library/* and @hello-pangea/dnd need @babel/runtime@^7, and cosmiconfig (via vite-plugin-svgr) needs js-yaml@^4. Forcing the majors would break those transitive consumers.

CI / workflows

  • actions/checkout v6.0.2 → v7.0.0 (all 3 workflows; v7's only breaking change blocks fork-PR checkout for pull_request_target/workflow_run, which none of these workflows use)
  • actions/setup-node v6.4.0 and peter-evans/create-pull-request v8.1.1 already latest — unchanged
  • Dropped Node 20 (EOL 2026-04-30): eslint-config-reearth@0.4.0 requires Node ≥22.13. CI matrix [20.x, 22.x][22.x, 24.x]; release.yml setup-node 2022; engines.node >=20>=22.13.0

Config changes required by the upgrades

Change Why
vite.config.tsvite.config.mts vite-plugin-css-injected-by-js@5 is ESM-only; Vite 8 loaded the CJS-default config via require and failed. .mts forces ESM loading without making the package "type":"module" (which would break the UMD require output).
rollupTypes: truebundleTypes: true vite-plugin-dts@5 (now unplugin-dts) renamed the option; the old name was silently ignored, splitting types instead of bundling into one index.d.ts.
moduleResolution: "node""bundler" (both tsconfigs) TS 6 errors on the deprecated node10 resolution.
example esModuleInterop: falsetrue TS 6 deprecates explicitly setting it false.

Bugs surfaced & fixed

  1. exports map had no types condition — modern consumers (moduleResolution: bundler/node16) couldn't resolve the library's types. Added "types" as the first export condition. (Masked before because the example used legacy node resolution.)
  2. Example missing src/vite-env.d.ts — added the standard vite/client reference so CSS side-effect imports type-check.

Docs

  • Fixed a stale prop name in README.md: onAlignmentChangeonAlignChange (matching GridWrapperProps), plus the missing JSX brace.
  • Documented @hello-pangea/dnd as a required peer dependency in the install instructions.

Verification

Step Root Example
install --frozen-lockfile
lint ✅ (0 errors; 8 pre-existing type-import warnings, non-failing)
type (tsc)
test ✅ 6/6
build ✅ (.mjs + .umd.js + bundled index.d.ts)

CI green on Node 22.x and 24.x.

Note: api-extractor 7.58.9 (latest) prints a harmless TypeScript 6.0.3 … is newer than the bundled compiler engine warning during .d.ts bundling. The rollup still succeeds and output is correct; it'll clear once api-extractor ships a TS 6 build.

🤖 Generated with Claude Code

Bumps all devDependencies and CI tooling to their latest versions and
adjusts configs for the resulting breaking changes.

Majors: vite 7->8, @vitejs/plugin-react 5->6, eslint 9->10,
eslint-config-reearth 0.3.8->0.4.0, typescript 5.9->6, jsdom 27->29,
vite-plugin-dts 4->5, vite-plugin-svgr 4->5,
vite-plugin-css-injected-by-js 3->5. Minors/patches: vitest, prettier,
postcss, react/react-dom, @types/react. Resolutions: @babel/runtime,
js-yaml. Example app brought up from vite 3 / ts 4.8 / plugin-react 2.
CI: actions/checkout v6.0.2 -> v6.0.3 (SHA-pinned).

Config changes required by the upgrades:
- Rename vite.config.ts -> vite.config.mts so Vite 8 loads the config as
  ESM (vite-plugin-css-injected-by-js@5 is ESM-only).
- vite-plugin-dts@5 renamed `rollupTypes` -> `bundleTypes`; add
  @microsoft/api-extractor (now a required peer for type bundling).
- moduleResolution "node" -> "bundler" (TS 6 deprecates node10).
- example: esModuleInterop false -> true (TS 6 deprecates setting false).

Bugs surfaced and fixed:
- Add a `types` condition to the package `exports` map so modern
  consumers (bundler/node16 resolution) can resolve the library's types.
- Add example/src/vite-env.d.ts for vite/client ambient types.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bnimit bnimit self-assigned this Jun 15, 2026
bnimit and others added 3 commits June 15, 2026 17:47
eslint-config-reearth@0.4.0 requires Node >=22.13.0, which broke the
Node 20 CI job at install. Node 20 reached EOL on 2026-04-30, so drop it
rather than pin the config back:

- CI matrix 20.x/22.x -> 22.x/24.x
- release.yml setup-node 20 -> 22 (it also runs `yarn install`)
- engines.node ">=20" -> ">=22.13.0"

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
v7.0.0 (2026-06-18) released after the initial deps update. The only
breaking change blocks fork-PR checkout for pull_request_target /
workflow_run triggers; none of these workflows use those triggers, so
the bump is safe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Correct the prop name `onAlignmentChange` -> `onAlignChange` in the
  Basic use example to match GridWrapperProps (and fix the missing JSX
  brace so it mirrors the sibling callbacks).
- Document `@hello-pangea/dnd` as a required peer dependency in the
  install instructions, and split the npm/yarn commands so they read as
  alternatives rather than both being run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repository’s dev tooling/CI stack to newer Node/Vite/TypeScript/ESLint generations, adjusts build/type configuration for the breaking changes, and updates docs and workflows accordingly so the library + example app build/test on Node 22/24.

Changes:

  • Upgrade core dev/build dependencies (Vite 8, TS 6, ESLint 10, Vitest 4, related plugins) and adjust Vite/tsconfig settings accordingly.
  • Improve package distribution metadata (add types condition in exports, new API Extractor peer for bundled d.ts) and update Node engine requirement.
  • Modernize CI/workflows to use actions/checkout@v7 and drop Node 20 from the CI matrix; update example app tooling + types.

Reviewed changes

Copilot reviewed 8 out of 12 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
vite.config.mts Switch vite-plugin-dts option to bundleTypes for v5 compatibility.
tsconfig.json Move to TS 6-friendly moduleResolution: "bundler".
README.md Update install instructions and fix the documented callback prop name/JSX formatting.
package.json Add exports types condition, bump Node engine, and update dependency versions/resolutions.
example/yarn.lock Refresh example lockfile after major toolchain upgrades.
example/tsconfig.json TS 6 config alignment (bundler resolution, esModuleInterop: true).
example/src/vite-env.d.ts Add Vite client types reference for correct type-checking.
example/package.json Upgrade example app’s React/Vite/TS toolchain versions.
.github/workflows/release.yml Update checkout action and move release workflow to Node 22.
.github/workflows/publish.yml Update checkout action to v7.
.github/workflows/ci.yml Drop Node 20 and update checkout action to v7.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
react-align's source doesn't import react-dom and it isn't declared in
peerDependencies (only `react` and `@hello-pangea/dnd` are). react-dom
is pulled in transitively via @hello-pangea/dnd, so claiming it as a
direct peer is misleading. Addresses PR review feedback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 12 changed files in this pull request and generated no new comments.

New releases since the PR opened, all backward-compatible:
- vite 8.0.16 -> 8.1.0 (root + example)
- @vitejs/plugin-react 6.0.2 -> 6.0.3 (root + example)
- vite-plugin-dts 5.0.2 -> 5.0.3 (root)

vite 8.1.0 satisfies plugin-react@6.0.3 (^8.0.0) and
vite-plugin-css-injected-by-js@5 (>8.0.0-0). Lockfiles regenerated (the
in-place bump tripped a yarn-classic vite/vitest nested-link invariant);
the regen also re-dedups drifted range entries. Resolution majors
@babel/runtime 8 and js-yaml 5 remain intentionally held.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bnimit bnimit merged commit 78cbb1f into main Jun 25, 2026
2 checks passed
@bnimit bnimit deleted the chore/deps-full-update branch June 25, 2026 08:42
@github-actions github-actions Bot mentioned this pull request Jun 25, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants