Skip to content

Releases: facebook/react

v0.12.0

21 Nov 00:33

Choose a tag to compare

React Core

Breaking Changes

  • key and ref moved off props object, now accessible on the element directly
  • React is now BSD licensed with accompanying Patents grant
  • Default prop resolution has moved to Element creation time instead of mount time, making them effectively static
  • React.__internals is removed - it was exposed for DevTools which no longer needs access
  • Composite Component functions can no longer be called directly - they must be wrapped with React.createFactory first. This is handled for you when using JSX.

New Features

  • Spread operator ({...}) introduced to deprecate this.transferPropsTo
  • Added support for more HTML attributes: acceptCharset, classID, manifest

Deprecations

  • React.renderComponent --> React.render
  • React.renderComponentToString --> React.renderToString
  • React.renderComponentToStaticMarkup --> React.renderToStaticMarkup
  • React.isValidComponent --> React.isValidElement
  • React.PropTypes.component --> React.PropTypes.element
  • React.PropTypes.renderable --> React.PropTypes.node
  • DEPRECATED React.isValidClass
  • DEPRECATED instance.transferPropsTo
  • DEPRECATED Returning false from event handlers to preventDefault
  • DEPRECATED Convenience Constructor usage as function, instead wrap with React.createFactory
  • DEPRECATED use of key={null} to assign implicit keys

Bug Fixes

  • Better handling of events and updates in nested results, fixing value restoration in "layered" controlled components
  • Correctly treat event.getModifierState as case sensitive
  • Improved normalization of event.charCode
  • Better error stacks when involving autobound methods
  • Removed DevTools message when the DevTools are installed
  • Correctly detect required language features across browsers
  • Fixed support for some HTML attributes:
    • list updates correctly now
    • scrollLeft, scrollTop removed, these should not be specified as props
  • Improved error messages

React With Addons

New Features

  • React.addons.batchedUpdates added to API for hooking into update cycle

Breaking Changes

  • React.addons.update uses assign instead of copyProperties which does hasOwnProperty checks. Properties on prototypes will no longer be updated correctly.

Bug Fixes

  • Fixed some issues with CSS Transitions

JSX

Breaking Changes

  • Enforced convention: lower case tag names are always treated as HTML tags, upper case tag names are always treated as composite components
  • JSX no longer transforms to simple function calls

New Features

  • @jsx React.DOM no longer required
  • spread ({...}) operator introduced to allow easier use of props

Bug Fixes

  • JSXTransformer: Make sourcemaps an option when using APIs directly (eg, for react-rails)

v0.12.0-rc1

18 Apr 22:45

Choose a tag to compare

v0.12.0-rc1 Pre-release
Pre-release
v0.12.0-rc1

v0.11.2

21 Nov 00:33

Choose a tag to compare

React Core

New Features

  • Added support for <dialog> element and associated open attribute
  • Added support for <picture> element and associated media and sizes attributes
  • Added React.createElement API in preparation for React v0.12
    • React.createDescriptor has been deprecated as a result

JSX

  • <picture> is now parsed into React.DOM.picture

React Tools

  • Update esprima and jstransform for correctness fixes
  • The jsx executable now exposes a --strip-types flag which can be used to remove TypeScript-like type annotations
    • This option is also exposed to require('react-tools').transform as stripTypes

v0.11.1

21 Nov 00:33

Choose a tag to compare

React Core

Bug Fixes

  • setState can be called inside componentWillMount in non-DOM environments
  • SyntheticMouseEvent.getEventModifierState correctly renamed to getModifierState
  • getModifierState correctly returns a boolean
  • getModifierState is now correctly case sensitive
  • Empty Text node used in IE8 innerHTML workaround is now removed, fixing rerendering in certain cases

JSX

  • Fix duplicate variable declaration in JSXTransformer (caused issues in some browsers)

v0.11.0

21 Nov 00:33

Choose a tag to compare

React Core

Breaking Changes

  • getDefaultProps() is now called once per class and shared across all instances
  • MyComponent() now returns a descriptor, not an instance
  • React.isValidComponent and React.PropTypes.component validate descriptors, not component instances
  • Custom propType validators should return an Error instead of logging directly

New Features

  • Rendering to null
  • Keyboard events include normalized e.key and e.getModifierState() properties
  • New normalized onBeforeInput event
  • React.Children.count has been added as a helper for counting the number of children

Bug Fixes

  • Re-renders are batched in more cases
  • Events: e.view properly normalized
  • Added Support for more HTML attributes (coords, crossOrigin, download, hrefLang, mediaGroup, muted, scrolling, shape, srcSet, start, useMap)
  • Improved SVG support
    • Changing className on a mounted SVG component now works correctly
    • Added support for elements mask and tspan
    • Added support for attributes dx, dy, fillOpacity, fontFamily, fontSize, markerEnd, markerMid, markerStart, opacity, patternContentUnits, patternUnits, preserveAspectRatio, strokeDasharray, strokeOpacity
  • CSS property names with vendor prefixes (Webkit, ms, Moz, O) are now handled properly
  • Duplicate keys no longer cause a hard error; now a warning is logged (and only one of the children with the same key is shown)
  • img event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same data-reactid"
  • Added explicit warning when missing polyfills

React With Addons

  • PureRenderMixin: a mixin which helps optimize "pure" components
  • Perf: a new set of tools to help with performance analysis
  • Update: New $apply command to transform values
  • TransitionGroup bug fixes with null elements, Android

React NPM Module

  • Now includes the pre-built packages under dist/.
  • envify is properly listed as a dependency instead of a peer dependency

JSX

  • Added support for namespaces, eg <Components.Checkbox />
  • JSXTransformer
    • Enable the same harmony features available in the command line with <script type="text/jsx;harmony=true">
    • Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
    • Fixed a bug preventing sourcemaps from working in Firefox

React Tools Module

  • Improved readme with usage and API information
  • Improved ES6 transforms available with --harmony option
  • Added --source-map-inline option to the jsx executable
  • New transformWithDetails API which gives access to the raw sourcemap data

v0.11.0-rc1

18 Apr 22:48

Choose a tag to compare

0.11.0-rc1

v0.10.0

21 Nov 00:32

Choose a tag to compare

React Core

New Features

  • Added warnings to help migrate towards descriptors
  • Made it possible to server render without React-related markup (data-reactid, data-react-checksum). This DOM will not be mountable by React. Read the docs for React.renderComponentToStaticMarkup
  • Added support for more attributes:
    • srcSet for <img> to specify images at different pixel ratios
    • textAnchor for SVG

Bug Fixes

  • Ensure all void elements don’t insert a closing tag into the markup.
  • Ensure className={false} behaves consistently
  • Ensure this.refs is defined, even if no refs are specified.

Addons

react-tools

  • Added an option argument to transform function. The only option supported is harmony, which behaves the same as jsx --harmony on the command line. This uses the ES6 transforms from jstransform.

v0.10.0-rc1

18 Apr 22:48

Choose a tag to compare

update version for 0.10rc

v0.9.0

04 Mar 23:10

Choose a tag to compare

What’s New?

This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.

We've also added to the add-ons build React.addons.TestUtils, a set of new utilities to help you write unit tests for React components. You can now simulate events on your components, and several helpers are provided to help make assertions about the rendered DOM tree.

We've also made several other improvements and a few breaking changes; the full changelog is provided below.

JSX Whitespace

In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:

<div>
  Monkeys:
  {listOfMonkeys} {submitButton}
</div>

In v0.8 and below, it was transformed to the following:

React.DOM.div(null,
  " Monkeys: ",
  listOfMonkeys, submitButton
)

In v0.9, it will be transformed to this JS instead:

React.DOM.div(null,
  "Monkeys:",
  listOfMonkeys, " ", submitButton
)

We believe this new behavior is more helpful and elimates cases where unwanted whitespace was previously added.

In cases where you want to preserve the space adjacent to a newline, you can write {'Monkeys: '} or Monkeys:{' '} in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can install jsx_whitespace_transformer from npm and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.

Changelog

React Core

Breaking Changes

  • The lifecycle methods componentDidMount and componentDidUpdate no longer receive the root node as a parameter; use this.getDOMNode() instead
  • Whenever a prop is equal to undefined, the default value returned by getDefaultProps will now be used instead
  • React.unmountAndReleaseReactRootNode was previously deprecated and has now been removed
  • React.renderComponentToString is now synchronous and returns the generated HTML string
  • Full-page rendering (that is, rendering the <html> tag using React) is now supported only when starting with server-rendered markup
  • On mouse wheel events, deltaY is no longer negated
  • When prop types validation fails, a warning is logged instead of an error thrown (with the production build of React, type checks are now skipped for performance)
  • On input, select, and textarea elements, .getValue() is no longer supported; use .getDOMNode().value instead

New Features

  • React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
  • Added support for SVG tags defs, linearGradient, polygon, radialGradient, stop
  • Added support for more attributes:
    • crossOrigin for CORS requests
    • download and hrefLang for <a> tags
    • mediaGroup and muted for <audio> and <video> tags
    • noValidate and formNoValidate for forms
    • property for Open Graph <meta> tags
    • sandbox, seamless, and srcDoc for <iframe> tags
    • scope for screen readers
    • span for <colgroup> tags
  • Added support for defining propTypes in mixins
  • Added any, arrayOf, component, oneOfType, renderable, shape to React.PropTypes
  • Added support for statics on component spec for static component methods
  • On all events, .currentTarget is now properly set
  • On keyboard events, .key is now polyfilled in all browsers for special (non-printable) keys
  • On clipboard events, .clipboardData is now polyfilled in IE
  • On drag events, .dragTransfer is now present
  • Added support for onMouseOver and onMouseOut in addition to the existing onMouseEnter and onMouseLeave events
  • Added support for onLoad and onError on <img> elements
  • Added support for onReset on <form> elements
  • The autoFocus attribute is now polyfilled consistently on input, select, and textarea

Bug Fixes

  • React no longer adds an __owner__ property to each component's props object; passed-in props are now never mutated
  • When nesting top-level components (e.g., calling React.renderComponent within componentDidMount), events now properly bubble to the parent component
  • Fixed a case where nesting top-level components would throw an error when updating
  • Passing an invalid or misspelled propTypes type now throws an error
  • On mouse enter/leave events, .target, .relatedTarget, and .type are now set properly
  • On composition events, .data is now properly normalized in IE9 and IE10
  • CSS property values no longer have px appended for the unitless properties columnCount, flex, flexGrow, flexShrink, lineClamp, order, widows
  • Fixed a memory leak when unmounting children with a componentWillUnmount handler
  • Fixed a memory leak when renderComponentToString would store event handlers
  • Fixed an error that could be thrown when removing form elements during a click handler
  • Boolean attributes such as disabled are rendered without a value (previously disabled="true", now simply disabled)
  • key values containing . are now supported
  • Shortened data-reactid values for performance
  • Components now always remount when the key property changes
  • Event handlers are attached to document only when necessary, improving performance in some cases
  • Events no longer use .returnValue in modern browsers, eliminating a warning in Chrome
  • scrollLeft and scrollTop are no longer accessed on document.body, eliminating a warning in Chrome
  • General performance fixes, memory optimizations, improvements to warnings and error messages

React with Addons

  • React.addons.TestUtils was added to help write unit tests
  • React.addons.TransitionGroup was renamed to React.addons.CSSTransitionGroup
  • React.addons.TransitionGroup was added as a more general animation wrapper
  • React.addons.cloneWithProps was added for cloning components and modifying their props
  • Bug fix for adding back nodes during an exit transition for CSSTransitionGroup
  • Bug fix for changing transitionLeave in CSSTransitionGroup
  • Performance optimizations for CSSTransitionGroup
  • On checkbox <input> elements, checkedLink is now supported for two-way binding

JSX Compiler and react-tools Package

  • Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
  • The react-tools npm package no longer includes the React core libraries; use the react package instead.
  • displayName is now added in more cases, improving error messages and names in the React Dev Tools
  • Fixed an issue where an invalid token error was thrown after a JSX closing tag
  • JSXTransformer now uses source maps automatically in modern browsers
  • JSXTransformer error messages now include the filename and problematic line contents when a file fails to parse

v0.9.0-rc1

18 Apr 22:48

Choose a tag to compare

0.9.0-rc1