Use the modern JSX transform (closes #123) #129
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.