Today, we are releasing React 17!
Learn more about React 17 and how to update to it on the official React blog.
React
- Add
react/jsx-runtime
andreact/jsx-dev-runtime
for the new JSX transform. (@lunaruan in #18299) - Build component stacks from native error frames. (@sebmarkbage in #18561)
- Allow to specify
displayName
on context for improved stacks. (@eps1lon in #18224) - Prevent
'use strict'
from leaking in the UMD bundles. (@koba04 in #19614) - Stop using
fb.me
for redirects. (@cylim in #19598)
React DOM
- Delegate events to roots instead of
document
. (@trueadm in #18195 and others) - Clean up all effects before running any next effects. (@bvaughn in #17947)
- Run
useEffect
cleanup functions asynchronously. (@bvaughn in #17925) - Use browser
focusin
andfocusout
foronFocus
andonBlur
. (@trueadm in #19186) - Make all
Capture
events use the browser capture phase. (@trueadm in #19221) - Don't emulate bubbling of the
onScroll
event. (@gaearon in #19464) - Throw if
forwardRef
ormemo
component returnsundefined
. (@gaearon in #19550) - Remove event pooling. (@trueadm in #18969)
- Stop exposing internals that won’t be needed by React Native Web. (@necolas in #18483)
- Attach all known event listeners when the root mounts. (@gaearon in #19659)
- Disable
console
in the second render pass of DEV mode double render. (@sebmarkbage in #18547) - Deprecate the undocumented and misleading
ReactTestUtils.SimulateNative
API. (@gaearon in #13407) - Rename private field names used in the internals. (@gaearon in #18377)
- Don't call User Timing API in development. (@gaearon in #18417)
- Disable console during the repeated render in Strict Mode. (@sebmarkbage in #18547)
- In Strict Mode, double-render components without Hooks too. (@eps1lon in #18430)
- Allow calling
ReactDOM.flushSync
during lifecycle methods (but warn). (@sebmarkbage in #18759) - Add the
code
property to the keyboard event objects. (@bl00mber in #18287) - Add the
disableRemotePlayback
property forvideo
elements. (@tombrowndev in #18619) - Add the
enterKeyHint
property forinput
elements. (@eps1lon in #18634) - Warn when no
value
is provided to<Context.Provider>
. (@charlie1404 in #19054) - Warn when
memo
orforwardRef
components returnundefined
. (@bvaughn in #19550) - Improve the error message for invalid updates. (@JoviDeCroock in #18316)
- Exclude forwardRef and memo from stack frames. (@sebmarkbage in #18559)
- Improve the error message when switching between controlled and uncontrolled inputs. (@vcarl in #17070)
- Keep
onTouchStart
,onTouchMove
, andonWheel
passive. (@gaearon in #19654) - Fix
setState
hanging in development inside a closed iframe. (@gaearon in #19220) - Fix rendering bailout for lazy components with
defaultProps
. (@jddxf in #18539) - Fix a false positive warning when
dangerouslySetInnerHTML
isundefined
. (@eps1lon in #18676) - Fix Test Utils with non-standard
require
implementation. (@just-boris in #18632) - Fix
onBeforeInput
reporting an incorrectevent.type
. (@eps1lon in #19561) - Fix
event.relatedTarget
reported asundefined
in Firefox. (@claytercek in #19607) - Fix "unspecified error" in IE11. (@hemakshis in #19664)
- Fix rendering into a shadow root. (@Jack-Works in #15894)
- Fix
movementX/Y
polyfill with capture events. (@gaearon in #19672) - Use delegation for
onSubmit
andonReset
events. (@gaearon in #19333) - Improve memory usage. (@trueadm in #18970)
React DOM Server
- Make
useCallback
behavior consistent withuseMemo
for the server renderer. (@alexmckenley in #18783) - Fix state leaking when a function component throws. (@pmaccart in #19212)
React Test Renderer
- Improve
findByType
error message. (@henryqdineen in #17439)
Concurrent Mode (Experimental)
- Revamp the priority batching heuristics. (@acdlite in #18796)
- Add the
unstable_
prefix before the experimental APIs. (@acdlite in #18825) - Remove
unstable_discreteUpdates
andunstable_flushDiscreteUpdates
. (@trueadm in #18825) - Remove the
timeoutMs
argument. (@acdlite in #19703) - Disable
<div hidden />
prerendering in favor of a different future API. (@acdlite in #18917) - Add
unstable_expectedLoadTime
to Suspense for CPU-bound trees. (@acdlite in #19936) - Add an experimental
unstable_useOpaqueIdentifier
Hook. (@lunaruan in #17322) - Add an experimental
unstable_startTransition
API. (@rickhanlonii in #19696) - Using
act
in the test renderer no longer flushes Suspense fallbacks. (@acdlite in #18596) - Use global render timeout for CPU Suspense. (@sebmarkbage in #19643)
- Clear the existing root content before mounting. (@bvaughn in #18730)
- Fix a bug with error boundaries. (@acdlite in #18265)
- Fix a bug causing dropped updates in a suspended tree. (@acdlite in #18384 and #18457)
- Fix a bug causing dropped render phase updates. (@acdlite in #18537)
- Fix a bug in SuspenseList. (@sebmarkbage in #18412)
- Fix a bug causing Suspense fallback to show too early. (@acdlite in #18411)
- Fix a bug with class components inside SuspenseList. (@sebmarkbage in #18448)
- Fix a bug with inputs that may cause updates to be dropped. (@jddxf in #18515 and @acdlite in #18535)
- Fix a bug causing Suspense fallback to get stuck. (@acdlite in #18663)
- Don't cut off the tail of a SuspenseList if hydrating. (@sebmarkbage in #18854)
- Fix a bug in
useMutableSource
that may happen whengetSnapshot
changes. (@bvaughn in #18297) - Fix a tearing bug in
useMutableSource
. (@bvaughn in #18912) - Warn if calling setState outside of render but before commit. (@sebmarkbage in #18838)
Artifacts
- react: https://unpkg.com/react@17.0.1/umd/
- react-art: https://unpkg.com/react-art@17.0.1/umd/
- react-dom: https://unpkg.com/react-dom@17.0.1/umd/
- react-is: https://unpkg.com/react-is@17.0.1/umd/
- react-test-renderer: https://unpkg.com/react-test-renderer@17.0.1/umd/
- scheduler: https://unpkg.com/scheduler@0.20.1/umd/