Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Class components should never attempt to preserve state.
Normally this was already being handled by the Fresh Runtime. It chooses whether to put type in
updatedFamilies
(re-render) orstaleFamilies
(re-mount) based on whether it has.prototype && .prototype.isReactComponent
. This is usually sufficient.There are some corner cases where it isn't sufficient though. Such as recently deprecated factory components. They "look" like functions, but their fibers are tagged as a Class. I just spent an hour debugging a Fast Refresh issue in VR code which was caused by old Relay using factory components and hitting this.
While we don't want to support deprecated components, fixing this is easy and may also help with other corner cases we may encounter in the future. Like a second level of defense.