# Package Update Recommendations ## 📦 Outdated Packages Summary ### Production Dependencies | Package | Current | Latest | Type | Recommendation | |---------|---------|--------|------|----------------| | **express** | 4.21.2 | 5.1.0 | Major | ⚠️ Breaking changes - Test thoroughly | | **better-sqlite3** | 9.6.0 | 12.4.1 | Major | ⚠️ Breaking changes - Review migration guide | | **dotenv** | 16.6.1 | 17.2.3 | Major | ✅ Safe to update | ### Development Dependencies | Package | Current | Latest | Type | Recommendation | |---------|---------|--------|------|----------------| | **eslint** | 8.57.1 | 9.39.1 | Major | ⚠️ Breaking changes - Config migration needed | | **@typescript-eslint/eslint-plugin** | 6.21.0 | 8.47.0 | Major | ⚠️ Update with eslint 9 | | **@typescript-eslint/parser** | 6.21.0 | 8.47.0 | Major | ⚠️ Update with eslint 9 | | **@types/node** | 20.19.25 | 24.10.1 | Major | ⚠️ Node 24 types - Verify compatibility | | **@types/express** | 4.17.25 | 5.0.5 | Major | ⚠️ For Express 5 - Update with express | ## 🔄 Update Strategy ### Option 1: Safe Updates (Recommended for Production) Update only minor/patch versions and non-breaking major updates: ```bash # Update dotenv (breaking changes are minimal) pnpm update dotenv@latest # Update TypeScript types (if compatible) pnpm update @types/node@^20 ``` ### Option 2: Full Update (Requires Testing) Update all packages to latest versions: ```bash # Update all packages pnpm update --latest # Or update specific packages pnpm update express@latest better-sqlite3@latest eslint@latest ``` ### Option 3: Gradual Update (Recommended) Update in stages, testing after each: #### Stage 1: Non-Breaking Updates ```bash pnpm update dotenv@latest ``` #### Stage 2: Express 5 Migration ```bash # Update Express and types together pnpm update express@latest @types/express@latest # Review breaking changes: # - https://github.com/expressjs/express/releases # - Update code if needed ``` #### Stage 3: ESLint 9 Migration ```bash # Update ESLint and TypeScript ESLint plugins pnpm update eslint@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest # Migrate ESLint config (flat config format) # See: https://eslint.org/docs/latest/use/configure/configuration-files-new ``` #### Stage 4: Database Library ```bash # Update better-sqlite3 pnpm update better-sqlite3@latest # Review migration guide: # - https://github.com/WiseLibs/better-sqlite3/releases ``` ## ⚠️ Breaking Changes to Watch ### Express 5.x - Some middleware changes - Type definitions updated - Review: https://github.com/expressjs/express/releases/tag/v5.0.0 ### ESLint 9.x - New flat config format required - Old .eslintrc.json format deprecated - Migration guide: https://eslint.org/docs/latest/use/migrate-to-9.0.0 ### better-sqlite3 12.x - API changes possible - Review changelog before updating ## ✅ Recommended Immediate Actions 1. **Update dotenv** (safest): ```bash pnpm update dotenv@latest ``` 2. **Test current setup**: ```bash pnpm build pnpm run type-check pnpm dev # Test that server starts ``` 3. **Plan major updates**: - Create a feature branch - Update one major package at a time - Test thoroughly after each update - Update documentation if needed ## 📝 Update Commands ### Check what would be updated ```bash pnpm outdated ``` ### Update all to latest (interactive) ```bash pnpm update --latest --interactive ``` ### Update specific package ```bash pnpm update @latest ``` ### Update and save exact versions ```bash pnpm update --save-exact ``` ## 🔍 Verification After Updates ```bash # Build pnpm build # Type check pnpm run type-check # Lint pnpm lint # Test server starts pnpm dev ``` ## 📚 Resources - [Express 5 Migration](https://github.com/expressjs/express/releases) - [ESLint 9 Migration](https://eslint.org/docs/latest/use/migrate-to-9.0.0) - [better-sqlite3 Changelog](https://github.com/WiseLibs/better-sqlite3/releases)