Skip to content

chore: migrate from Node 18 to Node 20#8

Open
devin-ai-integration[bot] wants to merge 1 commit into
devin/1775585183-todo-appfrom
devin/1778089431-migrate-node-18-to-20
Open

chore: migrate from Node 18 to Node 20#8
devin-ai-integration[bot] wants to merge 1 commit into
devin/1775585183-todo-appfrom
devin/1778089431-migrate-node-18-to-20

Conversation

@devin-ai-integration
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot commented May 6, 2026

Summary

Migrates the TODO List application runtime from Node.js 18 to Node.js 20 (one major version increment per the migration playbook).

Migration Checklist

Area Change
.nvmrc 1820
package.json engines >=18.0.0 <19.0.0>=20.0.0 <21.0.0
package.json description Updated to reference Node.js 20
.eslintrc.json es2021 / ecmaVersion 2021es2022 / ecmaVersion 2022
better-sqlite3 Native addon rebuilt for Node 20 (v9.6.0 compatible, no version bump needed)

What was NOT changed (and why)

  • Express stays at 4.x — runtime and framework upgrades are independent for Node.js; Express 5 migration can be done separately.
  • ESLint stays at 8.x — ESLint 9 requires migrating to flat config (eslint.config.js), which is a separate effort.
  • No deprecated API usage found — scanned for url.parse(), Buffer() constructor, fs.exists(), require('punycode'), process.binding(), util.isArray(), util.isFunction(). None present.
  • No Dockerfile or CI workflow files — no additional version references to update.

Verification

  • 54/54 tests pass on Node 20.20.2 (same as baseline on Node 18)
  • Lint clean (eslint src/ tests/)
  • 0 npm audit vulnerabilities
  • better-sqlite3 native addon rebuilt and verified functional

Review & Testing Checklist for Human

  • Run nvm use 20 && npm rebuild && npm test to verify all 54 tests pass on your machine
  • Run npm start and verify the app serves at http://localhost:3000
  • Verify better-sqlite3 WAL mode and CRUD operations work via the UI or API

Notes

  • Node 20 is an LTS release (Active LTS until Oct 2024, Maintenance until Apr 2026). Consider planning the Node 22 migration as a follow-up.
  • The better-sqlite3 native addon (v9.6.0) supports Node 20 out of the box — only a rebuild is needed, no version bump required.

Link to Devin session: https://app.devin.ai/sessions/b85d4eb55ec54bba8869439b7055afbd
Requested by: @clivingston-cognition


Open in Devin Review

- Update .nvmrc from 18 to 20
- Update engines field in package.json to >=20.0.0 <21.0.0
- Update ESLint config to es2022/ecmaVersion 2022
- Update description to reflect Node.js 20
- Rebuild better-sqlite3 native addon for Node 20
- All 54 tests pass, lint clean, 0 npm audit vulnerabilities

Co-Authored-By: Chris Livingston <chris.livingston@cognition.ai>
@devin-ai-integration
Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Copy link
Copy Markdown
Contributor Author

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

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.

1 participant