Hi all,
I've put together a roadmap to modernize the Ascender UI, and wanted to share it with the maintainers.
What React is
React is the JavaScript library the Ascender UI is written in, a component model where every screen is a tree of functions that render HTML and re-render when their data changes. Ascender was on 17.0.2 when this thread opened, and main is on 19.2.7 today, staged because each release in between changed how rendering and effects behave.
What PatternFly is
PatternFly is Red Hat's open source design system, and its React implementation supplies the buttons, tables, forms, wizards and page layout the UI is assembled from. Ascender was on @patternfly/react-core 4.278.1, the version AWX picked when it built the classic interface, and main is on 6.5.1 today, rebuilt on CSS design tokens.
The move
Four majors, all in one direction:
react 17.0.2 -> 19
react-router 5.3.3 -> 7
@patternfly/react-core 4.278.1 -> 6
enzyme 3.11.0 -> React Testing Library
Upstream AWX chose to build a brand new interface rather than migrate the classic one. I prefer the classic UI, so this modernizes its components in place: incrementally, in small reviewable PRs that keep main shippable throughout.
The sequence
Some steps parallelize and others are hard blocked, so this is a dependency graph rather than a list:
- styled-components 5 to 6
- react-router 5 to 6, on the official v5 compat bridge
- The route tree finale,
<Switch> to <Routes>, screen by screen
- Enzyme to React Testing Library, 547 test files
- React 17 to 18
- PatternFly 4 to 5
- PatternFly 5 to 6
- react-router 6 to 7
- React 18 to 19
The critical path is 4, 5, 6, 7, 9: finish the Enzyme removal, then React 18, then PatternFly 6, then React 19.
Risks I'm tracking
- formik, 175 files of forms, has no upgrade lever: 2.4.9, quiet since 2023.
- The form heavy screens get validated hard at React 18, where it would break.
- PatternFly 4 uses
findDOMNode, which React 19 removes. PatternFly 6 lands first.
- react-virtualized is dead: @tanstack/react-virtual or react-window replaces it.
Pull requests
Happy to re-sequence to your release cadence. Keeping this UI supported feels worth it to me.
Thanks for building Ascender.