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
Currently we double-invoke component constructor, render, static getDerivedStateFromProps and setState reducer functions if the debugRenderPhaseSideEffects feature flag is on. We should also do this if we're inside of a StrictMode subtree.
However, it is likely that the new StrictMode element will be present in production apps, so I believe it is important that it not negatively impact performance.
Strict warnings (like all warnings) only impact dev mode, but up until now the double-invoked lifecycles impact both dev and prod. This is actually a good thing at Facebook, since it helps us identify potential bugs in production and we can easily limit it to only impact developers, but I think it would complicate the story for external users because of the negative performance impact.
I propose that we continue to observe the debugRenderPhaseSideEffects flag for dev and prod (since this impacts Facebook only) but only double-invoke for "strict" mode in dev.
Enabling this behavior greatly complicates our incremental rendering tests (see below so I will also be converting these to be internal so they can explicitly override the feature-flag before running. I think this is okay since the tests that break all use the noop-renderer which is not published to NPM.
The text was updated successfully, but these errors were encountered:
Relates to PR #12083
Currently we double-invoke component
constructor
,render
,static getDerivedStateFromProps
andsetState
reducer functions if thedebugRenderPhaseSideEffects
feature flag is on. We should also do this if we're inside of aStrictMode
subtree.However, it is likely that the new
StrictMode
element will be present in production apps, so I believe it is important that it not negatively impact performance.Strict warnings (like all warnings) only impact dev mode, but up until now the double-invoked lifecycles impact both dev and prod. This is actually a good thing at Facebook, since it helps us identify potential bugs in production and we can easily limit it to only impact developers, but I think it would complicate the story for external users because of the negative performance impact.
I propose that we continue to observe the
debugRenderPhaseSideEffects
flag for dev and prod (since this impacts Facebook only) but only double-invoke for "strict" mode in dev.Enabling this behavior greatly complicates our incremental rendering tests (see below so I will also be converting these to be internal so they can explicitly override the feature-flag before running. I think this is okay since the tests that break all use the noop-renderer which is not published to NPM.
The text was updated successfully, but these errors were encountered: