Skip to content

feat: upgrade Node.js from 8.15.1+ to 18.20.8 LTS#4

Open
devin-ai-integration[bot] wants to merge 1 commit intomasterfrom
devin/1753786447-upgrade-nodejs-18-lts
Open

feat: upgrade Node.js from 8.15.1+ to 18.20.8 LTS#4
devin-ai-integration[bot] wants to merge 1 commit intomasterfrom
devin/1753786447-upgrade-nodejs-18-lts

Conversation

@devin-ai-integration
Copy link
Copy Markdown

feat: upgrade Node.js from 8.15.1+ to 18.20.8 LTS

Summary

Upgrades the Node.js version requirement from 8.15.1+ to 18.20.8 LTS to modernize the development environment and improve security. This is a significant version jump that required testing webpack 4.x compatibility with newer Node.js versions.

Key Changes:

  • Updated .nvmrc from "lts/dubnium" (Node 10.x) to "18.20.8"
  • Updated package.json engines field from ">=8.15.1" to ">=18.0.0"
  • Updated README.md system requirements from "v12.18+" to "v18.20+"

Compatibility Notes:

  • Requires NODE_OPTIONS="--openssl-legacy-provider" for webpack 4.x compatibility with Node 18+
  • All existing dependencies install successfully with Node 18.20.8
  • Development and production builds complete successfully with the OpenSSL legacy provider flag

Review & Testing Checklist for Human

🔴 Critical (3 items):

  • Test banking application end-to-end functionality - Login, dashboard, transactions, Redux state management, and Redux-Saga effects all work correctly
  • Verify build scripts work consistently - Test yarn start, yarn build, and yarn test with NODE_OPTIONS="--openssl-legacy-provider" in different environments
  • Check for runtime errors or performance regressions - Monitor browser console and application performance during normal banking operations

Test Plan:

  1. Switch to Node 18.20.8 using nvm use 18.20.8
  2. Install dependencies with yarn install
  3. Start development server with export NODE_OPTIONS="--openssl-legacy-provider" && yarn start
  4. Test core banking workflows: login, account overview, transactions, settings
  5. Build for production with export NODE_OPTIONS="--openssl-legacy-provider" && yarn build
  6. Verify all Redux actions, sagas, and Ant Design components work correctly

Diagram

%%{ init : { "theme" : "default" }}%%
graph TD
    A[".nvmrc<br/>(Node 18.20.8)"]:::major-edit
    B["package.json<br/>(engines: >=18.0.0)"]:::major-edit
    C["README.md<br/>(v18.20+ requirement)"]:::minor-edit
    
    D["webpack.base.babel.js<br/>(build configuration)"]:::context
    E["webpack.dev.babel.js<br/>(dev server)"]:::context
    F["webpack.prod.babel.js<br/>(production build)"]:::context
    
    G["yarn.lock<br/>(dependencies)"]:::context
    H["babel.config.js<br/>(transpilation)"]:::context
    
    A --> D
    B --> G
    G --> D
    D --> E
    D --> F
    H --> E
    H --> F
    
    subgraph Legend
        L1["Major Edit"]:::major-edit
        L2["Minor Edit"]:::minor-edit  
        L3["Context/No Edit"]:::context
    end
    
    classDef major-edit fill:#90EE90
    classDef minor-edit fill:#87CEEB
    classDef context fill:#FFFFFF
Loading

Notes

  • OpenSSL Legacy Provider Required: The NODE_OPTIONS="--openssl-legacy-provider" flag is necessary because webpack 4.x uses legacy OpenSSL algorithms that were removed in Node.js 17+. This is a known compatibility issue.
  • Testing Limitations: Could not run the complete Jest test suite due to pre-existing linting issues (119 errors), but the test infrastructure works with Node 18.
  • No CI/CD Updates Found: No GitHub Actions or other CI configurations were found that would need Node version updates.
  • Future Considerations: Consider upgrading to webpack 5.x in a future PR to eliminate the need for the OpenSSL legacy provider flag.

Link to Devin run: https://app.devin.ai/sessions/a21bbed4d897417c9ae368473d68c6fd
Requested by: Arthur Poon (@akkp-windsurf)

- Update .nvmrc to specify Node.js 18.20.8
- Update package.json engines field to require >=18.0.0
- Update README.md system requirements to Node.js v18.20+
- Maintain compatibility with existing webpack 4.44.0 and build tools
- Requires NODE_OPTIONS='--openssl-legacy-provider' for webpack 4.x compatibility

Co-Authored-By: Arthur Poon <arthur.poon@windsurf.com>
@devin-ai-integration
Copy link
Copy Markdown
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

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.

0 participants