feat: add crop receipt#81380
Conversation
Co-authored-by: dukenv0307 <129500732+dukenv0307@users.noreply.github.com>
|
@srikarparsi These concerns are valid. I updated. |
|
Awesome thanks, creating an AdHoc build to test and should be able to merge right after |
|
🚧 @srikarparsi has triggered a test Expensify/App build. You can view the workflow run here. |
|
🚧 @srikarparsi 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! 🧪🧪
|
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
srikarparsi
left a comment
There was a problem hiding this comment.
Looks good to me from a code perspective, if it's also good from a product perspective I think we can merge this in
trjExpensify
left a comment
There was a problem hiding this comment.
Parity feature request we're adding!
|
🚧 @trjExpensify has triggered a test Expensify/App build. You can view the workflow run here. |
|
^^ weird, I just approved and merged the PR. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/trjExpensify in version: 9.3.27-0 🚀
|
|
Deploy Blocker #83709 was identified to be related to this PR. |
|
Deploy Blocker #83711 was identified to be related to this PR. |
|
Deploy Blocker #83728 was identified to be related to this PR. |
|
Deploy Blocker #83789 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.3.27-8 🚀
|
Update the receipt editing article to document the new crop receipt feature added in PR #81380 and update the replace receipt instructions to reflect the new button-based UI. Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
| }, []); | ||
|
|
||
| const saveCrop = useCallback(() => { | ||
| if (!transaction?.transactionID || !sourceUri || !isImage || !cropRect) { |
There was a problem hiding this comment.
We should also add a check when the cropRect width or height is smaller than 1. Otherwise this condition isn't passed and App will crash.

Explanation of Change
feat: add crop receipt
Fixed Issues
$ #79961
PROPOSAL: #79961 (comment)
Tests
Offline tests
Same
QA Steps
Same as test
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-01-21.at.21.01.57.mov
Android: mWeb Chrome
Screen.Recording.2026-01-21.at.21.03.56.mov
iOS: Native
Screen.Recording.2026-01-21.at.21.05.21.mov
iOS: mWeb Safari
Screen.Recording.2026-01-21.at.21.06.22.mov
MacOS: Chrome / Safari
Screen.Recording.2026-01-21.at.21.07.39.mov
Screen.Recording.2026-01-21.at.21.08.00.mov