You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Looks like the wording of this warning might need to be updated to reflect it actually won't work and not just a recommendation
UNSAFE-prefixed versions of componentWillMount and componentWillUpdate
StrictMode
Fires deprecation warnings for componentWillMount, componentWillUpdate, componentWillReceiveProps.
unstable_AsyncMode
Enables async-by-default updates.
Also enables strict mode.
Changes related to async mode:
Update scheduling:
Interactive updates
Async, expires within ~1 second. If a subsequent interactive event is fired before an earlier one has flushed, the earlier one is synchronously flushed before processing the incoming one.
Used for any event that is the result of a discrete user interaction. In other words, interactive events are events that cannot be debounced without affecting the terminal state. So a click event is interactive, but a scroll event is not.
Controlled updates
Sync-ish. Effectively the same as using unstable_batchedUpdates in synchronous mode. Updates are flushed before React yields back to the browser.
Used for controlled components, where the state of the DOM must always be in sync with React's internal state.
Deferred updates
Default for updates outside a React lifecycle or event handler: setTimeout, promise handlers, etc.
unstable_createRoot
Only useful for pre-rendering via createBatch. Not quite ready to make this API stable.
Also enables async-mode for all children and the root.
unstable_flushControlled
Only useful for things like Draft that need to wrap event handlers.
Confirm unstable_deferredUpdates et al work when nested inside a lifecycle or other priority-changing function.
Revert the deprecation of injecting custom event plugins (@necolas will do that) because we're not ready to commit to providing another migration path for RNW
16.4
Deprecate componentWillMount, componentWillUpdate, and componentWillReceiveProps, even outside strict mode.
They will keep working, but with a warning. You can add the UNSAFE_ prefix if you want to keep using them.
Deprecate legacy context API (?)
Possible migration strategy: implement the legacy API on top of the new API and extract it into a separate package, like create-react-class and prop-types.
Revert deprecation of injecting event plugins
A Far Future Major Version
Remove deprecated APIs
Legacy context API (assuming we deprecate this in 16.x minor)
Presumably we'll have added more warnings to strict mode by this point
Chose not to include in 16.3, but may include in 16.4 or beyond:
New component API. We're holding off on this until we're closer to "feature complete," a phrase which here means "having implemented async rendering and bytecode compilation."
Static version of render method. It would take lots of effort to migrate, mostly because of class instance methods used as event handlers. The migration effort may not be worth it if we eventually introduce a new component API that replaces classes.
Stable version of unstable_batchedUpdates. We really should have made this stable a while ago, as it's clearly useful in synchronous mode. However, in asynchronous mode, it's effectively a no-op, so it would be weird to ask everyone to migrate to a new API, only to remove it in an upcoming release.
Stable version of unstable_AsyncMode. It's probably ready to be used in production, in a limited capacity, but we're holding off until we've tested it more internally. Tentative plan is to make this stable in 16.4.
Automatically opt error boundary children into strict mode. Technically, they should be strict mode resilient, but in many apps, this would effectively opt all components into strict mode, since the recommendation is to always have an error boundary at the top of the tree.
16.3
getDerivedStateFromPropsUNSAFE-prefixed versions ofcomponentWillMountandcomponentWillUpdateStrictModecomponentWillMount,componentWillUpdate,componentWillReceiveProps.unstable_AsyncModeunstable_batchedUpdatesin synchronous mode. Updates are flushed before React yields back to the browser.setTimeout, promise handlers, etc.unstable_createRootcreateBatch. Not quite ready to make this API stable.unstable_flushControlledunstable_deferredUpdateset al work when nested inside a lifecycle or other priority-changing function.react-reconcilerreact-reconciler/persistent, PR: Expose persistent reconciler to custom renderers #1215616.4
componentWillMount,componentWillUpdate, andcomponentWillReceiveProps, even outside strict mode.UNSAFE_prefix if you want to keep using them.create-react-classandprop-types.A Far Future Major Version
componentWillReceiveProps,componentWillUpdate,componentWillMountChose not to include in 16.3, but may include in 16.4 or beyond:
rendermethod. It would take lots of effort to migrate, mostly because of class instance methods used as event handlers. The migration effort may not be worth it if we eventually introduce a new component API that replaces classes.unstable_batchedUpdates. We really should have made this stable a while ago, as it's clearly useful in synchronous mode. However, in asynchronous mode, it's effectively a no-op, so it would be weird to ask everyone to migrate to a new API, only to remove it in an upcoming release.unstable_AsyncMode. It's probably ready to be used in production, in a limited capacity, but we're holding off until we've tested it more internally. Tentative plan is to make this stable in 16.4.