Repository navigation
ci: build and publish on Node 22 and 24 - #34
Merged
Merged
Conversation
Node 18 and 20 are past end of life, and tsup 9 (#33) needs Node ^22.18 or ^24.11: on 18 the build fails with ERR_REQUIRE_ESM, and 20 is outside its supported range. The test matrix moves to 22 and 24, and the build and publish jobs to 22. The package's engines field is unchanged: tsup only runs at build time, so apps installing the package are unaffected.
safenestdev
approved these changes
Oct 23, 2026
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
This unblocks #33 (tsup 8.5.1 → 9.0.0). tsup 9 supports Node
^22.18 || ^24.11 || >=26, and thetest (18)job fails withERR_REQUIRE_ESMwhen tsup loadscac. Node 18 and Node 20 are both past end of life.Approach
[18, 20, 22]becomes[22, 24], the two maintained LTS lines.buildjob andpublish.yml: Node 20 becomes Node 22, so the package that ships is built on a Node version tsup supports.enginesinpackage.jsonis unchanged. tsup only runs when the package is built, so apps that install@tuteliq/react-nativearen't affected.Testing
I built the package locally with tsup 8.5.1 (
main) and with tsup 9.0.0 (#33), on Node 26, and compared the output:dist/index.jsanddist/index.mjsare byte-for-byte identical.dist/index.d.ts/.d.mtsonly change how type-only exports are written: oneexport type { … }line instead of inlinetypemodifiers. They mean the same thing, and the new form works with older TypeScript versions too.typecheck,lintandbuildpass on both.Notes for reviewers
@dependabot rebaseon chore(deps-dev): bump tsup from 8.5.1 to 9.0.0 #33 so it picks up the new matrix.jestfinds 0), and CI doesn't runnpm test. That's worth a separate look.