React v16
https://github.com/facebook/react
React
- Add support for the new JSX transform. (@lunaruan in #18299)
React DOM
- Fix bug in legacy mode Suspense where effect clean-up functions are not fired. This only affects users who use Suspense for data fetching in legacy mode, which is not technically supported. (@acdlite in #18238)
- Revert warning for cross-component updates that happen inside class render lifecycles (
componentWillReceiveProps
,shouldComponentUpdate
, and so on). (@gaearon in #18330)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
React
- Warn when a string ref is used in a manner that's not amenable to a future codemod (@lunaruan in #17864)
- Deprecate
React.createFactory()
(@trueadm in #17878)
React DOM
- Warn when changes in
style
may cause an unexpected collision (@sophiebits in #14181, #18002) - Warn when a function component is updated during another component's render phase (@acdlite in #17099)
- Deprecate
unstable_createPortal
(@trueadm in #17880) - Fix
onMouseEnter
being fired on disabled buttons (@AlfredoGJ in #17675) - Call
shouldComponentUpdate
twice when developing inStrictMode
(@bvaughn in #17942) - Add
version
property to ReactDOM (@ealush in #15780) - Don't call
toString()
ofdangerouslySetInnerHTML
(@sebmarkbage in #17773) - Show component stacks in more warnings (@gaearon in #17922, #17586)
Concurrent Mode (Experimental)
- Warn for problematic usages of
ReactDOM.createRoot()
(@trueadm in #17937) - Remove
ReactDOM.createRoot()
callback params and added warnings on usage (@bvaughn in #17916) - Don't group Idle/Offscreen work with other work (@sebmarkbage in #17456)
- Adjust
SuspenseList
CPU bound heuristic (@sebmarkbage in #17455) - Add missing event plugin priorities (@trueadm in #17914)
- Fix
isPending
only being true when transitioning from inside an input event (@acdlite in #17382) - Fix
React.memo
components dropping updates when interrupted by a higher priority update (@acdlite in #18091) - Don't warn when suspending at the wrong priority (@gaearon in #17971)
- Fix a bug with rebasing updates (@acdlite and @sebmarkbage in #17560, #17510, #17483, #17480)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
React DOM
React Is
Artifacts
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
React DOM
- Fix
mouseenter
handlers from firing twice inside nested React containers. @yuanoook in #16928 - Remove
unstable_createRoot
andunstable_createSyncRoot
experimental APIs. (These are available in the Experimental channel ascreateRoot
andcreateSyncRoot
.) (@acdlite in #17088)
Artifacts
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/react-do[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
React DOM
- Fix regression in react-native-web by restoring order of arguments in event plugin extractors (@necolas in #16978)
Artifacts
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
React DOM
- Fix regression in Next.js apps by allowing Suspense mismatch during hydration to silently proceed (@sebmarkbage in #16943)
React DOM
- Fix edge case where a hook update wasn't being memoized. (@sebmarkbage in #16359)
- Fix heuristic for determining when to hydrate, so we don't incorrectly hydrate during an update. (@sebmarkbage in #16739)
- Clear additional fiber fields during unmount to save memory. (@trueadm in #16807)
- Fix bug with required text fields in Firefox. (@halvves in #16578)
- Prefer
Object.is
instead of inline polyfill, when available. (@ku8ar in #16212) - Fix bug when mixing Suspense and error handling. (@acdlite in #16801)
Scheduler (Experimental)
- Improve queue performance by switching its internal data structure to a min binary heap. (@acdlite in #16245)
- Use
postMessage
loop with short intervals instead of attempting to align to frame boundaries withrequestAnimationFrame
. (@acdlite in #16214)
useSubscription
- Avoid tearing issue when a mutation happens and the previous update is still in progress. (@bvaughn in #16623)
Artifacts
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
React
- Add
<React.Profiler>
API for gathering performance measurements programmatically. (@bvaughn in #15172) - Remove
unstable_ConcurrentMode
in favor ofunstable_createRoot
. (@acdlite in #15532)
React DOM
- Deprecate old names for the
UNSAFE_*
lifecycle methods. (@bvaughn in #15186 and @threepointone in #16103) - Deprecate
javascript:
URLs as a common attack surface. (@sebmarkbage in #15047) - Deprecate uncommon "module pattern" (factory) components. (@sebmarkbage in #15145)
- Add support for the
disablePictureInPicture
attribute on<video>
. (@eek in #15334) - Add support for
onLoad
event for<embed>
. (@cherniavskii in #15614) - Add support for editing
useState
state from DevTools. (@bvaughn in #14906) - Add support for toggling Suspense from DevTools. (@gaearon in #15232)
- Warn when
setState
is called fromuseEffect
, creating a loop. (@gaearon in #15180) - Fix a memory leak. (@paulshen in #16115)
- Fix a crash inside
findDOMNode
for components wrapped in<Suspense>
. (@acdlite in #15312) - Fix pending effects from being flushed too late. (@acdlite in #15650)
- Fix incorrect argument order in a warning message. (@brickspert in #15345)
- Fix hiding Suspense fallback nodes when there is an
!important
style. (@acdlite in #15861 and #15882) - Slightly improve hydration performance. (@bmeurer in #15998)
React DOM Server
React Test Utilities and Test Renderer
- Add
act(async () => ...)
for testing asynchronous state updates. (@threepointone in #14853) - Add support for nesting
act
from different renderers. (@threepointone in #16039 and #16042) - Warn in Strict Mode if effects are scheduled outside an
act()
call. (@threepointone in #15763 and #16041) - Warn when using
act
from the wrong renderer. (@threepointone in #15756)
Artifacts
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
This is a release candidate for React v16.9.0.
Changelog is available in https://github.com/facebook/react/pull/16254.
UMD builds
• react: https://unpkg.com/[email protected]/umd/
• react-art: https://unpkg.com/[email protected]/umd/
• react-dom: https://unpkg.com/[email protected]/umd/
• react-is: https://unpkg.com/[email protected]/umd/
• react-test-renderer: https://unpkg.com/[email protected]/umd/
• scheduler: https://unpkg.com/[email protected]/umd/
v16.9.0-alpha.0 (April 3, 2019)
- (
await act(async () => ...)
(@threepointone in #14853)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.8.6 (March 27, 2019)
React DOM
- Fix an incorrect bailout in
useReducer()
. (@acdlite in #15124) - Fix iframe warnings in Safari DevTools. (@renanvalentin in #15099)
- Warn if
contextType
is set toContext.Consumer
instead ofContext
. (@aweary in #14831) - Warn if
contextType
is set to invalid values. (@gaearon in #15142)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.8.5 (March 22, 2019)
React DOM
- Don't set the first option as selected in select tag with
size
attribute. (@kulek1 in #14242) - Improve the
useEffect(async () => ...)
warning message. (@gaearon in #15118) - Improve the error message sometimes caused by duplicate React. (@jaredpalmer in #15139)
React DOM Server
React Shallow Renderer
- Fix
setState
in shallow renderer to work with Hooks. (@gaearon in #15120) - Fix shallow renderer to support
React.memo
. (@aweary in #14816) - Fix shallow renderer to support Hooks inside
forwardRef
. (@eps1lon in #15100)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.8.3 (February 21, 2019)
React DOM
- Fix a bug that caused inputs to behave incorrectly in UMD builds. (@gaearon in #14914)
- Fix a bug that caused render phase updates to be discarded. (@gaearon in #14852)
React DOM Server
- Unwind the context stack when a stream is destroyed without completing, to prevent incorrect values during a subsequent render. (@overlookmotel in #14706)
ESLint Plugin for React Hooks
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.8.2 (February 14, 2019)
React DOM
- Fix
ReactDOM.render
being ignored insideuseEffect
. (@gaearon in #14799) - Fix a crash when unmounting empty portals. (@gaearon in #14820)
- Fix
useImperativeHandle
to work correctly when no deps are specified. (@gaearon in #14801) - Fix
crossOrigin
attribute to work in SVGimage
elements. (@aweary in #14832) - Fix a false positive warning when using Suspense with Hooks. (@gaearon in #14821)
React Test Utils and React Test Renderer
- Include component stack into the
act()
warning. (@threepointone in #14855)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.8.1 (February 6, 2019)
React DOM and React Test Renderer
React Test Utils
- Fix a crash in Node environment. (@threepointone in #14768)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
React
- Add Hooks — a way to use state and other React features without writing a class. (@acdlite et al. in #13968)
- Improve the
useReducer
Hook lazy initialization API. (@acdlite in #14723)
React DOM
- Bail out of rendering on identical values for
useState
anduseReducer
Hooks. (@acdlite in #14569) - Use
Object.is
algorithm for comparinguseState
anduseReducer
values. (@Jessidhia in #14752) - Don’t compare the first argument passed to
useEffect
/useMemo
/useCallback
Hooks. (@acdlite in #14594) - Support synchronous thenables passed to
React.lazy()
. (@gaearon in #14626) - Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. (@gaearon in #14654)
- Warn about mismatching Hook order in development. (@threepointone in #14585 and @acdlite in #14591)
- Effect clean-up functions must return either
undefined
or a function. All other values, includingnull
, are not allowed. @acdlite in #14119
React Test Renderer and Test Utils
- Support Hooks in the shallow renderer. (@trueadm in #14567)
- Fix wrong state in
shouldComponentUpdate
in the presence ofgetDerivedStateFromProps
for Shallow Renderer. (@chenesan in #14613) - Add
ReactTestRenderer.act()
andReactTestUtils.act()
for batching updates so that tests more closely match real behavior. (@threepointone in #14744)
ESLint Plugin: React Hooks
- Initial release. (@calebmer in #13968)
- Fix reporting after encountering a loop. (@calebmer and @Yurickh in #14661)
- Don't consider throwing to be a rule violation. (@sophiebits in #14040)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
React DOM
- Fix performance of
React.lazy
for large numbers of lazily-loaded components. (@acdlite in #14429) - Clear fields on unmount to avoid memory leaks. (@trueadm in #14276)
- Fix bug with SSR and context when mixing
react-dom/[email protected]
and[email protected]<16.6
. (@gaearon in #14291) - Fix a performance regression in profiling mode. (@bvaughn in #14383)
Scheduler (Experimental)
- Post to MessageChannel instead of window. (@acdlite in #14234)
- Reduce serialization overhead. (@developit in #14249)
- Fix fallback to
setTimeout
in testing environments. (@bvaughn in #14358) - Add methods for debugging. (@mrkev in #14053)
Artifacts
- react: https://unpkg.com/[email protected]/umd/
- react-art: https://unpkg.com/[email protected]/umd/
- react-dom: https://unpkg.com/[email protected]/umd/
- react-is: https://unpkg.com/[email protected]/umd/
- react-test-renderer: https://unpkg.com/[email protected]/umd/
- scheduler: https://unpkg.com/[email protected]/umd/
16.6.3 (November 12, 2018)
React DOM
- Fix bugs in
Suspense
andlazy
. (@acdlite in #14133, #14157, and #14164) - Fix highlighting of
React.memo
updates in React DevTools. (@bvaughn in #14141) - Fix interaction of Suspense with the React Profiler. (@bvaughn in #14065)
- Fix a false positive warning when using Suspense. (@acdlite in #14158)
React DOM Server
- Fix incorrect sharing of context state between
renderToNodeStream()
calls. (@sebmarkbage in #14182) - Add a warning about incorrect usage of the context API. (@trueadm in #14033)
16.6.1 (November 6, 2018)
React DOM
- Fallback should not remount every time a promise resolves. (@acdlite in #14083)
- Fix bug where Suspense keeps showing fallback even after everything finishes loading. (@acdlite in #14083)
- Fix a crash when Suspense finishes loading in IE11. (@sophiebits in #14126)
- Fix unresolved default props in lifecycle methods of a lazy component. (@gaearon in #14112)
- Fix bug when recovering from an error thrown during complete phase. (@gaearon in #14104)
Scheduler (Experimental)
16.6.0 (October 23, 2018)
React
- Add
React.memo()
as an alternative toPureComponent
for functions. (@acdlite in #13748) - Add
React.lazy()
for code splitting components. (@acdlite in #13885) React.StrictMode
now warns about legacy context API. (@bvaughn in #13760)React.StrictMode
now warns aboutfindDOMNode
. (@sebmarkbage in #13841)- Rename
unstable_AsyncMode
tounstable_ConcurrentMode
. (@trueadm in #13732) - Rename
unstable_Placeholder
toSuspense
, anddelayMs
tomaxDuration
. (@gaearon in #13799 and @sebmarkbage in #13922)
React DOM
- Add
contextType
as a more ergonomic way to subscribe to context from a class. (@bvaughn in #13728) - Add
getDerivedStateFromError
lifecycle method for catching errors in a future asynchronous server-side renderer. (@bvaughn in #13746) - Warn when
<Context>
is used instead of<Context.Consumer>
. (@trueadm in #13829) - Fix gray overlay on iOS Safari. (@philipp-spiess in #13778)
- Fix a bug caused by overwriting
window.event
in development. (@sergei-startsev in #13697)
React DOM Server
- Add support for
React.memo()
. (@alexmckenley in #13855) - Add support for
contextType
. (@alexmckenley and @sebmarkbage in #13889)
Scheduler (Experimental)
- Rename the package to
scheduler
. (@gaearon in #13683) - Support priority levels, continuations, and wrapped callbacks. (@acdlite in #13720 and #13842)
- Improve the fallback mechanism in non-DOM environments. (@acdlite in #13740)
- Schedule
requestAnimationFrame
earlier. (@acdlite in #13785) - Fix the DOM detection to be more thorough. (@trueadm in #13731)
- Fix bugs with interaction tracing. (@bvaughn in #13590)
- Add the
envify
transform to the package. (@mridgway in #13766)
React DOM
- Fixed a recent
<iframe>
regression (@JSteunou in #13650) - Fix
updateWrapper
so that<textarea>
s no longer re-render when data is unchanged (@joelbarbosa in #13643)
Schedule (Experimental)
16.5.1 (September 13, 2018)
React
- Improve the warning when
React.forwardRef
receives an unexpected number of arguments. (@andresroberto in #13636)
React DOM
- Fix a regression in unstable exports used by React Native Web. (@aweary in #13598)
- Fix a crash when component defines a method called
isReactComponent
. (@gaearon in #13608) - Fix a crash in development mode in IE9 when printing a warning. (@link-alex in #13620)
- Provide a better error message when running
react-dom/profiling
withschedule/tracking
. (@bvaughn in #13605) - If a
ForwardRef
component defines adisplayName
, use it in warnings. (@probablyup in #13615)
Schedule (Experimental)
16.5.0 (September 5, 2018)
React
- Add a warning if
React.forwardRef
render function doesn't take exactly two arguments (@bvaughn in #13168) - Improve the error message when passing an element to
createElement
by mistake (@DCtheTall in #13131) - Don't call profiler
onRender
until after mutations (@bvaughn in #13572)
React DOM
- Add support for React DevTools Profiler (@bvaughn in #13058)
- Add
react-dom/profiling
entry point alias for profiling in production (@bvaughn in #13570) - Add
onAuxClick
event for browsers that support it (@jquense in #11571) - Add
movementX
andmovementY
fields to mouse events (@jasonwilliams in #9018) - Add
tangentialPressure
andtwist
fields to pointer events (@motiz88 in #13374) - Minimally support iframes (nested browsing contexts) in selection event handling (@acusti in #12037)
- Support passing booleans to the
focusable
SVG attribute (@gaearon in #13339) - Ignore
<noscript>
on the client when when hydrating (@Ephem in #13537) - Fix
gridArea
to be treated as a unitless CSS property (@mgol in #13550) - Fix incorrect data in
compositionend
event when typing Korean on IE11 (@crux153 in #12563) - Fix a crash when using dynamic
children
in the<option>
tag (@Slowyn in #13261, @gaearon in #13465) - Fix the
checked
attribute not getting initially set on theinput
(@dilidili in #13114) - Fix hydration of
dangerouslySetInnerHTML
when__html
is not a string (@gaearon in #13353) - Fix a warning about missing controlled
onChange
to fire on falsy values too (@nicolevy in #12628) - Fix
submit
andreset
buttons getting an empty label (@ellsclytn in #12780) - Fix the
onSelect
event not being triggered after drag and drop (@gaearon in #13422) - Fix the
onClick
event not working inside a portal on iOS (@aweary in #11927) - Fix a performance issue when thousands of roots are re-rendered (@gaearon in #13335)
- Fix a performance regression that also caused
onChange
to not fire in some cases (@gaearon in #13423) - Handle errors in more edge cases gracefully (@gaearon in #13237 and @acdlite in #13269)
- Don't use proxies for synthetic events in development (@gaearon in #12171)
- Warn when
"false"
or"true"
is the value of a boolean DOM prop (@motiz88 in #13372) - Warn when
this.state
is initialized toprops
(@veekas in #11658) - Don't compare
style
on hydration in IE due to noisy false positives (@mgol in #13534) - Include
StrictMode
in the component stack (@gaearon in #13240) - Don't overwrite
window.event
in IE (@ConradIrwin in #11696) - Improve component stack for the
folder/index.js
naming convention (@gaearon in #12059) - Improve a warning when using
getDerivedStateFromProps
without initialized state (@flxwu in #13317) - Improve a warning about invalid textarea usage (@raunofreiberg in #13361)
- Treat invalid Symbol and function values more consistently (@raunofreiberg in #13362 and #13389)
- Allow Electron
<webview>
tag without warnings (@philipp-spiess in #13301) - Don't show the uncaught error addendum if
e.preventDefault()
was called (@gaearon in #13384) - Warn about rendering Generators (@gaearon in #13312)
- Remove irrelevant suggestion of a legacy method from a warning (@zx6658 in #13169)
- Remove
unstable_deferredUpdates
in favor ofunstable_scheduleWork
fromschedule
(@gaearon in #13488) - Fix unstable asynchronous mode from doing unnecessary work when an update takes too long (@acdlite in #13503)
React DOM Server
- Fix crash with nullish children when using
dangerouslySetInnerHtml
in a selected<option>
(@mridgway in #13078) - Fix crash when
setTimeout
is missing (@dustinsoftware in #13088)
React Test Renderer and Test Utils
- Fix
this
in a functional component for shallow renderer to beundefined
(@koba04 in #13144) - Deprecate a Jest-specific
ReactTestUtils.mockComponent()
helper (@bvaughn in #13193) - Warn about
ReactDOM.createPortal
usage within the test renderer (@bvaughn in #12895) - Improve a confusing error message (@gaearon in #13351)
React ART
- Add support for DevTools (@yunchancho in #13173)
Schedule (Experimental)
16.4.2 (August 1, 2018)
React DOM Server
-
Fix a potential XSS vulnerability when the attacker controls an attribute name (
CVE-2018-6341
). This fix is available in the latest[email protected]
, as well as in previous affected minor versions:[email protected]
,[email protected]
,[email protected]
, and[email protected]
. (@gaearon in #13302) -
Fix a crash in the server renderer when an attribute is called
hasOwnProperty
. This fix is only available in[email protected]
. (@gaearon in #13303)
16.4.1 (June 13, 2018)
React
React DOM
- Fix a crash when the input
type
changes from some other types totext
. (@spirosikmd in #12135) - Fix a crash in IE11 when restoring focus to an SVG element. (@ThaddeusJiang in #12996)
- Fix a range input not updating in some cases. (@Illu in #12939)
- Fix input validation triggering unnecessarily in Firefox. (@nhunzaker in #12925)
- Fix an incorrect
event.target
value for theonChange
event in IE9. (@nhunzaker in #12976) - Fix a false positive error when returning an empty
<React.Fragment />
from a component. (@philipp-spiess in #12966)
React DOM Server
- Fix an incorrect value being provided by new context API. (@ericsoderberghp in #12985, @gaearon in #13019)
React Test Renderer
React
- Add a new experimental
React.unstable_Profiler
component for measuring performance. (@bvaughn in #12745)
React DOM
- Add support for the Pointer Events specification. (@philipp-spiess in #12507)
- Properly call
getDerivedStateFromProps()
regardless of the reason for re-rendering. (@acdlite in #12600 and #12802) - Fix a bug that prevented context propagation in some cases. (@gaearon in #12708)
- Fix re-rendering of components using
forwardRef()
on a deepersetState()
. (@gaearon in #12690) - Fix some attributes incorrectly getting removed from custom element nodes. (@airamrguez in #12702)
- Fix context providers to not bail out on children if there's a legacy context provider above. (@gaearon in #12586)
- Add the ability to specify
propTypes
on a context provider component. (@nicolevy in #12658) - Fix a false positive warning when using
react-lifecycles-compat
in<StrictMode>
. (@bvaughn in #12644) - Warn when the
forwardRef()
render function haspropTypes
ordefaultProps
. (@bvaughn in #12644) - Improve how
forwardRef()
and context consumers are displayed in the component stack. (@sophiebits in #12777) - Change internal event names. This can break third-party packages that rely on React internals in unsupported ways. (@philipp-spiess in #12629)
React Test Renderer
- Fix the
getDerivedStateFromProps()
support to match the new React DOM behavior. (@koba04 in #12676) - Fix a
testInstance.parent
crash when the parent is a fragment or another special node. (@gaearon in #12813) forwardRef()
components are now discoverable by the test renderer traversal methods. (@gaearon in #12725)- Shallow renderer now ignores
setState()
updaters that returnnull
orundefined
. (@koba04 in #12756)
React ART
React Call Return (Experimental)
- This experiment was deleted because it was affecting the bundle size and the API wasn't good enough. It's likely to come back in the future in some other form. (@gaearon in #12820)
React Reconciler (Experimental)
- The new host config shape is flat and doesn't use nested objects. (@gaearon in #12792)
16.3.2 (April 16, 2018)
React
- Improve the error message when passing
null
orundefined
toReact.cloneElement
. (@nicolevy in #12534)
React DOM
- Fix an IE crash in development when using
<StrictMode>
. (@bvaughn in #12546) - Fix labels in User Timing measurements for new component types. (@bvaughn in #12609)
- Improve the warning about wrong component type casing. (@nicolevy in #12533)
- Improve general performance in development mode. (@gaearon in #12537)
- Improve performance of the experimental
unstable_observedBits
API with nesting. (@gaearon in #12543)
React Test Renderer
16.3.1 (April 3, 2018)
React
- Fix a false positive warning in IE11 when using
Fragment
. (@heikkilamarko in #12504) - Prefix a private API. (@Andarist in #12501)
- Improve the warning when calling
setState()
in constructor. (@gaearon in #12532)
React DOM
- Fix
getDerivedStateFromProps()
not getting applied in some cases. (@acdlite in #12528) - Fix a performance regression in development mode. (@gaearon in #12510)
- Fix error handling bugs in development mode. (@gaearon and @acdlite in #12508)
- Improve user timing API messages for profiling. (@flarnie in #12384)
Create Subscription
- Set the package version to be in sync with React releases. (@bvaughn in #12526)
- Add a peer dependency on React 16.3+. (@NMinhNguyen in #12496)
16.3.0 (March 29, 2018)
React
- Add a new officially supported context API. (@acdlite in #11818)
- Add a new
React.createRef()
API as an ergonomic alternative to callback refs. (@trueadm in #12162) - Add a new
React.forwardRef()
API to let components forward their refs to a child. (@bvaughn in #12346) - Fix a false positive warning in IE11 when using
React.Fragment
. (@XaveScor in #11823) - Replace
React.unstable_AsyncComponent
withReact.unstable_AsyncMode
. (@acdlite in #12117) - Improve the error message when calling
setState()
on an unmounted component. (@sophiebits in #12347)
React DOM
- Add a new
getDerivedStateFromProps()
lifecycle andUNSAFE_
aliases for the legacy lifecycles. (@bvaughn in #12028) - Add a new
getSnapshotBeforeUpdate()
lifecycle. (@bvaughn in #12404) - Add a new
<React.StrictMode>
wrapper to help prepare apps for async rendering. (@bvaughn in #12083) - Add support for
onLoad
andonError
events on the<link>
tag. (@roderickhsiao in #11825) - Add support for
noModule
boolean attribute on the<script>
tag. (@aweary in #11900) - Fix minor DOM input bugs in IE and Safari. (@nhunzaker in #11534)
- Correctly detect Ctrl + Enter in
onKeyPress
in more browsers. (@nstraub in #10514) - Fix containing elements getting focused on SSR markup mismatch. (@koba04 in #11737)
- Fix
value
anddefaultValue
to ignore Symbol values. (@nhunzaker in #11741) - Fix refs to class components not getting cleaned up when the attribute is removed. (@bvaughn in #12178)
- Fix an IE/Edge issue when rendering inputs into a different window. (@M-ZubairAhmed in #11870)
- Throw with a meaningful message if the component runs after jsdom has been destroyed. (@gaearon in #11677)
- Don't crash if there is a global variable called
opera
with anull
value. @alisherdavronov in #11854) - Don't check for old versions of Opera. (@skiritsis in #11921)
- Deduplicate warning messages about
<option selected>
. (@watadarkstar in #11821) - Deduplicate warning messages about invalid callback. (@yenshih in #11833)
- Deprecate
ReactDOM.unstable_createPortal()
in favor ofReactDOM.createPortal()
. (@prometheansacrifice in #11747) - Don't emit User Timing entries for context types. (@abhaynikam in #12250)
- Improve the error message when context consumer child isn't a function. (@raunofreiberg in #12267)
- Improve the error message when adding a ref to a functional component. (@skiritsis in #11782)
React DOM Server
- Prevent an infinite loop when attempting to render portals with SSR. (@gaearon in #11709)
- Warn if a class doesn't extend
React.Component
. (@wyze in #11993) - Fix an issue with
this.state
of different components getting mixed up. (@sophiebits in #12323) - Provide a better message when component type is undefined. (@HeroProtagonist in #11966)
React Test Renderer
- Fix handling of fragments in
toTree()
. (@maciej-ka in #12107 and @gaearon in #12154) - Shallow renderer should assign state to
null
for components that don't set it. (@jwbay in #11965) - Shallow renderer should filter legacy context according to
contextTypes
. (@koba04 in #11922) - Add an unstable API for testing asynchronous rendering. (@acdlite in #12478)
React Is (New)
- First release of the new package that libraries can use to detect different React node types. (@bvaughn in #12199)
- Add
ReactIs.isValidElementType()
to help higher-order components validate their inputs. (@jamesreggio in #12483)
React Lifecycles Compat (New)
- First release of the new package to help library developers target multiple versions of React. (@bvaughn in #12105)
Create Subscription (New)
- First release of the new package to subscribe to external data sources safely for async rendering. (@bvaughn in #12325)
React Reconciler (Experimental)
- Expose
react-reconciler/persistent
for building renderers that use persistent data structures. (@gaearon in #12156) - Pass host context to
finalizeInitialChildren()
. (@jquense in #11970) - Remove
useSyncScheduling
from the host config. (@acdlite in #11771)
React Call Return (Experimental)
React
- Add
Fragment
as named export to React. (@clemmy in #10783) - Support experimental Call/Return types in
React.Children
utilities. (@MatteoVH in #11422)
React DOM
- Fix radio buttons not getting checked when using multiple lists of radios. (@landvibe in #11227)
- Fix radio buttons not receiving the
onChange
event in some cases. (@jquense in #11028)
React Test Renderer
- Fix
setState()
callback firing too early when called fromcomponentWillMount
. (@accordeiro in #11507)
React Reconciler
Internal Changes
- Many tests were rewritten against the public API. Big thanks to everyone who contributed!
16.1.1 (November 13, 2017)
React
React DOM
- Support string values for the
capture
attribute. (@maxschmeling in #11424)
React DOM Server
- Don't freeze the
ReactDOMServer
public API. (@travi in #11531) - Don't emit
autoFocus={false}
attribute on the server. (@gaearon in #11543)
React Reconciler
- Change the hydration API for better Flow typing. (@sebmarkbage in #11493)
16.1.0 (November 9, 2017)
Discontinuing Bower Releases
Starting with 16.1.0, we will no longer be publishing new releases on Bower. You can continue using Bower for old releases, or point your Bower configs to the React UMD builds hosted on unpkg that mirror npm releases and will continue to be updated.
All Packages
React
- Add support for portals in
React.Children
utilities. (@MatteoVH in #11378) - Warn when a class has a
render
method but doesn't extend a known base class. (@sw-yx in #11168) - Improve the warning when accidentally returning an object from constructor. (@deanbrophy in #11395)
React DOM
- Allow
on
as a custom attribute for AMP. (@nuc in #11153) - Fix
onMouseEnter
andonMouseLeave
firing on wrong elements. (@gaearon in #11164) - Fix
null
showing up in a warning instead of the component stack. (@gaearon in #10915) - Fix IE11 crash in development mode. (@leidegre in #10921)
- Fix
tabIndex
not getting applied to SVG elements. (@gaearon in #11034) - Fix SVG children not getting cleaned up on
dangerouslySetInnerHTML
in IE. (@OriR in #11108) - Fix false positive text mismatch warning caused by newline normalization. (@gaearon in #11119)
- Fix
form.reset()
to respectdefaultValue
on uncontrolled<select>
. (@aweary in #11057) - Fix
<textarea>
placeholder not rendering on IE11. (@gaearon in #11177) - Fix a crash rendering into shadow root. (@gaearon in #11037)
- Fix false positive warning about hydrating mixed case SVG tags. (@gaearon in #11174)
- Suppress the new unknown tag warning for
<dialog>
element. (@gaearon in #11035) - Warn when defining a non-existent
componentDidReceiveProps
method. (@iamtommcc in #11479) - Warn about function child no more than once. (@andreysaleba in #11120)
- Warn about nested updates no more than once. (@anushreesubramani in #11113)
- Deduplicate other warnings about updates. (@anushreesubramani in #11216)
- Include component stack into the warning about
contentEditable
andchildren
. (@Ethan-Arrowood in #11208) - Improve the warning about booleans passed to event handlers. (@NicBonetto in #11308)
- Improve the warning when a multiple
select
gets nullvalue
. (@Hendeca in #11141) - Move link in the warning message to avoid redirect. (@marciovicente in #11400)
- Add a way to suppress the React DevTools installation prompt. (@gaearon in #11448)
- Remove unused code. (@gaearon in #10802, #10803)
React DOM Server
- Add a new
suppressHydrationWarning
attribute for intentional client/server text mismatches. (@sebmarkbage in #11126) - Fix markup generation when components return strings. (@gaearon in #11109)
- Fix obscure error message when passing an invalid style value. (@iamdustan in #11173)
- Include the
autoFocus
attribute into SSR markup. (@gaearon in #11192) - Include the component stack into more warnings. (@gaearon in #11284)
React Test Renderer and Test Utils
- Fix multiple
setState()
calls incomponentWillMount()
in shallow renderer. (@Hypnosphi in #11167) - Fix shallow renderer to ignore
shouldComponentUpdate()
afterforceUpdate()
. (@d4rky-pl in #11239 and #11439) - Handle
forceUpdate()
andReact.PureComponent
correctly. (@koba04 in #11440) - Add back support for running in production mode. (@gaearon in #11112)
- Add a missing
package.json
dependency. (@gaearon in #11340)
React ART
- Add a missing
package.json
dependency. (@gaearon in #11341) - Expose
react-art/Circle
,react-art/Rectangle
, andreact-art/Wedge
. (@gaearon in #11343)
React Reconciler (Experimental)
- First release of the new experimental package for creating custom renderers. (@iamdustan in #10758)
- Add support for React DevTools. (@gaearon in #11463)
React Call Return (Experimental)
- First release of the new experimental package for parent-child communication. (@gaearon in #11364)
16.0.0 (September 26, 2017)
Learn more in the React 16.0 announcement post!
New JS Environment Requirements
- React 16 depends on the collection types Map and Set, as well as requestAnimationFrame. If you support older browsers and devices which may not yet provide these natively (e.g. <IE11), you may want to include a polyfill.
New Features
- Components can now return arrays and strings from
render
. (Docs coming soon!) - Improved error handling with introduction of "error boundaries". Error boundaries are React components that catch JavaScript errors anywhere in their child component tree, log those errors, and display a fallback UI instead of the component tree that crashed.
- First-class support for declaratively rendering a subtree into another DOM node with
ReactDOM.createPortal()
. (Docs coming soon!) - Streaming mode for server side rendering is enabled with
ReactDOMServer.renderToNodeStream()
andReactDOMServer.renderToStaticNodeStream()
. (@aickin in #10425, #10044, #10039, #10024, #9264, and others.) - React DOM now allows passing non-standard attributes. (@nhunzaker in #10385, 10564, #10495 and others)
Breaking Changes
- There are several changes to the behavior of scheduling and lifecycle methods:
ReactDOM.render()
andReactDOM.unstable_renderIntoContainer()
now returnnull
if called from inside a lifecycle method.- To work around this, you can either use the new portal API or refs.
- Minor changes to
setState
behavior:- Calling
setState
with null no longer triggers an update. This allows you to decide in an updater function if you want to re-render. - Calling
setState
directly in render always causes an update. This was not previously the case. Regardless, you should not be callingsetState
from render. setState
callback (second argument) now fires immediately aftercomponentDidMount
/componentDidUpdate
instead of after all components have rendered.
- Calling
- When replacing
<A />
with<B />
,B.componentWillMount
now always happens beforeA.componentWillUnmount
. Previously,A.componentWillUnmount
could fire first in some cases. - Previously, changing the
ref
to a component would always detach the ref before that component's render is called. Now, we change theref
later, when applying the changes to the DOM. - It is not safe to re-render into a container that was modified by something other than React. This worked previously in some cases but was never supported. We now emit a warning in this case. Instead you should clean up your component trees using
ReactDOM.unmountComponentAtNode
. See this example. componentDidUpdate
lifecycle no longer receivesprevContext
param. (@bvaughn in #8631)- Non-unique keys may now cause children to be duplicated and/or omitted. Using non-unique keys is not (and has never been) supported, but previously it was a hard error.
- Shallow renderer no longer calls
componentDidUpdate()
because DOM refs are not available. This also makes it consistent withcomponentDidMount()
(which does not get called in previous versions either). - Shallow renderer does not implement
unstable_batchedUpdates()
anymore. ReactDOM.unstable_batchedUpdates
now only takes one extra argument after the callback.
- The names and paths to the single-file browser builds have changed to emphasize the difference between development and production builds. For example:
react/dist/react.js
→react/umd/react.development.js
react/dist/react.min.js
→react/umd/react.production.min.js
react-dom/dist/react-dom.js
→react-dom/umd/react-dom.development.js
react-dom/dist/react-dom.min.js
→react-dom/umd/react-dom.production.min.js
- The server renderer has been completely rewritten, with some improvements:
- Server rendering does not use markup validation anymore, and instead tries its best to attach to existing DOM, warning about inconsistencies. It also doesn't use comments for empty components and data-reactid attributes on each node anymore.
- Hydrating a server rendered container now has an explicit API. Use
ReactDOM.hydrate
instead ofReactDOM.render
if you're reviving server rendered HTML. Keep usingReactDOM.render
if you're just doing client-side rendering.
- When "unknown" props are passed to DOM components, for valid values, React will now render them in the DOM. See this post for more details. (@nhunzaker in #10385, 10564, #10495 and others)
- Errors in the render and lifecycle methods now unmount the component tree by default. To prevent this, add error boundaries to the appropriate places in the UI.
Removed Deprecations
- There is no
react-with-addons.js
build anymore. All compatible addons are published separately on npm, and have single-file browser versions if you need them. - The deprecations introduced in 15.x have been removed from the core package.
React.createClass
is now available as create-react-class,React.PropTypes
as prop-types,React.DOM
as react-dom-factories, react-addons-test-utils as react-dom/test-utils, and shallow renderer as react-test-renderer/shallow. See 15.5.0 and 15.6.0 blog posts for instructions on migrating code and automated codemods.