Most of the MFEs of edX are currently using React JS v16. In order to use latest React JS, we are planning to upgrade React JS to v17.
Context & Background
React 17 doesn’t add any new developer-facing features, so its upgrade might not cause any breaking changes. Our end goal is to upgrade React to v18 but v18 no longer support enzyme, so we are upgrading to React 17 and then we’ll migrate from enzyme.
Scope & Approach
In each MFE/library, with React, React DOM 17 upgrade, we may need to upgrade following
in case of Typescript, install @types/react@17.0.0
If you are using React Testing Library, you would want to be under 12.1.5, which is the latest version that supports React < 18.
Replace enzyme-adapter-react-16 with @wojtekmaj/enzyme-adapter-react-17 since enzyme doesn't provide support for react 17.
react-test-renderer should also be updated.
Value & Impact
After this upgrade, we'll get one step closer to use latest React JS across the board
- [x] [Create a roadmap issue](https://github.com/openedx/platform-roadmap/issues/new/choose) in the platform-roadmap repository
- [x] Add this checklist to the roadmap issue's description
- [x] Add the "maintenance" label to the roadmap issue
- [x] Add the roadmap issue to the Backlog column of the [Open edX Roadmap](https://github.com/orgs/openedx/projects/4/views/1) project
- [x] Set appropriate values for the roadmap project's custom fields for the issue (especially "Proposed by", "Platform map - Super Level", "Strategy", and "Type")
- [x] Set an appropriate release milestone for the roadmap issue
- [ ] Add an explicit target completion date to the roadmap issue description, and explain there why it was chosen
- [x] Select an orchestration team
- [x] Name the orchestration team in the roadmap issue description
- [ ] Create a repo health check to identify most/all of the repositories impacted by the upgrade (and ideally, whether or not the upgrade is believed to be complete)
- [x] Create a new value for the "Project" field in the [Maintenance](https://github.com/orgs/edx/projects/17/views/1) project board for this upgrade project
- [ ] Create a new view in the Maintenance project board that filters down to only the issues in this upgrade project
- [ ] Create an issue in each impacted repository for the upgrade, and add it to the Todo column of the [Maintenance](https://github.com/orgs/edx/projects/17/views/1) project board; specify at least the "Project" and "Source" field for each issue (and "Owner" also if you're a 2U or Arbisoft employee)
- [x] Create a [task list](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-tasklists) in the roadmap issue listing all of the impacted repository issues
- [x] Create a page under [Upgrades](https://openedx.atlassian.net/wiki/spaces/AC/pages/1165395730) in Confluence for documentation related to the upgrade
- [x] Add a link to the Confluence page from the roadmap issue
- [x] Add a link to the roadmap issue from the Confluence page
- [ ] Document in a Confluence child page the changes believed to be most problematic and/or interesting about the upgrade
- [ ] Create a ticket to determine the appropriate amount of automation (codemods, repo health checks, etc.) to create for the upgrade
- [ ] Perform the automation discovery work and write upgrade instructions for all project participants in a Confluence child page
- [x] Link to the upgrade instructions from the roadmap issue
- [x] Send an [announcement](https://openedx.atlassian.net/wiki/spaces/AC/pages/3702325257/Upgrade-Related+Announcements) of the upgrade, asking code maintainers to read the upgrade instructions and select an upgrade service level for each impacted repository in its corresponding issue
- [ ] Create issues in [public-engineering](https://github.com/openedx/public-engineering) for each external dependency which still needs code changes and/or a release to support the upgrade
- [ ] Add the "help wanted" and "maintenance" labels to each public-engineering issue created above
- [ ] Add each public-engineering issue created above to the Maintenance project board
- [ ] Set appropriate values for the Maintenance project board custom fields for each added public-engineering issue
- [ ] Ask the Open edX developer community (especially Core Committers) for assistance with the added public-engineering issues
- [ ] Create [Build-Test-Release Working Group](https://github.com/orgs/openedx/projects/28) and/or 2U SRE tickets if they will need to do work for the upgrade
- [ ] Complete and update all of the created implementation tickets
- [ ] Deploy all of the updated services
- [ ] Update the [support windows spreadsheet](https://docs.google.com/spreadsheets/d/11DheEtMDGrbA9hsUvZ2SEd4Cc8CaC4mAfoV8SVaLBGI/edit#gid=195838733) to correctly indicate the version now used
- [ ] [Announce](https://openedx.atlassian.net/wiki/spaces/AC/pages/3702325257) the successful completion of the upgrade
- [ ] Make sure any deployment instructions make it into the release notes of the next Open edX named release (collaborate with the BTR WG)
- [ ] Remove any CI matrix entries for no-longer-supported versions of the dependency
- [ ] Remove the Maintenance project board view/tab created for the upgrade
- [ ] Stop running repo health checks related to the upgrade which are no longer relevant
- [ ] Schedule and run a retrospective meeting about the upgrade
- [ ] Update the [Upgrade Project Runbook](https://openedx.atlassian.net/wiki/spaces/AC/pages/3660316693/Upgrade+Project+Runbook) based on retrospective findings, if appropriate
- [ ] Mark the roadmap issue for the upgrade as complete
- [ ] Move the root Confluence page for this upgrade’s docs under [Past Upgrades](https://openedx.atlassian.net/wiki/spaces/AC/pages/1883865104)
- [ ] Ticket work to replace or take over dependencies which were found during the upgrade to be inadequately maintained
Abstract
Most of the MFEs of edX are currently using React JS v16. In order to use latest React JS, we are planning to upgrade React JS to v17.
Context & Background
React 17 doesn’t add any new developer-facing features, so its upgrade might not cause any breaking changes. Our end goal is to upgrade React to v18 but v18 no longer support enzyme, so we are upgrading to React 17 and then we’ll migrate from enzyme.
Scope & Approach
In each MFE/library, with React, React DOM 17 upgrade, we may need to upgrade following
Value & Impact
After this upgrade, we'll get one step closer to use latest React JS across the board
Milestones and/or Epics
https://github.com/edx/upgrades/issues/390 React 17 Upgrade
Named Release
Q
Timeline
Tentative End Date: July 31, 2023
Proposed By
2u
Tasks