fix: Tax - No autofocus in the name editing menu taxes#95917
Conversation
|
@eVoloshchak Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 119bc2d926
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…autofocus-in-the-name-editing-menu-taxes
|
@codex review |
Codecov Report✅ All modified and coverable lines are covered by tests. |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
|
Hi @eVoloshchak Could you test it on a real device when you have a moment? Thanks! |
|
@TaduJR, could you merge the latest main please? |
…autofocus-in-the-name-editing-menu-taxes # Conflicts: # ios/Podfile.lock # package-lock.json # package.json
Done @eVoloshchak |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppscreen-20260719-155753-1784469455387.mp4Android: mWeb ChromeScreen.Recording.2026-07-19.at.16.04.47.moviOS: HybridAppScreen.Recording.2026-07-19.at.15.56.46.moviOS: mWeb SafariScreen.Recording.2026-07-19.at.16.03.25.movMacOS: Chrome / SafariScreen.Recording.2026-07-19.at.16.05.15.mov |
Build fails on a real device (not related to this PR, same behavior is on main, probably xCode version mismatch) |
|
Would it be possible to request adhoc and test on real device from the QA team? |
|
🚧 flodnv has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
I requested an adhoc build test on real devices. |
|
Passed, Web-Chrome, iPhone 13/iOS 26.5 / v9.4.35-1 PR:95917 (Pending validation in Android). Test6: couldn't validate on full story as unable to find the email logged in on my device, due to this KI REC-20260720164027.mp4Test.6.mp4Test.5.mp4Test.4.mp4Test.3.mp4Test.2.mp4Test.1.mp4 |
|
Conflicts |
…autofocus-in-the-name-editing-menu-taxes # Conflicts: # ios/Podfile.lock
Done @flodnv |
|
🚧 flodnv has triggered a test Expensify/App build. You can view the workflow run here. |
|
@flodnv looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
Tests passed. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/flodnv in version: 9.4.42-0 🚀
|
Explanation of Change
This PR fixes the iOS-only autofocus failure on the tax name editing page by upgrading the FullStory packages to versions that no longer rewrite React refs:
@fullstory/react-native^1.9.0→^1.10.1@fullstory/babel-plugin-react-native^1.5.2→^1.7.0@fullstory/babel-plugin-annotate-react^2.3.2→^2.4.0(required by the SDK, behavior unchanged — its newreactCompileroption is opt-in and not enabled)FullStory.mmHybridApp crash patch from 1.9.0 to 1.10.1 (upstream file is unchanged between the two versions, so this is a rename only)Root cause recap: On iOS New Architecture with React 19,
@fullstory/babel-plugin-react-native≤1.6.0 injected a phantom enumerableref(sharedRefWrapper) into the props of every element annotated with FullStory attributes. That phantom ref leaked through the{...rest}spread inTextSelectorModaland overwroteinputCallbackRefonInputWrapper, soinputRef.currentstayednulland theuseFocusEffectfocus logic silently bailed — no autofocus, iOS native only.FullStory 1.7.0 (fullstorydev/fullstory-babel-plugin-react-native#72, stacked with fullstorydev/fullstory-react-native#151 — written by the FullStory maintainer, citing fullstorydev/fullstory-babel-plugin-react-native#64 as motivation) removes ref rewriting entirely. The plugin no longer modifies
react/cjs/*.jsor touches element props/refs at all. Instead, it injects a commit-phase hook into the Fabric renderer (commitMutationEffectsOnFiberinReactFabric-{dev,prod,profiling}.js) that collects host fibers carrying FS attributes frommemoizedPropsand, once the shadow tree is committed to native, forwards them to the SDK via a single batched native command. Since element props are never mutated, both prior failure modes (enumerable phantom refs leaking through spreads, and non-enumerable refs being dropped by spreads) are eliminated by construction there is no ref manipulation left to regress.Fixed Issues
$ #76650
PROPOSAL: #76650 (comment)
Tests
Test 1 — Tax name field focuses automatically:
Test 2 — Emoji picker opens:
Test 3 — "New messages" badge scrolls the chat:
Test 4 — Reordering stops on a distance expense:
Test 5 — Chat scrolls down after submitting an expense:
Test 6 — App recordings still work (FullStory):
Offline tests
Same as tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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
Screen.Recording.2026-05-23.at.12.24.33.AM.mov
Android: mWeb Chrome
Screen.Recording.2026-05-23.at.12.28.46.AM.mov
iOS: Native
Screen.Recording.2026-05-23.at.12.11.24.AM.mov
iOS: mWeb Safari
Screen.Recording.2026-05-23.at.12.18.41.AM.mov
MacOS: Chrome / Safari
Screen.Recording.2026-05-23.at.12.16.45.AM.mov