Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
750 commits
Select commit Hold shift + click to select a range
03e40e7
simplify logic
jmusial Jun 17, 2026
dec1e19
docs: document Search selection builders and eslint-disable rationale
BartekObudzinski Jun 17, 2026
9f02795
Merge pull request #93459 from mukhrr/fix/93175
MariaHCD Jun 17, 2026
98290ff
Remove mock for deleted useAllPolicyExpenseChatReportActions hook
TMisiukiewicz Jun 17, 2026
00dbfda
fix: nested Search query fallback for unmounted tab state
JakubKorytko Jun 17, 2026
8f1dc84
Merge remote-tracking branch 'origin/main' into perf/lazy-policy-expe…
TMisiukiewicz Jun 17, 2026
534c33b
Remove stale hook mock from export bulk actions test
TMisiukiewicz Jun 17, 2026
6c53522
docs: document each property of the Search selection param types
BartekObudzinski Jun 17, 2026
56cef36
Merge pull request #69597 from software-mansion-labs/war-in/bump-lottie
mountiny Jun 17, 2026
b5025de
Update Mobile-Expensify submodule to 86e5643
OSBotify Jun 17, 2026
1078de2
Hoist policy expense chat report actions out of bulk-pay loop
TMisiukiewicz Jun 17, 2026
de0f1f3
Merge pull request #93684 from software-mansion-labs/war-in/live-mark…
mountiny Jun 17, 2026
484f55f
Merge pull request #93779 from software-mansion-labs/chore/remove-exp…
mountiny Jun 17, 2026
e6999a2
fix: Search context detection from preserved tab state
JakubKorytko Jun 17, 2026
5ca45f4
Merge pull request #82075 from nkdengineer/fix/80428
mollfpr Jun 17, 2026
490b7ee
Defer existingB2BInvoiceReport computation to pay callback
TMisiukiewicz Jun 17, 2026
72dfc76
Address Codex review on SEQUENTIAL_QUEUE.md
adhorodyski Jun 17, 2026
9c0f2a1
read Search params from tab params.state
JakubKorytko Jun 17, 2026
a23ba78
test(selectors): add unit tests for canDowngradeSelector and createOw…
WojtekBoman Jun 17, 2026
b8e920a
Merge pull request #92809 from callstack-internal/perf/search-selecti…
mountiny Jun 17, 2026
7b94023
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
a190ec8
Merge remote-tracking branch 'origin/main' into perf/defer-existing-b…
TMisiukiewicz Jun 17, 2026
18d0e4e
Merge pull request #93148 from twilight2294/patch-53
JS00001 Jun 17, 2026
2b999bb
Merge pull request #93717 from software-mansion-labs/perf/workspaces-…
mountiny Jun 17, 2026
7dfb3b6
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
87b261a
fix(receipt): allow hover zoom while receipt is scanning
WojtekBoman Jun 17, 2026
1059800
schemes update
grgia Jun 17, 2026
c6556c7
tweak comments
grgia Jun 17, 2026
83cec3c
clean up
grgia Jun 17, 2026
6630ce8
Merge pull request #93022 from hungvu193/chore-92828
iwiznia Jun 17, 2026
a38b04d
Merge pull request #93583 from software-mansion-labs/fix/improve-pdf-…
mountiny Jun 17, 2026
b21945e
Merge pull request #89564 from nabi-ebrahimi/fix/reports-stale-amount…
iwiznia Jun 17, 2026
3c5dc00
Merge pull request #92842 from Expensify/worktree-ee637862-concierge-…
inimaga Jun 17, 2026
83001e5
Merge main
iwiznia Jun 17, 2026
481a464
Merge branch 'claude-createReportSubmitDefaultWorkspace' of github.co…
iwiznia Jun 17, 2026
d963181
Remove Mobile-Expensify submodule bump (OSBotify-managed)
MelvinBot Jun 17, 2026
6f09a63
Merge branch 'main' into war-in/fix-skia-crash
war-in Jun 17, 2026
47ebaac
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
4a550fa
fix: Prevent race condition in copy policy settings navigation
fedirjh Jun 17, 2026
b0152b1
Merge remote-tracking branch 'origin/main' into perf/lazy-policy-expe…
TMisiukiewicz Jun 17, 2026
deccfbf
refactor: use isLoadingOnyxValue for checking metadata status
fedirjh Jun 17, 2026
33385cd
fix: lock `_primaryCacheMutex` earlier
war-in Jun 17, 2026
d402cd2
Simplify reconnect vocabulary and comments per review
adhorodyski Jun 17, 2026
402ed46
Merge branch 'Expensify:main' into fedirjh/fix-copy-settings-navigati…
fedirjh Jun 17, 2026
7761403
Merge pull request #93163 from KJ21-ENG/KJ21-ENG/91930-unreported-exp…
Gonals Jun 17, 2026
e4caf02
Clarify the full-reconnect cutoff Onyx key doc comment
adhorodyski Jun 17, 2026
11743ac
revert spacing
FitseTLT Jun 17, 2026
d30268b
Fix: remove unsafe type assertions in useCreateReportTest to satisfy …
MelvinBot Jun 17, 2026
20fee03
Fix spellcheck by replacing "refetches" with known wording
adhorodyski Jun 17, 2026
0aa9cf9
Merge branch 'Expensify:main' into fedirjh/fix-copy-settings-navigati…
fedirjh Jun 17, 2026
09446c7
Merge branch 'Expensify:main' into audit-reconnect-patterns
adhorodyski Jun 17, 2026
acd70f0
Show submitter name in received payment preview message
ishpaul777 Jun 17, 2026
ae8b1cc
Fix flaky createOwnedPaidPoliciesCountsSelector tests
MelvinBot Jun 17, 2026
cdcc025
Merge branch 'main' into korytko/consolidate-visibility-hook-triggers
JakubKorytko Jun 17, 2026
73c8c0d
Fix optimistic preview copy for received payment
ishpaul777 Jun 17, 2026
154f899
Merge branch 'main' into korytko/fix-global-create-scan
JakubKorytko Jun 17, 2026
26f13e4
Fix typecheck: use typed originalMessage for received payment copy
ishpaul777 Jun 17, 2026
968eccd
Merge pull request #93823 from Expensify/claude-fixFlakyPolicyCountsTest
Gonals Jun 17, 2026
8205e2e
Merge remote-tracking branch 'upstream/main' into 90637/members-filte…
samranahm Jun 17, 2026
687988e
Add OpenApp-leg regression tests for clock-skew full reconnect
adhorodyski Jun 17, 2026
dc3c7ab
Silence deprecation lint for optimistic received payment copy
ishpaul777 Jun 17, 2026
1598109
Merge branch 'main' into claude-createReportSubmitDefaultWorkspace
iwiznia Jun 17, 2026
687b8b0
Merge pull request #89786 from nabi-ebrahimi/fix/chat-offline-message…
puneetlath Jun 17, 2026
3a10b39
Type OptimisticIOUReportAction as an IOU action
ishpaul777 Jun 17, 2026
cb40305
Merge pull request #90290 from cretadn22/remove-ARE_TRANSLATIONS_LOAD…
mountiny Jun 17, 2026
2650acc
Merge pull request #93728 from Expensify/youssef_fix_missing_preview
luacmartins Jun 17, 2026
7329903
Merge branch 'Expensify:main' into fedirjh/fix-copy-settings-navigati…
fedirjh Jun 17, 2026
d714b58
Merge branch 'main' into korytko/fix-global-create-scan
JakubKorytko Jun 17, 2026
142dda3
Merge branch 'main' into korytko/consolidate-visibility-hook-triggers
JakubKorytko Jun 17, 2026
6da1099
Tighten full-reconnect doc comments to plain English
adhorodyski Jun 17, 2026
193f711
Add comment and unit tests for pending transaction ID registration in…
aswin-s Jun 17, 2026
544c7cc
Merge remote-tracking branch 'origin/main' into fix/issue-91679
aswin-s Jun 17, 2026
00c9fe2
Merge pull request #92446 from Expensify/worktree-youssef-lr-644512-a…
lakchote Jun 17, 2026
f656cd6
Fix unsafe type assertions and null types in split update unit tests
aswin-s Jun 17, 2026
41f09bc
Merge pull request #93544 from shubham1206agra/refactor-useSearchSele…
mountiny Jun 17, 2026
8b409ea
Merge pull request #93714 from software-mansion-labs/korytko/consolid…
mountiny Jun 17, 2026
c55a2be
Merge branch 'main' into cmartins-adminTable
luacmartins Jun 17, 2026
beb9587
Merge pull request #93140 from Expensify/claude-fixToReversedChrome10…
mountiny Jun 17, 2026
2564d37
Merge pull request #93751 from Expensify/jamesdeanexpensify-patch-3
cristipaval Jun 17, 2026
c01f24b
address comments
luacmartins Jun 17, 2026
6513211
Merge pull request #93525 from marufsharifi/fix/preserve-chat-page-wh…
luacmartins Jun 17, 2026
26f4fb4
Fix flaky UnreadIndicatorsTest CI timeout
mountiny Jun 17, 2026
8141398
rm styles
luacmartins Jun 17, 2026
0c42ed4
Merge pull request #92922 from Expensify/claude-createReportSubmitDef…
iwiznia Jun 17, 2026
29f3742
Merge pull request #93049 from callstack-internal/sentry-reporting-ob…
mountiny Jun 17, 2026
e4c8fb2
Merge remote-tracking branch 'origin/main' into perf/lazy-policy-expe…
TMisiukiewicz Jun 17, 2026
6ea10e7
Merge pull request #93830 from Expensify/fix/unread-indicators-test-f…
madmax330 Jun 17, 2026
5c9a55b
Merge remote-tracking branch 'upstream' into fedirjh/fix-copy-setting…
fedirjh Jun 17, 2026
c668bf2
test: Fix flaky CopyPolicySettingsNavigationTest by explicitly settin…
fedirjh Jun 17, 2026
273cfd1
test: Fix Invalid usage of async-await in tests
fedirjh Jun 17, 2026
525197a
Merge pull request #93773 from Expensify/claude-pronounsSaveButtonSaf…
lakchote Jun 17, 2026
766b229
Rename tareas pendientes to pendientes so it fits
iwiznia Jun 17, 2026
5a3137d
Merge branch 'main' of github.com:gijoe0295/App into feat/ai-feature-…
gijoe0295 Jun 17, 2026
bcdd2f7
fix typecheck
gijoe0295 Jun 17, 2026
436fde8
Merge main
hungvu193 Jun 17, 2026
9eb7cd2
Merge branch 'main' into georgia-avatar-scheme-key-2
grgia Jun 17, 2026
69f010f
color NOT coloUr
grgia Jun 17, 2026
6e57cfa
Fix eslint
hungvu193 Jun 17, 2026
2d31fb2
Apply language rules to SEQUENTIAL_QUEUE.md: drop em dashes, expand a…
adhorodyski Jun 17, 2026
226d9ec
Merge pull request #93800 from Expensify/georgia-avatar-scheme-key-2
chuckdries Jun 17, 2026
462264a
Merge pull request #93296 from software-mansion-labs/kuba-nowakowski/…
grgia Jun 17, 2026
b2f0d6f
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
bddfc14
Fix flaky Concierge draft pacing test
inimaga Jun 17, 2026
43af3e9
test(vcr): assert telemetry stub exports match activeSpans
roryabraham Jun 17, 2026
8a4c9de
fix(vcr): complete telemetry-activeSpans stub exports
roryabraham Jun 17, 2026
2c235f3
ci(vcr): add PR workflow for victory-chart-renderer tests
roryabraham Jun 17, 2026
7b8a06c
Merge pull request #92962 from ishpaul777/ishpaul/received-payment-re…
luacmartins Jun 17, 2026
508eb39
fix(vcr): stub headless runtime deps for standalone CLI
roryabraham Jun 17, 2026
3efff26
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
7003b31
ci(vcr): include Localize paths in PR workflow filter
roryabraham Jun 17, 2026
6cdce69
Merge pull request #93663 from ShridharGoel/fix-toggle-cashback-polic…
chiragsalian Jun 17, 2026
353e4e3
Rename triggerFullReconnect param to avoid no-shadow lint error
adhorodyski Jun 17, 2026
9eedd9b
Merge pull request #93853 from Expensify/ionatan_renametareaspendientes
justinpersaud Jun 17, 2026
dfedaa1
ci(vcr): use pull_request.paths instead of dorny
roryabraham Jun 17, 2026
3c3d41b
Merge pull request #93546 from fedirjh/fedirjh/fix-copy-settings-navi…
yuwenmemon Jun 17, 2026
4f6f818
ci(vcr): broaden workflow paths filter to src/**
roryabraham Jun 17, 2026
66e1632
fix lint
gijoe0295 Jun 17, 2026
82b779a
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
e1d74cc
Merge remote-tracking branch 'origin/main' into chuckdries/fix-source…
chuckdries Jun 17, 2026
3557b1f
fix(vcr): use real Onyx with MemoryOnlyProvider
roryabraham Jun 17, 2026
702c3d6
Merge pull request #93584 from callstack-internal/refactor/extract-su…
Julesssss Jun 17, 2026
e2672cc
Update version to 9.4.10-0
OSBotify Jun 17, 2026
e03965b
Update Mobile-Expensify submodule version to 9.4.10-0
OSBotify Jun 17, 2026
24f26c3
Return early from isPayer when no policy is found for a workspace report
MelvinBot Jun 17, 2026
0fb51ad
fix(vcr): unwrap Onyx CJS exports for Bun compile
roryabraham Jun 17, 2026
9b7058d
style: run prettier on VCR server files
roryabraham Jun 17, 2026
32adbad
Merge main; keep effort flags and align deploy blocker to v1.0.149
Julesssss Jun 17, 2026
3f280da
style(vcr): fix no-inline-named-export in stubs
roryabraham Jun 17, 2026
c02ad74
fix(vcr): drop bun types from VCR tsconfig
roryabraham Jun 17, 2026
e10b77e
Merge pull request #92287 from Expensify/claude-upgradeToOpus48
Julesssss Jun 17, 2026
2c87a47
fix(vcr): exit CLI after render to unblock smoke tests
roryabraham Jun 17, 2026
6135aa8
Merge pull request #92938 from callstack-internal/perf-investigate-Se…
cristipaval Jun 17, 2026
83f964d
Update version to 9.4.10-1
OSBotify Jun 17, 2026
7537624
Update Mobile-Expensify submodule version to 9.4.10-1
OSBotify Jun 17, 2026
2878b23
ci: replace VCR workflow with generic bunTests
roryabraham Jun 17, 2026
ad77018
ci(bun): include VCR golden render tests in test:bun
roryabraham Jun 17, 2026
d60a59d
Merge pull request #92832 from KJ21-ENG/KJ21-ENG/92816-spend-sidebar-…
blimpich Jun 17, 2026
1a71bbf
Merge pull request #93295 from software-mansion-labs/war-in/fix-skia-…
blimpich Jun 17, 2026
b9cfb10
Fix ESLint seatbelt: complete title field instead of unsafe type asse…
MelvinBot Jun 17, 2026
f753496
fix(vcr): use textSupporting color in cartesian fixtures
roryabraham Jun 17, 2026
8e39e5b
chore(vcr): use default bun test discovery in workspace
roryabraham Jun 17, 2026
20cffa1
test(bun): add describe blocks and run tests concurrently
roryabraham Jun 17, 2026
f39329d
ci(bun): run test:bun script in workflow
roryabraham Jun 17, 2026
715b815
chore(vcr): gitignore local test render output directory
roryabraham Jun 17, 2026
6945266
Merge remote-tracking branch 'upstream/main' into ishpaul/copy-travel…
ishpaul777 Jun 17, 2026
b60d554
Merge upstream/main into ishpaul/copy-travel-spotnana-provisioning-clean
ishpaul777 Jun 17, 2026
e7a2b80
Merge branch 'Expensify:main' into 90637/members-filter-multi-select
samranahm Jun 17, 2026
aadde1e
add tooltip
luacmartins Jun 17, 2026
2009544
Merge pull request #93859 from Expensify/rory-93745-fix-vcr-builds
roryabraham Jun 17, 2026
aba1afe
Update version to 9.4.10-2
OSBotify Jun 17, 2026
97f010f
Update Mobile-Expensify submodule version to 9.4.10-2
OSBotify Jun 17, 2026
e5bb927
Merge remote-tracking branch 'origin/main' into claude-netsuiteConnec…
MelvinBot Jun 17, 2026
6ad9ea9
Merge pull request #93700 from Expensify/claude-revertIsPayerMembersh…
pecanoro Jun 17, 2026
3b90c4c
Merge pull request #93320 from ishpaul777/ishpaul/copy-travel-spotnan…
yuwenmemon Jun 17, 2026
47bc387
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
16a7be7
Merge pull request #92926 from kacper-mikolajczak/automate-pr-checkli…
marcaaron Jun 17, 2026
a1a5abe
Restore IOUReportID fallback for IOU action report resolution
youssef-lr Jun 17, 2026
ca3bfd6
Prefer action reportID over IOUReportID fallback
youssef-lr Jun 17, 2026
e1df8b0
Reference tracking issue in temporary fallback comments
youssef-lr Jun 17, 2026
0db4bb2
Lint
youssef-lr Jun 17, 2026
e4244d9
Merge pull request #93881 from Expensify/youssef_restore_iou_reportid…
luacmartins Jun 17, 2026
02e6970
Update version to 9.4.10-3
OSBotify Jun 17, 2026
c52d731
Update Mobile-Expensify submodule version to 9.4.10-3
OSBotify Jun 17, 2026
f5b7519
Merge branch 'main' into fix-showing-duplicate-errors
FitseTLT Jun 17, 2026
9a1a7b1
Add bun as devDependency for victory-chart-renderer
roryabraham Jun 17, 2026
6663fd8
Remove setup-bun from bunTests workflow
roryabraham Jun 17, 2026
841efe0
Merge pull request #93886 from Expensify/rory-add-bun-dev-dependency
roryabraham Jun 17, 2026
e41eba5
Update version to 9.4.11-0
OSBotify Jun 17, 2026
22fe731
Update Mobile-Expensify submodule version to 9.4.11-0
OSBotify Jun 17, 2026
6ff47cb
Update version to 9.4.12-0
OSBotify Jun 17, 2026
33eb979
Update Mobile-Expensify submodule version to 9.4.12-0
OSBotify Jun 17, 2026
0fb15be
Merge pull request #93634 from ShridharGoel/cert3
yuwenmemon Jun 18, 2026
37de824
Update version to 9.4.13-0
OSBotify Jun 18, 2026
5c2558f
Update Mobile-Expensify submodule version to 9.4.13-0
OSBotify Jun 18, 2026
7cb5e55
Merge pull request #93570 from DylanDylann/fix/93304
rafecolton Jun 18, 2026
09c750d
Update version to 9.4.14-0
OSBotify Jun 18, 2026
e5928ed
Update Mobile-Expensify submodule version to 9.4.14-0
OSBotify Jun 18, 2026
2eca854
Bump eslint-seatbelt count for ReportPrimaryActionUtilsTest no-unsafe…
MelvinBot Jun 18, 2026
066a271
Add IS_RELEASE_READY output to deploy checkDeploymentSuccess job
roryabraham Jun 18, 2026
2d67262
Gate createRelease on victory-chart-renderer build success
roryabraham Jun 18, 2026
bb211ef
Gate deploy follow-up jobs on IS_RELEASE_READY
roryabraham Jun 18, 2026
d8c508a
Update VCR build failure messaging for blocked deploy releases
roryabraham Jun 18, 2026
aa836a2
Remove unused IS_AT_LEAST_ONE_PLATFORM_DEPLOYED job output
roryabraham Jun 18, 2026
4f2e7e5
Skip deployer VCR alert on cancelled superseded deploys
roryabraham Jun 18, 2026
9d72dc8
Merge pull request #93913 from Expensify/rory-fatal-vcr-deploy-gate
roryabraham Jun 18, 2026
6d388b6
Merge pull request #93856 from Expensify/issa/fix-flakey-concierge-test
MariaHCD Jun 18, 2026
f4ad70a
update to required param
nkdengineer Jun 18, 2026
d1ae1d0
Merge branch 'main' into fix/93413
nkdengineer Jun 18, 2026
fb09241
fix type check
nkdengineer Jun 18, 2026
86d13c5
Merge pull request #92506 from aswin-s/fix/issue-91679
mountiny Jun 18, 2026
5cba768
refactor: inline focused read effect
nabi-ebrahimi Jun 18, 2026
b50623f
Merge pull request #93797 from callstack-internal/perf/defer-existing…
mountiny Jun 18, 2026
012d687
fix: close modal once download
truph01 Jun 18, 2026
d426b52
Move isRecord to ObjectUtils.ts
mhawryluk Jun 18, 2026
e85fa35
Use the new improved logic in getNavigateAfterCreateSearchNavigatorState
mhawryluk Jun 18, 2026
24ff2be
Modify NavigationRouteLike type and remove unnecessary accessor utils
mhawryluk Jun 18, 2026
46b8df1
fix: don't clear the export download in case shouldSendFromConcierge
truph01 Jun 18, 2026
223695f
Make tabState a factory function
mhawryluk Jun 18, 2026
d7e0f34
Update params type
mhawryluk Jun 18, 2026
c82299c
Route Getting Started accounting row to categories for non-direct int…
MelvinBot Jun 18, 2026
2dc01cd
give spacing
FitseTLT Jun 18, 2026
5d48c19
Merge pull request #92941 from hungvu193/fix-92870
iwiznia Jun 18, 2026
9491ef3
Add jsdoc and more tests
mhawryluk Jun 18, 2026
135a166
Merge pull request #92007 from gijoe0295/feat/ai-feature-promo-modal
mjasikowski Jun 18, 2026
3c0d5b2
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 18, 2026
2195802
fix: remove redundant clearExportDownload
truph01 Jun 18, 2026
5255806
fix: apply suggestion
truph01 Jun 18, 2026
2db5755
Merge pull request #93698 from FitseTLT/fix-showing-duplicate-errors
Valforte Jun 18, 2026
d2ee4e9
Merge branch 'Expensify:main' into audit-reconnect-patterns
adhorodyski Jun 18, 2026
ec1531b
Merge pull request #93279 from callstack-internal/sq-audit
mountiny Jun 18, 2026
31c6459
Merge pull request #93924 from truph01/fix/93873/93874
mollfpr Jun 18, 2026
ce594b5
Update version to 9.4.14-1
OSBotify Jun 18, 2026
d81cc58
Update Mobile-Expensify submodule version to 9.4.14-1
OSBotify Jun 18, 2026
1d41e32
Merge remote-tracking branch 'upstream' into fedy/remove-isPolicyExpe…
fedirjh Jun 18, 2026
476088f
Merge pull request #93425 from yusufdeveloper2903/fix/93256-agent-ava…
grgia Jun 18, 2026
2e1cc92
Merge pull request #93703 from Expensify/claude-fixNetSuiteJournalEnt…
grgia Jun 18, 2026
a9aa330
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 18, 2026
9b6eee2
Merge pull request #93774 from Expensify/claude-netsuiteConnectButton…
amyevans Jun 18, 2026
88eddbe
Merge pull request #93387 from nabi-ebrahimi/fix/desktop-notification…
luacmartins Jun 18, 2026
ea2fb63
Remove unused login field and fix domain admins table row
luacmartins Jun 18, 2026
315eafd
Filter deleted domain admins when online
luacmartins Jun 18, 2026
850e41a
Update specialized role access copy
ShridharGoel Jun 18, 2026
3cb396d
Merge pull request #91623 from Expensify/claude-fixOfflineExpenseDeta…
Gonals Jun 18, 2026
d19b407
revert conditional rendering
luacmartins Jun 18, 2026
a0a0d45
Merge pull request #93947 from ShridharGoel/update-role-access-copy
flodnv Jun 18, 2026
e62a144
Update details.md
chuckdries Jun 18, 2026
134636e
Merge remote-tracking branch 'origin/main' into chuckdries/fix-source…
chuckdries Jun 18, 2026
020997f
Merge pull request #91464 from samranahm/90637/members-filter-multi-s…
youssef-lr Jun 18, 2026
985e108
Merge pull request #93341 from Expensify/chuckdries/fix-sourcemaps
roryabraham Jun 18, 2026
bad195a
Merge pull request #93426 from callstack-internal/audit-reconnect-pat…
blimpich Jun 18, 2026
5f89f9b
Merge pull request #93780 from nkdengineer/fix/93413
NikkiWines Jun 18, 2026
079d6c3
Merge pull request #93749 from Expensify/cmartins-adminTable
justinpersaud Jun 18, 2026
6c8e268
Update version to 9.4.15-0
OSBotify Jun 18, 2026
119c742
Update Mobile-Expensify submodule version to 9.4.15-0
OSBotify Jun 18, 2026
8cf1f4c
Update version to 9.4.15-1
OSBotify Jun 18, 2026
69e1f6f
Update Mobile-Expensify submodule version to 9.4.15-1
OSBotify Jun 18, 2026
ff8b669
Merge pull request #93930 from Expensify/claude-otherAccountingCustom…
blimpich Jun 18, 2026
7057bdc
Merge branch 'Expensify:main' into fedy/remove-isPolicyExpenseChatEna…
fedirjh Jun 18, 2026
5745e7b
Merge pull request #93718 from software-mansion-labs/korytko/fix-glob…
mountiny Jun 18, 2026
802eb16
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 18, 2026
4732266
Merge pull request #93588 from fedirjh/fedy/remove-isPolicyExpenseCha…
puneetlath Jun 18, 2026
72a891e
address comments
JS00001 Jun 18, 2026
b935f4c
Merge pull request #93781 from callstack-internal/perf/lazy-policy-ex…
mountiny Jun 18, 2026
4fd9c91
Merge pull request #93063 from Expensify/jsenyitko-currency-in-rules
luacmartins Jun 18, 2026
5a507e4
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 18, 2026
9586f96
Revert "Merge pull request #92007 from gijoe0295/feat/ai-feature-prom…
mjasikowski Jun 18, 2026
813ddb3
Merge pull request #93977 from Expensify/revert-pr-92007
blimpich Jun 18, 2026
fc78060
Update version to 9.4.15-2
OSBotify Jun 18, 2026
a1cd9a8
Update Mobile-Expensify submodule version to 9.4.15-2
OSBotify Jun 18, 2026
6c8b76e
Restore reviewer checklist items to match reviewer tooling
kacper-mikolajczak Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
ruleId: CLEAN-REACT-6
title: Import the exported prop type instead of ComponentProps
---

## [CLEAN-REACT-6] Import the exported prop type instead of ComponentProps

### Reasoning

When you need another component's prop type, import the type the component already exports rather than deriving it with `ComponentProps<typeof X>`. Deriving the type couples callers to the component's implementation, breaks when props are renamed, and hides the intended public contract. Components export their props type explicitly for this purpose.

### Incorrect

```tsx
import type {ComponentProps} from 'react';
import Button from './Button';

type Props = {
button: ComponentProps<typeof Button>;
};
```

### Correct

```tsx
import Button from './Button';
import type {ButtonProps} from './Button';

type Props = {
button: ButtonProps;
};
```

---

### Review Metadata

Flag ONLY when ALL of these are true:

- The changed code uses `ComponentProps<typeof X>` (or `React.ComponentProps<typeof X>`) to obtain a component's props
- That component exports its own props type that could be imported instead

**DO NOT flag if:**

- The component is a third-party/library component that does not export a props type
- `ComponentProps` is used on an intrinsic element (e.g. `ComponentProps<'div'>`)
- The code is a test or story

**Search Patterns** (hints for reviewers):
- `ComponentProps<typeof`
- `React.ComponentProps<typeof`
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
ruleId: CLEAN-REACT-7
title: Do not inline prop types on exported components
---

## [CLEAN-REACT-7] Do not inline prop types on exported components

### Reasoning

Per `STYLE.md`, an exported component's props must be declared as a named `type` (conventionally `{Component}Props`), not an inline object type literal in the function signature. A named type is importable by other components, documentable, and keeps the component signature readable.

### Incorrect

```tsx
function Avatar({source, size}: {source: string; size: number}) {
return <Image source={source} width={size} />;
}

export default Avatar;
```

### Correct

```tsx
type AvatarProps = {
/** URL of the avatar image */
source: string;

/** Rendered width/height in px */
size: number;
};

function Avatar({source, size}: AvatarProps) {
return <Image source={source} width={size} />;
}

export default Avatar;
```

---

### Review Metadata

Flag ONLY when ALL of these are true:

- A component that is exported from the file declares its props as an inline object type literal in the parameter position (e.g. `(props: {a: string})` / `({a}: {a: string})`)
- The component is a React component (returns JSX / is rendered)

**DO NOT flag if:**

- The props are already a named `type`/imported type
- The function is a small local helper component used only within the same file and not exported
- The code is a test or story

**Search Patterns** (hints for reviewers):
- `function [A-Z][A-Za-z]*\([^)]*:\s*\{` (component with inline object param type)
- `}: \{` immediately inside a component signature
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
ruleId: CLEAN-REACT-8
title: Use function components, not class components
---

## [CLEAN-REACT-8] Use function components, not class components

### Reasoning

Per `STYLE.md`, class components are deprecated in this codebase. New components must be written as function components using hooks. Class components opt out of the React Compiler, complicate state/lifecycle reasoning, and diverge from the rest of the codebase.

### Incorrect

```tsx
class ReportActionItem extends React.Component<ReportActionItemProps> {
render() {
return <View>{this.props.action.message}</View>;
}
}
```

### Correct

```tsx
function ReportActionItem({action}: ReportActionItemProps) {
return <View>{action.message}</View>;
}
```

---

### Review Metadata

Flag ONLY when ALL of these are true:

- The changed code adds a class that extends `React.Component`/`Component`/`React.PureComponent`/`PureComponent`

**DO NOT flag if:**

- The class is an Error subclass, a non-React class, or a data model
- The change only modifies an existing class component (migrating it is out of scope) rather than adding a new one
- The class is an Error Boundary, which still requires a class component in React

**Search Patterns** (hints for reviewers):
- `extends React.Component`
- `extends Component`
- `extends React.PureComponent` / `extends PureComponent`
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
ruleId: CLEAN-REACT-9
title: Use TypeScript types, not propTypes or defaultProps
---

## [CLEAN-REACT-9] Use TypeScript types, not propTypes or defaultProps

### Reasoning

Per `STYLE.md`, components must type their props with TypeScript and provide defaults via destructuring. The `prop-types` library (`PropTypes.*`, `Component.propTypes`) and `defaultProps` are redundant with the type system, add runtime cost, and are not used in this codebase.

### Incorrect

```tsx
import PropTypes from 'prop-types';

function Badge({text}) {
return <Text>{text}</Text>;
}

Badge.propTypes = {
text: PropTypes.string,
};

Badge.defaultProps = {
text: '',
};
```

### Correct

```tsx
type BadgeProps = {
/** Text shown inside the badge */
text?: string;
};

function Badge({text = ''}: BadgeProps) {
return <Text>{text}</Text>;
}
```

---

### Review Metadata

Flag ONLY when ANY of these is true:

- The changed code imports `prop-types` or references `PropTypes.`
- It assigns `.propTypes` to a component
- It assigns `.defaultProps` to a function component (use destructuring defaults instead)

**DO NOT flag if:**

- The code is a test or story
- `defaultProps` appears on a third-party class component API that requires it

**Search Patterns** (hints for reviewers):
- `from 'prop-types'` / `PropTypes.`
- `.propTypes =` / `.defaultProps =`
66 changes: 66 additions & 0 deletions .claude/skills/coding-standards/rules/consistency-10-jsdoc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
ruleId: CONSISTENCY-10
title: Follow the JSDoc style guidelines
---

## [CONSISTENCY-10] Follow the JSDoc style guidelines

### Reasoning

Per `STYLE.md`, TypeScript already encodes types, so JSDoc must not repeat them. Do not put types in `@param`/`@returns`, do not use `@private`/`@memberof`/`@implements`/`@enum`/`@override`, and use `@returns` (not `@return`). Omit a `@param` line entirely when it would carry no description. Component props are documented with a `/** ... */` block comment above each prop, not `//` comments.

### Incorrect

```tsx
/**
* @param {string} reportID - the report id
* @param {boolean} isArchived
* @return {string}
*/
function getReportName(reportID: string, isArchived: boolean): string {
// ...
}

type ButtonProps = {
// Whether the button is disabled
isDisabled: boolean;
};
```

### Correct

```tsx
/**
* @param reportID - the report id
* @returns the human-readable report name
*/
function getReportName(reportID: string, isArchived: boolean): string {
// ...
}

type ButtonProps = {
/** Whether the button is disabled */
isDisabled: boolean;
};
```

---

### Review Metadata

Flag ONLY when ANY of these is true:

- A JSDoc `@param`/`@returns` includes a TypeScript type in braces (e.g. `@param {string}`)
- A JSDoc block uses `@return` instead of `@returns`, or uses `@private`/`@memberof`/`@implements`/`@enum`/`@override`
- A `@param` line has a name but no description (it should be omitted)
- A component prop in a `Props` type is documented with a `//` comment or left undocumented when sibling props use `/** */` blocks

**DO NOT flag if:**

- The function is a trivial inline arrow with no JSDoc and self-evident behavior (JSDoc not required)
- The prop is inherited/spread from a shared base type documented elsewhere
- The file is a test or story

**Search Patterns** (hints for reviewers):
- `@param {` / `@returns {` / `@return ` / `@private` / `@memberof`
- `//` comments directly above members of a `...Props` type
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
ruleId: CONSISTENCY-11
title: Track future work in a GitHub issue, not a TODO comment
---

## [CONSISTENCY-11] Track future work in a GitHub issue, not a TODO comment

### Reasoning

Per `contributingGuides/philosophies/OVERENGINEERING.md`, future work should be captured in a GitHub issue, not left as a `TODO`/`FIXME` comment in the code. In-code TODOs are invisible to planning, never prioritized, and rot silently in the codebase.

### Incorrect

```tsx
// TODO: handle the offline case here later
function submit() {
return API.write('SubmitReport', params);
}
```

### Correct

The deferred work lives as a GitHub issue on the board - the code carries no marker for it at all:

```tsx
function submit() {
return API.write('SubmitReport', params);
}
```

---

### Review Metadata

Flag ONLY when ALL of these are true:

- The changed code adds a comment containing `TODO` or `FIXME`
- The comment describes deferred/future work (which belongs in a GitHub issue, not in the code)

**DO NOT flag if:**

- `TODO`/`FIXME` appears in a string literal, test fixture, or third-party/generated code rather than an authored code comment
- The token is part of an unrelated identifier (e.g. a variable literally named `todo` in a tasks feature)

**Search Patterns** (hints for reviewers):
- `// TODO` / `/* TODO` / `// FIXME`
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
ruleId: CONSISTENCY-7
title: Localize all user-visible copy
---

## [CONSISTENCY-7] Localize all user-visible copy

### Reasoning

All copy/text shown in the product must be localized by adding it to the `src/languages/*` files and rendering it through the translation method (`useLocalize`'s `translate`, or `<Text>` fed a translated string). Hardcoded user-facing strings cannot be translated and break the localized experience.

### Incorrect

```tsx
function SaveButton() {
return <Button text="Save changes" />;
}

function EmptyState() {
return (
<View>
<Text>No results found</Text>
</View>
);
}
```

### Correct

```tsx
function SaveButton() {
const {translate} = useLocalize();
return <Button text={translate('common.saveChanges')} />;
}

function EmptyState() {
const {translate} = useLocalize();
return (
<View>
<Text>{translate('search.noResultsFound')}</Text>
</View>
);
}
```

---

### Review Metadata

Flag ONLY when ALL of these are true:

- A user-visible JSX text node, or a user-facing string prop (`text`, `title`, `label`, `placeholder`, `header`, `description`, `accessibilityLabel`, `alternateText`), is assigned a hardcoded non-empty string literal
- The string is rendered in product code (not a test, story, or dev-only path)
- The string is not passed through the translation method (`translate(...)`, `useLocalize`)

**DO NOT flag if:**

- The string is an identifier, key, route, test ID, style token, icon name, or `CONST` value (not shown to the user)
- The value is already wrapped in `translate(...)` or comes from a `src/languages/*` entry
- The string is a `console.*` / logging message
- The text is a proper noun or brand name intentionally not translated (e.g. `Expensify`)

**Search Patterns** (hints for reviewers):
- `<Text>` / `<Text ...>` containing a bare string literal
- `(text|title|label|placeholder|header|description|alternateText|accessibilityLabel)=["'][A-Za-z]`
Loading
Loading