Repository navigation
Animate the action-badge forward-scroll on native to match web - #102116
Conversation
Native's scrollToIndex defaults to an instant jump, so the immediate forward-scroll teleported to the next actionable preview. Pass animated: true at the call site so both platforms animate. Co-authored-by: Aimane Chnaif <aimane-chnaif@users.noreply.github.com>
| // `animated` is passed explicitly because native's scrollToIndex defaults to an instant jump. The forward-scroll fires | ||
| // immediately on click, so without the animation native teleports to the next actionable preview and the user loses | ||
| // track of where the list moved. Animating matches web and keeps the movement readable on both platforms. |
There was a problem hiding this comment.
@MelvinBot simplify (or remove if redundant) all inline comments
|
🤖 Android test steps verification results: ❌ fail The PR's Step 5 of the documented plan (MacOS: Chrome / Safari regression check) was not run — this run was Android-only. |
Trim the three comments to the "why" and drop the restatement of what the code already shows. Co-authored-by: Aimane Chnaif <aimane-chnaif@users.noreply.github.com>
|
Simplified all three inline comments and pushed
One thing worth a look: in Checks run
No behavior change, so no on-device verification was needed. |
|
There's nothing to fix in the code — the only failing check is From the failing job: Every other check is green: This check clears once an eligible reviewer who isn't the PR author approves. No push from me would change it. |
|
@MelvinBot pull main |
…ToActionBadgeTargetOnNative Co-authored-by: Aimane Chnaif <aimane-chnaif@users.noreply.github.com>
|
I merged the latest |
|
@MelvinBot mark as ready for review |
|
I couldn't mark this PR as ready for review. This run doesn't have permission to change a PR's draft status. To do it yourself, click Ready for review at the bottom of the PR page. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid.movAndroid: mWeb ChromeiOS: HybridAppios.mp4iOS: mWeb SafariMacOS: Chrome / Safari |
|
We did not find an internal engineer to review this PR, trying to assign a random engineer to #98824 as well as to this PR... Please reach out for help on Slack if no one gets assigned! |
DetailsExplanation of Change#98515 made the action-badge forward-scroll fire immediately on click instead of waiting for the approve/pay/submit button animation.
This passes Fixed Issues$ #98824 Tests
Offline testsSame as Tests QA StepsSame as Tests
PR Author Checklist
@MelvinBot please set the PR body to the content in the details section above |
|
I replaced the PR body with the content from your The new body leaves out the old AI Tests and Screenshots/Videos sections because your version didn't include them. Add back Screenshots/Videos if reviewers need it. |
|
@MelvinBot mark as ready for review like you did in #98515 (comment) |
|
I still can't mark this PR as ready for review. I did mark the PR you linked ready on 2026-08-13, but this run blocks the command that changes a PR's draft status. I won't work around that block. Please click Ready for review at the bottom of the PR page. |
|
@MelvinBot address #102116 (comment), #102116 (comment) |
|
@aimane-chnaif 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] |
Co-authored-by: Aimane Chnaif <aimane-chnaif@users.noreply.github.com>
|
@arosiclair 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] |
|
I applied both review comments in a865583:
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 arosiclair has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/arosiclair in version: 9.5.2-0 🚀
|
|
No help site update needed. This PR only makes the chat scroll to the next actionable report preview animate on native, the same way it already does on web, and no help article describes that scroll behavior. |
|
Deploy Blocker #102959 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.5.2-4 🚀
Bundle Size Analysis (Sentry): |













Explanation of Change
#98515 made the action-badge forward-scroll fire immediately on click instead of waiting for the approve/pay/submit button animation.
That closed out the web and mobile half of the request; the remaining item on the linked issue is giving native an animated scroll so it matches web.
useReportScrollManagerhas two platform implementations with differentanimateddefaults: web defaults totrue, native defaults tofalse.scrollToActionBadgeTargetnever passed the option, so it inherited each platform's default — web animated smoothly, native teleported.That instant jump was tolerable while the scroll waited for the button animation (the delay gave the user a beat to follow along), but now that the scroll fires on the very next frame after the click, native snaps the list to the next actionable preview with no visual continuity and the user loses track of where the list moved.
This passes
{animated: true}explicitly at the single call site inscrollToActionBadgeTarget, so both platforms animate.Web behavior is unchanged (it already defaulted to
true); only native changes.Every other
scrollToIndexcaller keeps its existing per-platform default — in particularReportActionItemMessageEdit's Android Chrome keyboard hack still passes{animated: false}deliberately.Fixed Issues
$ #98824
Tests
Offline tests
Same as Tests
QA Steps
Same as Tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, 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.