|
| 1 | +# Dependency Upgrades Tracker |
| 2 | + |
| 3 | +Tracking the upgrade of all outdated dependencies across 6 phases ordered by risk and dependency chain. |
| 4 | + |
| 5 | +**Started**: 2026-03-05 |
| 6 | +**Branch prefix**: `chore/deps-` |
| 7 | + |
| 8 | +## Open Dependabot PRs |
| 9 | + |
| 10 | +These existing PRs need to be resolved (merged or closed) as part of this effort. |
| 11 | + |
| 12 | +| PR | Description | CI | Merge Status | Action | |
| 13 | +| --- | --------------------------------------------- | ---- | ------------ | ---------------------------- | |
| 14 | +| #5 | `actions/checkout` 4 to 6 | Pass | Clean | Closed, superseded by PR #16 | |
| 15 | +| #6 | `actions/setup-node` 4 to 6 | Pass | Clean | Closed, superseded by PR #16 | |
| 16 | +| #7 | Grouped dev deps (8 packages) | Pass | Conflicts | Closed, superseded by PR #16 | |
| 17 | +| #9 | `@figma/eslint-plugin-figma-plugins` 0.16-1.0 | Pass | Conflicts | Close, Phase 3 | |
| 18 | +| #10 | React + @types/react | Fail | Conflicts | Close, Phase 4 | |
| 19 | +| #11 | `@typescript-eslint/eslint-plugin` 6-8 | Fail | Conflicts | Close, Phase 3 | |
| 20 | + |
| 21 | +## Phase 1: CI Actions and Safe Dev Dependency Patches |
| 22 | + |
| 23 | +Low-risk changes with passing CI. No breaking changes expected. |
| 24 | + |
| 25 | +**Branch**: `chore/deps-phase-1` |
| 26 | + |
| 27 | +- [x] Merge PR #5 - `actions/checkout` 4 to 6 (superseded by PR #16) |
| 28 | +- [x] Merge PR #6 - `actions/setup-node` 4 to 6 (superseded by PR #16) |
| 29 | +- [x] Rebase and merge PR #7 - grouped dev dependencies (superseded by PR #16): |
| 30 | + - `@testing-library/jest-dom` 6.8.0 to 6.9.1 |
| 31 | + - `eslint-plugin-prettier` 5.5.4 to 5.5.5 |
| 32 | + - `eslint-plugin-testing-library` 7.6.6 to 7.15.4 |
| 33 | + - `prettier` 3.6.2 to 3.8.1 |
| 34 | + - `prettier-plugin-tailwindcss` 0.6.14 to 0.7.2 |
| 35 | + - `ts-jest` 29.4.1 to 29.4.6 |
| 36 | + - `ts-loader` 9.5.2 to 9.5.4 |
| 37 | + - `webpack` 5.101.3 to 5.104.1 |
| 38 | +- [x] All checks passing (lint, types, 88/88 tests, build) |
| 39 | + |
| 40 | +**PR**: #16 | **Verification**: all passed |
| 41 | + |
| 42 | +## Phase 2: Low-Risk Tool Bumps |
| 43 | + |
| 44 | +Minor/major bumps for standalone dev tools unlikely to cause breakage. |
| 45 | + |
| 46 | +**Branch**: `chore/deps-phase-2` |
| 47 | + |
| 48 | +- [ ] `markdownlint-cli` 0.42.0 to 0.48.0 |
| 49 | +- [ ] `@commitlint/cli` 19.8.1 to 20.x |
| 50 | +- [ ] `@commitlint/config-conventional` 19.8.1 to 20.x |
| 51 | +- [ ] `lint-staged` 15.5.2 to 16.x |
| 52 | +- [ ] Run full test suite and verify pre-commit hooks still work |
| 53 | + |
| 54 | +**Verification**: `npm test`, `npm run lint:md`, test a sample commit |
| 55 | + |
| 56 | +## Phase 3: ESLint 9 Migration |
| 57 | + |
| 58 | +Major ecosystem change. ESLint 9 requires flat config (`eslint.config.js`) replacing `.eslintrc.*`. All ESLint-related packages must move together. |
| 59 | + |
| 60 | +**Branch**: `chore/deps-eslint-9` |
| 61 | + |
| 62 | +- [ ] Research ESLint 8 to 9 migration guide |
| 63 | +- [ ] Audit current `.eslintrc` config and all plugin compatibility |
| 64 | +- [ ] Upgrade `eslint` 8.57.1 to 9.x |
| 65 | +- [ ] Upgrade `@typescript-eslint/eslint-plugin` 6.21.0 to 8.x |
| 66 | +- [ ] Upgrade `@typescript-eslint/parser` 6.21.0 to 8.x |
| 67 | +- [ ] Upgrade `eslint-config-airbnb-typescript` 17.1.0 to 18.x |
| 68 | +- [ ] Upgrade `eslint-plugin-react-hooks` 4.6.2 to 7.x |
| 69 | +- [ ] Upgrade `@figma/eslint-plugin-figma-plugins` 0.16.1 to 1.0.0 |
| 70 | +- [ ] Migrate `.eslintrc` to `eslint.config.js` (flat config) |
| 71 | +- [ ] Verify all lint rules still apply correctly |
| 72 | +- [ ] Close Dependabot PRs #9 and #11 |
| 73 | + |
| 74 | +**Verification**: `npm run lint:fix`, `npx tsc --noEmit --skipLibCheck`, `npm test` |
| 75 | + |
| 76 | +## Phase 4: React 19 |
| 77 | + |
| 78 | +React 19 includes breaking changes (removed legacy APIs, new JSX transform requirements). Testing library must also bump. |
| 79 | + |
| 80 | +**Branch**: `chore/deps-react-19` |
| 81 | + |
| 82 | +- [ ] Review React 19 migration guide and breaking changes |
| 83 | +- [ ] Upgrade `react` 18.3.1 to 19.x |
| 84 | +- [ ] Upgrade `react-dom` 18.3.1 to 19.x |
| 85 | +- [ ] Upgrade `@types/react` 18.3.28 to 19.x |
| 86 | +- [ ] Upgrade `@types/react-dom` 18.3.7 to 19.x |
| 87 | +- [ ] Upgrade `@testing-library/react` 14.3.1 to 16.x |
| 88 | +- [ ] Check `figma-kit` compatibility with React 19 |
| 89 | +- [ ] Check `react-textarea-autosize` compatibility with React 19 |
| 90 | +- [ ] Check `react-router` compatibility with React 19 |
| 91 | +- [ ] Fix any breaking API changes in components |
| 92 | +- [ ] Run full test suite and manually test plugin in Figma |
| 93 | +- [ ] Close Dependabot PR #10 |
| 94 | + |
| 95 | +**Verification**: `npm test`, `npm run build`, manual Figma plugin test |
| 96 | + |
| 97 | +## Phase 5: Webpack and Build Tooling |
| 98 | + |
| 99 | +Loader and CLI major version bumps. These can break the build pipeline. |
| 100 | + |
| 101 | +**Branch**: `chore/deps-build-tooling` |
| 102 | + |
| 103 | +- [ ] Upgrade `css-loader` 6.11.0 to 7.x |
| 104 | +- [ ] Upgrade `style-loader` 3.3.4 to 4.x |
| 105 | +- [ ] Upgrade `postcss-loader` 7.3.4 to 8.x |
| 106 | +- [ ] Upgrade `webpack-cli` 5.1.4 to 6.x |
| 107 | +- [ ] Upgrade `webpack-merge` 5.10.0 to 6.x |
| 108 | +- [ ] Verify webpack config compatibility with new loader APIs |
| 109 | +- [ ] Test dev (`npm run watch`) and production (`npm run build`) builds |
| 110 | + |
| 111 | +**Verification**: `npm run build`, `npm run watch` (manual check), `npm test` |
| 112 | + |
| 113 | +## Phase 6: Tailwind CSS 4 (Evaluate) |
| 114 | + |
| 115 | +Tailwind CSS 4 is a ground-up rewrite with a new engine and config format. This is the highest-effort upgrade and may not be worth doing depending on project roadmap. |
| 116 | + |
| 117 | +**Branch**: `chore/deps-tailwind-4` |
| 118 | + |
| 119 | +- [ ] Review Tailwind CSS 4 migration guide |
| 120 | +- [ ] Evaluate effort vs. benefit for this project |
| 121 | +- [ ] Decision: proceed or defer |
| 122 | +- [ ] If proceeding: |
| 123 | + - [ ] Migrate `tailwind.config.js` to new format |
| 124 | + - [ ] Update `@tailwindcss/*` plugins for v4 compatibility |
| 125 | + - [ ] Audit all custom Tailwind classes for breaking changes |
| 126 | + - [ ] Test all UI screens in Figma plugin |
| 127 | + |
| 128 | +**Verification**: `npm run build`, visual regression check in Figma |
| 129 | + |
| 130 | +## Other Noted Upgrades |
| 131 | + |
| 132 | +- [ ] `@types/jest` 29.x to 30.x - evaluate after Phase 5 (may require Jest 30) |
| 133 | + |
| 134 | +## Completion Log |
| 135 | + |
| 136 | +| Phase | Date | Notes | |
| 137 | +| ------- | ---------- | ----------------------------------------- | |
| 138 | +| Phase 1 | 2026-03-05 | PR #16. Closed dependabot PRs #5, #6, #7. | |
| 139 | +| Phase 2 | | | |
| 140 | +| Phase 3 | | | |
| 141 | +| Phase 4 | | | |
| 142 | +| Phase 5 | | | |
| 143 | +| Phase 6 | | | |
0 commit comments