Skip to content

Investigate Material-UI upgrade effort in Timliner #93

@Dananji

Description

@Dananji

Description

We've compiled multiple a11y issues based on the accessibility audits performed on timeliner (in both Avalon and standalone versions).

Some of these are rooted in material-ui components used in the timeliner code, e.g. MUI's slider and dialog components. These 2 are highlighted in the a11y issues compiled in the audits.
And looking at these components in the latest MUI version, these a11y issue seem to be fixed in the MUI code.

And this poses the question whether we should upgrade MUI in timeliner?
Going forward with the existing older version exposes the app to security vulnerabilities (these might not directly impact Avalon?), blocking access to bug fixes in MUI/ReactJS and other dependencies in Timeliner code, and making it more complex to upgrade in the future. At the same time we'll need to keep making fixes locally adding more code making it harder to maintain.

From my brief investigation the following dependencies will definitely need to be upgraded as a result of this migration. This would require a larger effort even if it's done in phases.

Package Current Required for MUI v7
React 16.8.6 18.0.0+
React-DOM 16.8.6 18.0.0+
React-Redux 5.0.7 8.0.0+ (for React 18)

And there maybe more minor dependencies that will need upgrading during migration, since we would be upgrading the base React version in timeliner.

Major breaking changes from a quick search;
In MUI,

  • v3 -> v4
    • Changes to React ref forwarding
    • Style naming with respect to class-names
    • JSS framework updates
    • Changes to component APIs
  • v4 -> v5
    • Package renaming and installation
    • Styling solution change (JSS to Emotion)
    • Theme structure and API changes
    • Some component-specific changes
  • v5 -> v6
    • Minimal breaking changes in MUI, however changes to platform and bundle sizes are applied in this upgrade
  • v6 -> v7
    • Changes to package structure
    • Removal of deprecated components, styling, and APIs
  • React 16 → 18, ReactDOM.render()ReactDOM.createRoot() and other related changes
  • Changes to MUI's API and React upgrade might require class components to be converted into functional components
  • Redux 5 -> 8, store setup and usage may need changes

Done Looks Like

  • Compare the efforts to upgrade vs fixing the a11y issues without upgrading
  • If continuing the upgrade path,
    • Investigate the best approach for the upgrade and devise a plan including testing
    • Identify whether there are any changes for the build process with the upgrade
    • Check for other breaking dependencies

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions