What Is New in React 0.0 (summary table)
The provided source discusses React v0.14, not a hypothetical version 0.0. Based on the v0.14 release, the major updates are summarized below.
| Category | Key Changes |
|---|---|
| Package Structure | React core split into separate react and react-dom packages. |
| DOM & Native Rendering | New, cleaner API for rendering to the DOM (ReactDOM.render) and native platforms. |
| Improvements | Full SVG support, normalized browser events, enhanced server-side rendering. |
| Deprecations | Legacy patterns like React.initializeTouchEvents and certain addon methods are deprecated. |
| Addons & Browser Support | Addons moved to separate packages; Internet Explorer 8 support is dropped. |
Why was React split into two packages?
React's architecture was refactored to separate its core reconciliation logic from the rendering layer. The react package now contains React.createElement, component classes, and the core algorithms. The react-dom package holds the DOM-specific renderers like ReactDOM.render.
This split clarifies the abstraction. It allows different renderers (like React Native for mobile) to share the same React core. In practice, you import from both packages to build a web app.
What changed for rendering DOM components?
The API for interacting with the DOM was streamlined and moved to the new react-dom package. The primary method, ReactDOM.render, replaces the old React.render.
Other DOM utilities were moved as well: ReactDOM.unmountComponentAtNode and ReactDOM.findDOMNode. This matters because it enforces a clear separation between the component tree and its DOM output.
How did SVG support get better?
React v0.14 introduced full support for SVG attributes. Previously, you could render SVG tags, but many attributes were unsupported. Now, you can use standard SVG attribute names directly in JSX.
This means you can create interactive charts or graphics with React using the same SVG elements and properties you'd use in plain HTML. The support is comprehensive, covering paths, gradients, and transformations.
What happened to React's addons?
Many addons were deprecated from the core package and moved to standalone modules. This includes tools like the clone-with-props addon and the deprecated test utilities.
The goal was to keep the React core lean and let addons evolve independently. For instance, the react-addons-perf package became the new home for performance measurement tools.
FAQ
Do I need to change my existing components for the two-package structure?
Yes, but the changes are minimal. Update your imports: replace var React = require('react'); with var ReactDOM = require('react-dom'); for DOM-specific methods. Your component class definitions remain in the react package.
Is server-side rendering different now?
The API is largely the same but moved to react-dom/server. Use ReactDOMServer.renderToString and ReactDOMServer.renderToStaticMarkup from the new package. The underlying implementation received performance improvements.
Why were browser events normalized?
React now uses a single event system across all browsers it supports, including IE9 and above. This fixes inconsistencies and bugs related to event handling, making component behavior more predictable. You can rely on events behaving the same way everywhere.
What does dropping IE8 support mean for my app?
If you no longer target IE8, your app benefits from a simpler, faster codebase. If you still need IE8, you must stay on React v0.13 or use polyfills. This decision let the team remove legacy code and focus on modern browser features.
Are refs and findDOMNode still the recommended way to access DOM nodes?findDOMNode is still available but its use is discouraged for most cases. The pattern of attaching a ref to a DOM component is the preferred method. Refs now point directly to the DOM node for native HTML elements, which is more intuitive.