For most problems, the following is how you define a component:<p><pre><code>    function Comp(state) {
        return React.createElement(
          &#x27;div&#x27;, &#x2F;&#x2F; tag name
          {}, &#x2F;&#x2F; props&#x2F;attributes
          &#x27;Hello &#x27;, state.name &#x2F;&#x2F; children
        );
    }
</code></pre>
And this is how you use it:<p><pre><code>    ReactDOM.render(
      React.createElement(Comp, {name: &#x27;World&#x27;}),
      document.getElementById(&#x27;stage&#x27;)
    );
</code></pre>
So in those situations the entire surface of the React API consists of two functions: React.createElement and ReactDOM.render. And if you use JSX, you won&#x27;t even directly use React.createElement in your code.<p>React is conceptually trivial. The API has been getting tighter with each release. React is in active development but so are all of its competitors[1][2]. React is production ready -- Facebook is even dogfooding the pre-releases in production.<p>[1]: in fact, when a library&#x2F;frameworks stops being actively developed people start assuming it&#x27;s dead. Counter-example: Redux is no longer actively being developed because it is officially complete and the implementation is so straightforward and resilient it can&#x27;t really be improved right now.<p>[2]: the reason it&#x27;s bogus to compare it to Angular2 &quot;because that&#x27;s not finished yet either&quot; is that Angular2 is being built to spec whereas React is being developed under use. Angular2 will be &quot;finished&quot; when the full spec is implemented. React will be &quot;finished&quot; when real-world use shows no further need to change -- by that definition none of the alternatives (including Angular2 post-&quot;final&quot;) is &quot;finished&quot; either.