Skip to content

10: Upgrade dependencies p1#9177

Open
camd wants to merge 42 commits intomasterfrom
camd/upgrade-dependencies-p1
Open

10: Upgrade dependencies p1#9177
camd wants to merge 42 commits intomasterfrom
camd/upgrade-dependencies-p1

Conversation

@camd
Copy link
Collaborator

@camd camd commented Jan 24, 2026

Post-React 19 upgrade:

Phase 2: Replace Inactive/Problematic Dependencies - COMPLETED ✅

Completed: January 2026

Summary

  1. react-highlight-words updated from 0.20.0 to 0.21.0
  2. react-lazylog tested with React 19 - works correctly (react-virtualized supports React 19)
  3. react-hot-keys tested with React 19 - works correctly (peer dep >=16.9.0)
  4. react-table-6 deferred to Phase 4 (works at runtime despite peer dep warning)
  5. react-linkify kept at 0.2.2 (1.0.0-alpha not production-ready)

2.1 react-lazylog Status

Current: 4.5.3 (INACTIVE - mozilla-frontend-infra marked as archived)
Usage: 2 files (ui/logviewer/App.jsx, ui/shared/tabs/LogviewerTab.jsx)
Status: ✅ Works with React 19

The original react-lazylog from Mozilla is no longer maintained, but its dependency react-virtualized explicitly supports React 19 (^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0). Build and tests pass.

Future: If issues arise, migrate to @melloware/react-logviewer.

2.2 react-table-6 Replacement (Deferred)

Current: 6.11.0 (peer dependency warning)
Usage: 5 files in ui/intermittent-failures/ and ui/perfherder/
Risk: High - Significant refactoring required

Status: Works at runtime despite peer dependency warning. Migration to TanStack Table v8 would require significant refactoring since it's headless (no built-in UI).

Recommendation: Defer to Phase 4. Document current behavior and monitor for actual issues.

2.3 react-highlight-words ✅

Updated: 0.20.0 → 0.21.0
Usage: 1 file (ui/shared/tabs/failureSummary/BugListItem.jsx)

2.4 react-linkify

Current: 0.2.2 → 1.0.0-alpha available
Usage: 2 files (ui/shared/RevisionLinkify.jsx, ui/shared/BugLinkify.jsx)

Status: Kept at 0.2.2. Alpha version is not production-ready.

2.5 react-hot-keys ✅

Current: 2.7.3
Usage: 1 file (ui/job-view/KeyboardShortcuts.jsx)
Status: Works with React 19 (peer dep >=16.9.0)

@camd camd self-assigned this Jan 24, 2026
@codecov-commenter
Copy link

codecov-commenter commented Jan 24, 2026

Codecov Report

❌ Patch coverage is 66.17336% with 160 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.28%. Comparing base (e6e0200) to head (f35a131).

Files with missing lines Patch % Lines
ui/job-view/stores/selectedJobStore.js 61.03% 53 Missing and 7 partials ⚠️
ui/job-view/stores/pinnedJobsStore.js 48.97% 42 Missing and 8 partials ⚠️
ui/job-view/stores/notificationStore.js 39.28% 17 Missing ⚠️
ui/job-view/details/PinBoard.jsx 84.09% 7 Missing ⚠️
ui/job-view/details/summary/ActionBar.jsx 30.00% 7 Missing ⚠️
ui/job-view/KeyboardShortcuts.jsx 62.50% 6 Missing ⚠️
ui/job-view/details/tabs/TabsPanel.jsx 72.72% 3 Missing ⚠️
ui/job-view/CustomJobActions.jsx 50.00% 2 Missing ⚠️
ui/job-view/details/tabs/AnnotationsTab.jsx 50.00% 2 Missing ⚠️
ui/job-view/headerbars/NotificationsMenu.jsx 90.90% 2 Missing ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #9177      +/-   ##
==========================================
- Coverage   82.80%   82.28%   -0.53%     
==========================================
  Files         607      610       +3     
  Lines       34081    34354     +273     
  Branches     3300     3360      +60     
==========================================
+ Hits        28221    28267      +46     
- Misses       5735     5927     +192     
- Partials      125      160      +35     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@camd camd force-pushed the camd/upgrade-dependencies-p1 branch 8 times, most recently from c351897 to 4814090 Compare February 7, 2026 20:41
camd and others added 17 commits February 12, 2026 21:51
- Phase 1: Migrate notifications store to Zustand
  * Create notificationStore.js with notify action
  * Update all components to import from new store

- Phase 2: Migrate pinnedJobs store to Zustand
  * Create pinnedJobsStore.js with pinned jobs and pin board visibility
  * Update PinBoard, DetailsPanel, and related components

- Phase 3: Migrate selectedJob store to Zustand (PRESERVING CRITICAL FIXES)
  * Create selectedJobStore.js with job selection logic
  * IMPORTANT: Preserve URL-first architecture from camd/fix-job-click-clear-bug:
    - selectJobViaUrl() for URL-first job selection
    - clearJobViaUrl() for clearing via URL
    - syncSelectionFromUrl() for syncing state from URL
    - wasJobJustSelected() to prevent race condition when clicking jobs
  * These functions ensure:
    - Jobs scroll into view on page load
    - Legacy selectedJob URL parameter is supported
    - Clicking different jobs no longer closes the details panel
  * Remove Redux connect from PushJobs (now uses Zustand directly)
  * Update PushList and DetailsPanel to use new store

Note: Phase 4 (push store migration) is NOT included in this commit.
The push store remains in Redux to minimize risk and preserve stability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Zustand dependency added during rebase

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Upgrade React and React DOM to version 19
- Replace react-helmet with React 19 native document metadata
- Update React 19 upgrade plan documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
camd and others added 25 commits February 12, 2026 21:55
- Add cleanup and setUrlParam imports
- Remove duplicate testPushJobs function
- Remove duplicate beforeEach block

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Minor dependency version updates from pnpm install.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Upgrade from React Router v6 to v7
- Create comprehensive upgrade plan for future migration steps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
After rebasing react-router-7 onto react-19, regenerate the lockfile to resolve
dependency conflicts and ensure consistency.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove duplicate render calls in Health_test.jsx
- Remove history.push calls (not available in React Router 7)
- Fix conflict markers in selected_job_test.jsx
- Remove unused act import from selectedJob_test.jsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The React Router 7 upgrade accidentally removed the Redux Provider,
but the job-view App still uses Redux (useSelector, useDispatch).
This restores the Provider wrapper to prevent runtime errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Minor dependency version updates from pnpm install.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Upgrade from React Router v6 to v7
- Create comprehensive upgrade plan for future migration steps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ESLint with Biome for faster linting and formatting.
Biome provides unified linting and formatting in a single tool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Upgrade React and React DOM to version 19
- Replace react-helmet with React 19 native document metadata
- Update React 19 upgrade plan documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove duplicate React act environment configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove conflict markers from:
- tests/ui/job-view/details/PinBoard_test.jsx
- tests/ui/job-view/selected_job_test.jsx
- tests/ui/job-view/stores/selectedJob_test.jsx
- tests/ui/push-health/Health_test.jsx

All tests now use the Zustand pattern (not Redux dispatch).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@camd camd force-pushed the camd/upgrade-dependencies-p1 branch from 27b0c8b to f35a131 Compare February 13, 2026 06:02
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.

2 participants