setStatecallbacks are now executed in the scope of your component.clickevents now work on Mobile Safari.- Prevent a potential error in event handling if
Object.prototypeis extended. - Don't set DOM attributes to the string
"undefined"on update when previously defined. - Improved support for
<iframe>attributes. - Added checksums to detect and correct cases where server-side rendering markup mismatches what React expects client-side.
- Improved environment detection so it can be run in a non-browser environment.
- Switch from using
idattribute todata-reactidto track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily. - Support for more DOM elements and attributes (e.g.,
<canvas>) - Improved server-side rendering APIs.
React.renderComponentToString(<component>, callback)allows you to use React on the server and generate markup which can be sent down to the browser. propimprovements: validation and default values. Read our blog post for details...- Support for the
keyprop, which allows for finer control over reconciliation. Read the docs for details... - Removed
React.autoBind. Read our blog post for details... - Improvements to forms. We've written wrappers around
<input>,<textarea>,<option>, and<select>in order to standardize many inconsistencies in browser implementations. This includes support fordefaultValue, and improved implementation of theonChangeevent, and circuit completion. Read the docs for details... - We've implemented an improved synthetic event system that conforms to the W3C spec.
- Updates to your component are batched now, which may result in a significantly faster re-render of components.
this.setStatenow takes an optional callback as it's second parameter. If you were usingonClick={this.setState.bind(this, state)}previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
- Support for comment nodes
<div>{/* this is a comment and won't be rendered */}</div> - Children are now transformed directly into arguments instead of being wrapped in an array
E.g.
<div><Component1/><Component2/></div>is transformed intoReact.DOM.div(null, Component1(null), Component2(null)). Previously this would be transformed intoReact.DOM.div(null, [Component1(null), Component2(null)]). If you were using React without JSX previously, your code should still work.
- Fixed a number of bugs when transforming directories
- No longer re-write
require()s to be relative unless specified
- Allow reusing the same DOM node to render different components. e.g.
React.renderComponent(<div/>, domNode); React.renderComponent(<span/>, domNode);will work now.
- Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files.
- Upgrade Commoner so
requirestatements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers ofbin/jsx. - Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
- Freeze our esprima dependency.
- Improved compatability with other coding styles (specifically, multiple assignments with a single
var).
- Switch from using the browserified build to shipping individual modules. This allows react-tools to be used with browserify.
- Fix bug in packaging resulting in broken module.
- Initial public release