feat: render expanded chart at native resolution and add pinch-zoom via MultiGestureCanvas - #97698
feat: render expanded chart at native resolution and add pinch-zoom via MultiGestureCanvas#97698abbasifaizan70 wants to merge 20 commits into
Conversation
…ia MultiGestureCanvas
…70/Expensify into 92969-followup-zoom
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 24d931aac7
ℹ️ 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".
…width) in expanded charts
…high-res, let MultiGestureCanvas own all transforms
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
|
@situchan how's review going? |
|
@situchan any updates on the review? |
|
Sorry missed this. Will update shortly |
|
@abbasifaizan70 charts not rendering at all Screen.Recording.2026-08-12.at.4.50.11.PM.mov
production: Screen.Recording.2026-08-12.at.4.51.14.PM.mov |
|
@situchan Looking into these in details. |
… not cross the Skia canvas boundary
Screen.Recording.2026-08-14.at.2.34.56.AM.mp4@situchan After the fix demo. |
|
@situchan did you get a chance to review the latest commits? |
|
@situchan bump |
|
Reviewing shortly |
…ng a font's raw typeface pointer
…test with fonts context
Screen.Recording.2026-08-20.at.2.16.15_AM-compressed.mp4@situchan @luacmartins Test with different types of graphs and aslo did resizing. Can you take a look? Thanks |
|
On desktop web (non-touchable device), I think we should mimic the behavior of normal attachment. Curious for @Expensify/design thoughts Screen.Recording.2026-08-19.at.10.30.20.PM.mov |
|
That makes complete sense to me - think of this like viewing any other attachment, so whatever we already do for the various platforms should apply here. |
…h scroll pan, pinch on touch devices
|
@situchan Implemented new Zoom follow and updated videos in the PR description as well. |
|
@situchan bump for review |

Explanation of Change
Re-renders the expanded chart natively at its target size (via a scaled chart context) instead of raster-upscaling the design-size render, so charts stay sharp on large screens.
Adds pinch/double-tap zoom and pan to the expanded chart using MultiGestureCanvas — the same gestures as the image attachment viewer, as agreed in the follow-up discussion on #95249.
Includes unit tests for the new context-scaling logic.
Fixed Issues
$ #92969
PROPOSAL:#92969 (comment)
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.Screenshots/Videos
Android: Native
Screen_Recording_20260825_014636_New.Expensify.Dev.mp4
Android: mWeb Chrome
Screen_Recording_20260825_015755_Chrome.mp4
iOS: Native
Screen.Recording.2026-08-25.at.12.38.37.AM.mov
iOS: mWeb Safari
Screen.Recording.2026-08-25.at.12.53.26.AM.mov
MacOS: Chrome / Safari
Screen.Recording.2026-08-22.at.5.33.50.AM.mp4