react v0.9.0 Release Notes

Release Date: 2014-02-20 // about 10 years ago
  • React Core

    ๐Ÿ’ฅ Breaking Changes

    • โšก๏ธ The lifecycle methods componentDidMount and componentDidUpdate no longer receive the root node as a parameter; use this.getDOMNode() instead
    • 0๏ธโƒฃ 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
    • this.context on components is now reserved for internal use by React

    ๐Ÿ†• 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