The change is subtle and easy to misinterpret. It's not that React drank ES6 class kool-aid and we're now gonna use inheritance over composition. (Nope[1], in fact pretty much the opposite[2].)
The real change is that React.createClass is no longer the way to create components. It's just a fancy wrapper (which is not even being deprecated). You want magic, you opt-in to it.
ES6 classes are also not the way to create components. As mentioned at the end of the article, you can even use ES3 module pattern:
function MyComponent(initialProps) {
return {
state: { value: initialProps.initialValue },
render: function() {
return <span className={this.state.value} />
}
};
}
React.createClass stops being special/required and becomes a (handy) utility. Can potentially be moved into a separate package.Competition for mixin systems is now possible.
Finally, this change opens up more possibilities for potential React-like frameworks to “interpret” React components. Of course we don't do that today, but it's still a nice property and may be handy later when you decide to switch to future React-like competitor.
It's the anti-lock-in.
[0]: http://jlongster.com/Modularity
[1]: https://github.com/facebook/react/issues/613#issuecomment-29...
[2]: https://github.com/reactjs/react-future/blob/master/01%20-%2...