With the new transform, the $ macro is technically no longer dependent on React. This possibly opens a path to Preact support in Helix.
More importantly, we obtain marginally faster performance. React is able to make optimizations that it otherwise can't with React.createElement().
Backwards compatibility
While the new JSX transform was introduced in React 17, it has been backported to React 16.14.0, React 15.7.0, and React 0.14.10. This PR should not introduce any surprises to current users of Helix, unless they use outdated versions of React 16, 15, or 0.14.
Pros
Marginally faster performance.
Benefitting from future React optimizations
Cons
Users on versions of React below 0.14.10 will no longer be able to use Helix. Users on outdated versions of React 0.14, 15, or 16 will no longer be able to use Helix.
The logic of the $ and $d macros are slightly more complicated. The logic of the $ function is also more complicated. Unit tests are provided to ensure the output of $ matches the modern JSX transform, but these tests may need maintenance.
With the new transform, the
$
macro is technically no longer dependent on React. This possibly opens a path to Preact support in Helix.More importantly, we obtain marginally faster performance. React is able to make optimizations that it otherwise can't with
React.createElement()
.Backwards compatibility While the new JSX transform was introduced in React 17, it has been backported to React 16.14.0, React 15.7.0, and React 0.14.10. This PR should not introduce any surprises to current users of Helix, unless they use outdated versions of React 16, 15, or 0.14.
Pros
Cons
$
and$d
macros are slightly more complicated. The logic of the$
function is also more complicated. Unit tests are provided to ensure the output of$
matches the modern JSX transform, but these tests may need maintenance.