Skip to content

@zpao zpao released this Jul 29, 2013 · 13469 commits to master since this release


  • setState callbacks are now executed in the scope of your component.
  • click events now work on Mobile Safari.
  • Prevent a potential error in event handling if Object.prototype is 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.
Assets 3

@zpao zpao released this Jul 19, 2013 · 13524 commits to master since this release


  • Switch from using id attribute to data-reactid to 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.
  • prop improvements: validation and default values. Read our blog post for details...
  • Support for the key prop, 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 for defaultValue, and improved implementation of the onChange event, 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.setState now takes an optional callback as it's second parameter. If you were using onClick={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 into React.DOM.div(null, Component1(null), Component2(null)).
    Previously this would be transformed into React.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
Assets 3

@zpao zpao released this Jul 2, 2013 · 13908 commits to master since this release

This release addresses some small issues people were having and simplifies our tools to make them easier to use.


  • Upgrade Commoner so require statements 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 of bin/jsx.
  • Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
  • Freeze our esprima dependency.


  • 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.
Assets 3

@zpao zpao released this Jul 2, 2013 · 14039 commits to master since this release

Initial public release

Assets 3