Meta

Meta

React, React Native, and Jest — the open source under what Meta ships

Pick a date

The Wire · Showcase

REACT FAST REFRESH FIXED: MEMO EDITS NOW STICK

By RepoJournal · Filed · About Meta

React's hot reload engine was silently dropping edits to memo comparison functions and lazy wrapper types, forcing full remounts to see changes.

Three connected fixes landed overnight across React's Fast Refresh system. First, edits to a memo's comparison function now take effect immediately [1]. Previously, adding or removing that second argument to memo() was invisible until something else remounted the component tree. The fix required two changes: switching SimpleMemoComponent to MemoComponent when a comparison function appears, and adding MemoComponent to the hot reload type resolution so existing fibers read the new .compare value. Second, lazy() wrapper edits now get caught by the refresh scan [2]. Type changes inside a lazy's inner component (like wrapping it in memo) were missed entirely, and SimpleMemoComponent remounts were getting the wrong fiber tag. Third, React now derives fiber tags from resolved types at mount time [3], preventing the old/new type mismatch errors that broke tree recreation during edits. On the React Native side, the bundle location setting now persists across app restarts [5], and the team is aggressively cleaning up internal exports: src/* mappings are gone [6], the undocumented Touchable base type is removed from public API [7], and a new 'react-native/setup-env' export replaces the special-case InitializeCore import path [8]. Node 21+ test failures also got fixed [4] by working around V8's Proxy stack setter behavior.

Action items

References

  1. [1] [Fast Refresh] Make edits to a memo comparison function take effect ↗ facebook/react
  2. [2] [Fast Refresh] Find and remount wrapper edits behind lazy() ↗ facebook/react
  3. [3] [Fast Refresh] Derive the fiber tag from the resolved type when mounting ↗ facebook/react
  4. [4] [test] Fix Error Proxy stack assignment in Node.js 21+ (#36967) facebook/react
  5. [5] Persist Change Bundle Location host setting (#57425) facebook/react-native
  6. [6] Remove src/* exports mapping (#57484) facebook/react-native
  7. [7] Remove Touchable (base) from public API (#57476) facebook/react-native
  8. [8] Expose 'react-native/setup-env' to replace InitializeCore (#57475) facebook/react-native

FAQ

What changed in Meta on July 9, 2026?
React's hot reload engine was silently dropping edits to memo comparison functions and lazy wrapper types, forcing full remounts to see changes.
What should Meta teams do about it?
Update React to pick up Fast Refresh memo and lazy fixes in your next release • Review React Native imports for src/* paths and InitializeCore references, update to new public exports • Remove any direct references to Touchable base type from your components
Which Meta repositories shipped on July 9, 2026?
facebook/react, facebook/react-native

Related across the cluster

For your repos

The showcase is a teaser.
Your wire is the product.

Same engine. Different stack. Below: what changes when the wire is yours.

Showcase wire

  • 14 famous open source orgs
  • One wire per day
  • Public, generic
  • Read on the web, when you remember

Your wire

  • Up to 1,500 of your repos - orgs, deps, vendors
  • Morning and evening briefs
  • Action items routed to your team
  • Slack delivery, email, breaking-news CVE alerts

Want a hands-on demo first? Ask a current user for an invite link.