Audit react-navigation patches: remove redundant emoji patch, fix stale docs#94419
Draft
elirangoshen wants to merge 1 commit into
Draft
Audit react-navigation patches: remove redundant emoji patch, fix stale docs#94419elirangoshen wants to merge 1 commit into
elirangoshen wants to merge 1 commit into
Conversation
…le docs - Remove fix-crash-when-parsing-emoji patch (Expensify#12679 already in core@7.16.1; patch only stripped String() coercion, not the upstream fix) - Remove stale getStateFromPath entry from details.md (file deleted Jun 2025) - Fix wrong Expensify#11887 upstream link on browser-history patch -> Expensify#12751/Expensify#12460 - Document v8 follow-ups (transitionEnd, inactiveBehavior, pushParams) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Explanation of Change
This addresses the internal callstack audit callstack-internal/expensify-issues#2632 — "Verify and update react-navigation's patches". A react-navigation maintainer (Satya164) flagged several of our custom patches in
patches/react-navigation/as possibly outdated. We audited every patch against upstream react-navigation. This PR lands the low-risk cleanup only; the v8-dependent migrations are documented inline as follow-ups and are intentionally not done here.Changes (2 files, +3/-30):
@react-navigation+core+7.16.1+002+fix-crash-when-parsing-emoji.patch. The emoji crash fix (upstream react-navigation PR #12679) is already shipped in the installed@react-navigation/core@7.16.1. The local patch's "before" line was already the fixed code; all the patch actually did was strip theString()wrapper (Array.from(String(value))→Array.from(value)), which is not the upstream fix and is a mild regression for non-string values. Removing it restores upstream's emoji-safe behavior on the next install.patches/react-navigation/details.md:getStateFromPath.patchentry — that patch file was deleted back in June 2025; only the doc entry survived.@react-navigation+native+7.1.33+001+initial.patch). It pointed to PR Web -Chat - Error message displayed when sending message from corrupted accounts #11887 (which is actually the InteractionManager PR — a copy-paste error); now corrected to PR #12751 (route.history+pushParams, which Satya added upstream for this exact use case) plus the originating issue #12460.runAfterInteractionsis widely used); v8 removes InteractionManager support, so consumers will move tonavigation.addListener('transitionEnd', ...).dontDetachScreenpatch with the v8inactiveBehaviorfollow-up.Follow-ups intentionally NOT in this PR (all require the React Navigation v8 upgrade, which is alpha-only and blocked on a react-native-screens rewrite):
pushParamsto shrink the browser-history patch.transitionEnd.dontDetachScreenwithinactiveBehavior.Fixed Issues
$ N/A — This is tracked by an internal callstack issue (callstack-internal/expensify-issues#2632), not a public Expensify/App GitHub issue, so there is no public
$-linkable issue number. The audit referenced above is the source of record.PROPOSAL: N/A — Internal maintenance/cleanup task; no public proposal process applies.
Tests
npm installand verifypatch-packageapplies the remaining react-navigation patches with no errors and without the removed emoji patch.patches/react-navigation/@react-navigation+core+7.16.1+002+fix-crash-when-parsing-emoji.patchno longer exists and is not referenced anywhere.patches/react-navigation/details.mdand verify: nogetStateFromPath.patchentry; the browser-history patch links to PR Update version to 1.2.28-0 on main #12751 / issue Add errors object back to menu item, remove unused isPolicy #12460; the InteractionManager anddontDetachScreenentries carry the v8 follow-up annotations.Offline tests
No offline-specific behavior is affected. This PR only removes a redundant build-time patch and updates patch documentation; there is no runtime, network, or data-layer change.
QA Steps
Same as Tests. There is no user-facing behavior change to validate on staging — the removed patch's behavior is already provided by the installed
@react-navigation/core@7.16.1.PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-06-24.at.15.30.53.mov
Screen.Recording.2026-06-24.at.15.32.23.mov