Releases: facebook/react
v0.12.0
React Core
Breaking Changes
keyandrefmoved 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.__internalsis 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.createFactoryfirst. This is handled for you when using JSX.
New Features
- Spread operator (
{...}) introduced to deprecatethis.transferPropsTo - Added support for more HTML attributes:
acceptCharset,classID,manifest
Deprecations
React.renderComponent-->React.renderReact.renderComponentToString-->React.renderToStringReact.renderComponentToStaticMarkup-->React.renderToStaticMarkupReact.isValidComponent-->React.isValidElementReact.PropTypes.component-->React.PropTypes.elementReact.PropTypes.renderable-->React.PropTypes.node- DEPRECATED
React.isValidClass - DEPRECATED
instance.transferPropsTo - DEPRECATED Returning
falsefrom 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.getModifierStateas 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:
listupdates correctly nowscrollLeft,scrollTopremoved, these should not be specified as props
- Improved error messages
React With Addons
New Features
React.addons.batchedUpdatesadded to API for hooking into update cycle
Breaking Changes
React.addons.updateusesassigninstead ofcopyPropertieswhich doeshasOwnPropertychecks. 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.DOMno 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
v0.12.0-rc1
v0.11.2
React Core
New Features
- Added support for
<dialog>element and associatedopenattribute - Added support for
<picture>element and associatedmediaandsizesattributes - Added
React.createElementAPI in preparation for React v0.12React.createDescriptorhas been deprecated as a result
JSX
<picture>is now parsed intoReact.DOM.picture
React Tools
- Update
esprimaandjstransformfor correctness fixes - The
jsxexecutable now exposes a--strip-typesflag which can be used to remove TypeScript-like type annotations- This option is also exposed to
require('react-tools').transformasstripTypes
- This option is also exposed to
v0.11.1
React Core
Bug Fixes
setStatecan be called insidecomponentWillMountin non-DOM environmentsSyntheticMouseEvent.getEventModifierStatecorrectly renamed togetModifierStategetModifierStatecorrectly returns abooleangetModifierStateis now correctly case sensitive- Empty Text node used in IE8
innerHTMLworkaround is now removed, fixing rerendering in certain cases
JSX
- Fix duplicate variable declaration in JSXTransformer (caused issues in some browsers)
v0.11.0
React Core
Breaking Changes
getDefaultProps()is now called once per class and shared across all instancesMyComponent()now returns a descriptor, not an instanceReact.isValidComponentandReact.PropTypes.componentvalidate descriptors, not component instances- Custom
propTypevalidators should return anErrorinstead of logging directly
New Features
- Rendering to
null - Keyboard events include normalized
e.keyande.getModifierState()properties - New normalized
onBeforeInputevent React.Children.counthas been added as a helper for counting the number of children
Bug Fixes
- Re-renders are batched in more cases
- Events:
e.viewproperly normalized - Added Support for more HTML attributes (
coords,crossOrigin,download,hrefLang,mediaGroup,muted,scrolling,shape,srcSet,start,useMap) - Improved SVG support
- Changing
classNameon a mounted SVG component now works correctly - Added support for elements
maskandtspan - Added support for attributes
dx,dy,fillOpacity,fontFamily,fontSize,markerEnd,markerMid,markerStart,opacity,patternContentUnits,patternUnits,preserveAspectRatio,strokeDasharray,strokeOpacity
- Changing
- 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)
imgevent listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the samedata-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
$applycommand to transform values - TransitionGroup bug fixes with null elements, Android
React NPM Module
- Now includes the pre-built packages under
dist/. envifyis properly listed as a dependency instead of a peer dependency
JSX
- Added support for namespaces, eg
<Components.Checkbox /> - JSXTransformer
- Enable the same
harmonyfeatures 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
- Enable the same
React Tools Module
- Improved readme with usage and API information
- Improved ES6 transforms available with
--harmonyoption - Added
--source-map-inlineoption to thejsxexecutable - New
transformWithDetailsAPI which gives access to the raw sourcemap data
v0.11.0-rc1
0.11.0-rc1
v0.10.0
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 forReact.renderComponentToStaticMarkup - Added support for more attributes:
srcSetfor<img>to specify images at different pixel ratiostextAnchorfor SVG
Bug Fixes
- Ensure all void elements don’t insert a closing tag into the markup.
- Ensure
className={false}behaves consistently - Ensure
this.refsis defined, even if no refs are specified.
Addons
updatefunction to deal with immutable data. Read the docs
react-tools
- Added an option argument to
transformfunction. The only option supported isharmony, which behaves the same asjsx --harmonyon the command line. This uses the ES6 transforms from jstransform.
v0.10.0-rc1
update version for 0.10rc
v0.9.0
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
componentDidMountandcomponentDidUpdateno longer receive the root node as a parameter; usethis.getDOMNode()instead - Whenever a prop is equal to
undefined, the default value returned bygetDefaultPropswill now be used instead React.unmountAndReleaseReactRootNodewas previously deprecated and has now been removedReact.renderComponentToStringis 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,
deltaYis 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, andtextareaelements,.getValue()is no longer supported; use.getDOMNode().valueinstead
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:
crossOriginfor CORS requestsdownloadandhrefLangfor<a>tagsmediaGroupandmutedfor<audio>and<video>tagsnoValidateandformNoValidatefor formspropertyfor Open Graph<meta>tagssandbox,seamless, andsrcDocfor<iframe>tagsscopefor screen readersspanfor<colgroup>tags
- Added support for defining
propTypesin mixins - Added
any,arrayOf,component,oneOfType,renderable,shapetoReact.PropTypes - Added support for
staticson component spec for static component methods - On all events,
.currentTargetis now properly set - On keyboard events,
.keyis now polyfilled in all browsers for special (non-printable) keys - On clipboard events,
.clipboardDatais now polyfilled in IE - On drag events,
.dragTransferis now present - Added support for
onMouseOverandonMouseOutin addition to the existingonMouseEnterandonMouseLeaveevents - Added support for
onLoadandonErroron<img>elements - Added support for
onReseton<form>elements - The
autoFocusattribute is now polyfilled consistently oninput,select, andtextarea
Bug Fixes
- React no longer adds an
__owner__property to each component'spropsobject; passed-in props are now never mutated - When nesting top-level components (e.g., calling
React.renderComponentwithincomponentDidMount), 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.typeare now set properly - On composition events,
.datais now properly normalized in IE9 and IE10 - CSS property values no longer have
pxappended for the unitless propertiescolumnCount,flex,flexGrow,flexShrink,lineClamp,order,widows - Fixed a memory leak when unmounting children with a
componentWillUnmounthandler - Fixed a memory leak when
renderComponentToStringwould store event handlers - Fixed an error that could be thrown when removing form elements during a click handler
- Boolean attributes such as
disabledare rendered without a value (previouslydisabled="true", now simplydisabled) keyvalues containing.are now supported- Shortened
data-reactidvalues for performance - Components now always remount when the
keyproperty changes - Event handlers are attached to
documentonly when necessary, improving performance in some cases - Events no longer use
.returnValuein modern browsers, eliminating a warning in Chrome scrollLeftandscrollTopare 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.TestUtilswas added to help write unit testsReact.addons.TransitionGroupwas renamed toReact.addons.CSSTransitionGroupReact.addons.TransitionGroupwas added as a more general animation wrapperReact.addons.cloneWithPropswas added for cloning components and modifying their props- Bug fix for adding back nodes during an exit transition for CSSTransitionGroup
- Bug fix for changing
transitionLeavein CSSTransitionGroup - Performance optimizations for CSSTransitionGroup
- On checkbox
<input>elements,checkedLinkis 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-toolsnpm package no longer includes the React core libraries; use thereactpackage instead. displayNameis 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
JSXTransformernow uses source maps automatically in modern browsersJSXTransformererror messages now include the filename and problematic line contents when a file fails to parse
v0.9.0-rc1
0.9.0-rc1