perf: pre-warm user location in ShareRootPage and read via Onyx.get
Maintainers usually reply within 1 day
@truph01 is already working on this.
Since Nov 4, 2026.
Assessment
This issue has not been assessed yet.
Description
Problem
SubmitDetailsPage called snapshotUserLocation() on mount and held a reactive useOnyx(ONYXKEYS.USER_LOCATION) subscription. Querying device GPS permissions and writing coordinates into Onyx inside the ShareExtensionOpenSubmitFlow span caused main thread latency and extra re-renders, even though the coordinates are only needed at submit time.
Solution
Pre-warm the location in ShareRootPage when a scannable receipt is processed, so the GPS read happens outside the span. SubmitDetailsPage now reads the cache once with Onyx.get at submit time and falls back to a capped device read when nothing is cached. snapshotUserLocation() also clears USER_LOCATION before the permission check, so a stale value is never attached as gpsPoint.
PR
https://github.com/Expensify/App/pull/104479
Issue Owner
Current Issue Owner: @truph01- Dominant language
- TypeScript
- Stars
- 5k
- Forks
- 4k
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 561
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Expensify/App
-
[Exploratory] Expense - 2 selected drop-down is shown twice when selecting hold from more option.OpenMonthly Not a priority
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Expensify/App#106080 · 1 comment ·
Maintainers usually reply within 1 day
-
Monthly Not a priority
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Expensify/App#106057 · 1 comment ·
Maintainers usually reply within 1 day
-
Reviewing Weekly
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Expensify/App#105383 · 1 comment ·
Maintainers usually reply within 1 day
-
Monthly Not a priority
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Expensify/App#105341 · 2 comments ·
Maintainers usually reply within 1 day
-
Monthly Not a priority
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Expensify/App#105100 · 1 comment ·
Maintainers usually reply within 1 day
Similar issues
-
unwrapDatabaseError masks real DB errors with TypeError: Cannot convert object to primitive valueOpen
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
NEARBuilders/everything-dev#798 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
vercel-labs/durable-harness#53 ·
Maintainers usually reply within 1 day
-
[Bug]: Redesign tab bars ignore clicks on Linux: hidden chat layers keep window drag regionsPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
experiência: a doc manda subir para o Micro do Supabase, mas não diz que exige plano pago nem quanto custaPossibly taken A pull request linked to this issue is open or already merged. Openarea/docs area/ui enhancement
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
melgarafael/DeskcommCRM#4098 ·
Maintainers usually reply within 1 day
-
dependencies platform: ios
Difficulty 1/5 1-3 hours Newbie friendliness 78/100
software-mansion/react-native-executorch#1617 ·
Maintainers usually reply within 1 day