New JSX Transform
A lot of context on this here <a href="https://github.com/reactjs/rfcs/pull/107" rel="nofollow">https://github.com/reactjs/rfcs/pull/107</a><p>There's a subtle aspect of this change that may not be immediately apparent. One that, imho, significantly regresses JSX as an independent syntax outside of React (i.e. makes it much more coupled to React than before):<p>JSX is an SGML/XML-inspired syntax, and SGML/XML are languages with 3 dimensions of element definition: names, attributes and children.<p>Internally, React elements are represented in 2 dimensions, with children managed as a "magic" attribute, with the reserved magic key "children" (this is for performance reasons I believe). Before now this has always been an implementation detail of React. JSX is flexible enough that other libraries could provide an element factory method with a fully featured 3-dimensional internal representation. This change removes that flexibility.<p>To clarify the change, currently JSX compiles to:<p><pre><code>  createElement(name, attributes, ...children);
</code></pre>
the new transform is now:<p><pre><code>  _jsx(name, { ...attributes, children });</code></pre>