RepoJournal
Meta

Meta

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

Keep up with Meta in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

One email a day. Unsubscribe in one click.

Pick a date

Topics: JavaScript AI / ML Full archive →

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.

One email a day. Unsubscribe in one click.

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

Quick answers

What shipped 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. In total, 21 commits, 7 pull requests, and 1 releases landed.
Who contributed to Meta on July 9, 2026?
1 developer shipped this update, including sophiebits.
What were the notable Meta updates?
[Fast Refresh] Make edits to a memo comparison function take effect, [Fast Refresh] Find and remount wrapper edits behind lazy(), and [Fast Refresh] Derive the fiber tag from the resolved type when mounting.

More from Meta

Daily updates, in your inbox

Follow Meta

Keep up with Meta in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

One email a day. Unsubscribe in one click. Read a past issue →

Elsewhere on the wire

Want every project, not just this one?

We use privacy-friendly analytics (Google Analytics, IP-anonymized) to see which pages help readers. No ads, and we never sell your data. See our Privacy Policy.