chore: update dev and CI dependencies to latest#23
Merged
Conversation
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>
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>
There was a problem hiding this comment.
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
typescondition inexports, new API Extractor peer for bundled d.ts) and update Node engine requirement. - Modernize CI/workflows to use
actions/checkout@v7and 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.
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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 outdatedreports zero outdated direct dependencies in root andexample/after this PR.Majors:
vite7→8 ·@vitejs/plugin-react5→6 ·eslint9→10 ·eslint-config-reearth0.3.8→0.4.0 ·typescript5.9→6 ·jsdom27→29 ·vite-plugin-dts4→5 ·vite-plugin-svgr4→5 ·vite-plugin-css-injected-by-js3→5Minors/patches:
vitest→4.1.9 ·prettier→3.8.4 ·postcss→8.5.15 ·react/react-dom→19.2.7 ·@types/react→19.2.17Resolutions:
@babel/runtime→7.29.7 ·js-yaml→4.2.0Added:
@microsoft/api-extractor7.58.9 (required peer for.d.tsbundling)Example app: brought up from
vite3 /typescript4.8 /@vitejs/plugin-react2Resolution pins intentionally held
@babel/runtime(8.0.0 available) andjs-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/dndneed@babel/runtime@^7, andcosmiconfig(viavite-plugin-svgr) needsjs-yaml@^4. Forcing the majors would break those transitive consumers.CI / workflows
actions/checkoutv6.0.2 → v7.0.0 (all 3 workflows; v7's only breaking change blocks fork-PR checkout forpull_request_target/workflow_run, which none of these workflows use)actions/setup-nodev6.4.0 andpeter-evans/create-pull-requestv8.1.1 already latest — unchangedeslint-config-reearth@0.4.0requires Node ≥22.13. CI matrix[20.x, 22.x]→[22.x, 24.x];release.ymlsetup-node20→22;engines.node>=20→>=22.13.0Config changes required by the upgrades
vite.config.ts→vite.config.mtsvite-plugin-css-injected-by-js@5is ESM-only; Vite 8 loaded the CJS-default config viarequireand failed..mtsforces ESM loading without making the package"type":"module"(which would break the UMDrequireoutput).rollupTypes: true→bundleTypes: truevite-plugin-dts@5(nowunplugin-dts) renamed the option; the old name was silently ignored, splitting types instead of bundling into oneindex.d.ts.moduleResolution: "node"→"bundler"(both tsconfigs)node10resolution.esModuleInterop: false→truefalse.Bugs surfaced & fixed
exportsmap had notypescondition — 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 legacynoderesolution.)src/vite-env.d.ts— added the standardvite/clientreference so CSS side-effect imports type-check.Docs
README.md:onAlignmentChange→onAlignChange(matchingGridWrapperProps), plus the missing JSX brace.@hello-pangea/dndas a required peer dependency in the install instructions.Verification
install --frozen-lockfilelinttype(tsc)testbuild.mjs+.umd.js+ bundledindex.d.ts)CI green on Node 22.x and 24.x.
🤖 Generated with Claude Code