Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2901 commits
Select commit Hold shift + click to select a range
82b779a
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 17, 2026
37cd21b
revert cleanup on the openReport action
mollfpr 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
f3dd11b
fix eslint
mollfpr Jun 17, 2026
473a601
new helper function to detect IOU create action
mollfpr Jun 17, 2026
0fb51ad
fix(vcr): unwrap Onyx CJS exports for Bun compile
roryabraham Jun 17, 2026
0d522bf
refactor to use new helper isIOUCreateAction
mollfpr 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
9a344c8
fix labels
luacmartins 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
62d46a9
support future-dated card assignments
apeyada 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
fe14735
Merge branch 'Expensify:main' into fix/bottom-safe-area-padding-in-mo…
truph01 Jun 18, 2026
dd7139d
fix: redundant padding bottom when keyboard is opening
truph01 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
15ce6e3
Merge branch 'Expensify:main' into fix/bottom-safe-area-padding-in-mo…
truph01 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
bad264b
Raise PaginationTest per-test timeout to 240s to fix CI timeout flake
MelvinBot Jun 18, 2026
6378cd4
Revert comment expansion and raise PaginationTest timeout to 600s
MelvinBot Jun 18, 2026
00c1640
refactor: extract useTaskCheckboxAccessibility and restore web title …
Krishna2323 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
75cc774
Remove bold style from Recently added column headers
adamgrzybowski Jun 18, 2026
9491ef3
Add jsdoc and more tests
mhawryluk Jun 18, 2026
9050908
test: add failing regression for GetMissingOnyxMessages in-flight sta…
adhorodyski Jun 18, 2026
70302ee
Fix Recently added header height inflated by overflow button
adamgrzybowski 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
97e6fa9
Brighten Recently added arrow on row hover
adamgrzybowski Jun 18, 2026
381ff3e
test: add failing regression for brand-new update arriving mid-fetch
adhorodyski 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
993d31e
Merge branch 'main' into merge-hr/complete-setup-tab-gbr
mhawryluk Jun 18, 2026
ec1531b
Merge pull request #93279 from callstack-internal/sq-audit
mountiny Jun 18, 2026
fbb7fdc
Show "Complete HR setup" in debug mode tab view
mhawryluk 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
edd7968
test: add failing regression for double SequentialQueue resume mid-fetch
adhorodyski Jun 18, 2026
4d27712
Add translations
mhawryluk Jun 18, 2026
7364d1b
Merge branch 'Expensify:main' into reconnect-patterns-mode-2
adhorodyski Jun 18, 2026
3b76307
Reset member role filter to All when selected role is no longer avail…
MelvinBot Jun 18, 2026
7b7489c
refactor: generalize OnyxUpdateManager coalesce-guard comment
adhorodyski Jun 18, 2026
c35e7a4
fix: coalesce redundant GetMissingOnyxMessages when a fetch is in flight
adhorodyski Jun 18, 2026
84c8083
Fix tests
mhawryluk 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
dacc6b5
Dismiss Recently added receipt preview when screen blurs
adamgrzybowski Jun 18, 2026
9b6eee2
Merge pull request #93774 from Expensify/claude-netsuiteConnectButton…
amyevans Jun 18, 2026
1e6aaa3
Add jsdoc comments
mhawryluk 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
a478a06
Move existingRoute lookup in getTabStateWithFocusedTarget
mhawryluk 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
42fd7bd
Fix: hide Tag filter in advanced search when no tags exist
MelvinBot 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
d412d40
address comments
luacmartins 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
69f979d
Add newly added rules to the coding standards index
kacper-mikolajczak Jun 18, 2026
90ce967
fix: address review feedback for task and anchor accessibility
Krishna2323 Jun 18, 2026
7f76633
Merge branch 'Expensify:main' into fix/77574-task-checkbox-accessibility
Krishna2323 Jun 18, 2026
c961c21
Revert "feat: Make the Workspace and Domain member filter list multi-…
puneetlath Jun 18, 2026
328ac06
Merge branch 'main' into cmartins-useSameLabels
luacmartins Jun 18, 2026
13b6443
Merge pull request #92156 from Krishna2323/krishna2323/issue/66413/pa…
danieldoglas Jun 18, 2026
6ac0b0d
address comments
luacmartins Jun 18, 2026
61312d0
Merge pull request #92636 from Expensify/claude-docsApprovedAccountan…
stephanieelliott Jun 18, 2026
2a485df
Merge pull request #93113 from Expensify/helpsite-bundle-migrationdocs
kadiealexander Jun 18, 2026
78d4016
Merge pull request #93556 from Expensify/mollfpr-fix-legacy-sendmoney…
deetergp Jun 18, 2026
a71878f
Merge remote-tracking branch 'origin/main' into claude-agentOwnerSwit…
MelvinBot Jun 18, 2026
adedd04
Merge pull request #93269 from Expensify/claude-allowLimitedCopilotRe…
stephanieelliott Jun 18, 2026
027e03c
Merge pull request #93884 from apeyada/fix-92089
deetergp Jun 18, 2026
44981fb
Merge pull request #93988 from Expensify/revert-91464-90637/members-f…
youssef-lr Jun 18, 2026
deea110
Update version to 9.4.15-3
OSBotify Jun 18, 2026
1575910
Update Mobile-Expensify submodule version to 9.4.15-3
OSBotify Jun 18, 2026
0548a0c
Merge pull request #93463 from Expensify/cmartins-useSameLabels
roryabraham Jun 18, 2026
f14f30a
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 18, 2026
fcc6f37
Merge pull request #93591 from software-mansion-labs/merge-hr/complet…
luacmartins Jun 18, 2026
facfcc1
Update Mobile-Expensify submodule to 912d4a2
OSBotify Jun 19, 2026
de3472e
Lower PaginationTest per-test timeout to 240s (2x original) per review
MelvinBot Jun 19, 2026
65638bc
fix: scope the 2FA sign-in redirect to the current magic link
mukhrr Jun 19, 2026
b7a2beb
fix: remove redundant bottom padding in offline
truph01 Jun 19, 2026
339021c
Merge branch 'Expensify:main' into fix/bottom-safe-area-padding-in-mo…
truph01 Jun 19, 2026
b33caad
Extract policyTagListHasTags helper shared by both tag-existence checks
MelvinBot Jun 19, 2026
afd9e58
Clear stale role filter state when its option becomes unavailable
MelvinBot Jun 19, 2026
b27347e
Derive effective role filter instead of mutating state during render
MelvinBot Jun 19, 2026
98d69f2
Merge pull request #93953 from Expensify/claude-tagFilterHiddenWhenNo…
lakchote Jun 19, 2026
945382c
extract WorkspaceRowThreeDotsMenu component from WorkspacesListPage
WojtekBoman Jun 17, 2026
4ea95a9
extract getLeaveWorkspaceConfirmationPrompt into WorkspacesSettingsUtils
WojtekBoman Jun 17, 2026
a3e8c2b
test: add unit and component tests for workspaces list PR #93820
WojtekBoman Jun 17, 2026
c9f1614
fix: use currentUserPersonalDetails instead of session in LeaveWorksp…
WojtekBoman Jun 17, 2026
5a72f8e
fix: resolve lint errors in workspaces list PR files
WojtekBoman Jun 17, 2026
4e3346a
chore: update seatbelt baselines for new test files
WojtekBoman Jun 18, 2026
4563025
fix: defer leave/transfer actions until popover fully closes
WojtekBoman Jun 18, 2026
25f3de8
fix: restore DEFAULT_NUMBER_ID fallback for ownerAccountID in LeaveWo…
WojtekBoman Jun 18, 2026
c51eb26
refactor: rename action components to flow, add THREE_DOT_MENU_ACTION…
WojtekBoman Jun 19, 2026
81cf149
Handle undefined state on existingTabRoute on cold start
mhawryluk Jun 19, 2026
4e67c82
Merge pull request #92190 from Expensify/docs-91691-save-view
greg-schroeder Jun 19, 2026
1a80bea
Merge pull request #93683 from Expensify/claude-agentOwnerSwitchNotFound
mjasikowski Jun 19, 2026
5b46d9a
Merge pull request #91530 from Krishna2323/fix/77574-task-checkbox-ac…
cristipaval Jun 19, 2026
b5d638d
change to the debounce function from lodash
collectioneur Jun 19, 2026
46a7b18
Add lazy prev/next carousel to Recently added expenses
adamgrzybowski Jun 19, 2026
6b1d0de
refactor: rename Action component/test files to Flow
WojtekBoman Jun 19, 2026
713c319
Normalize clean-react rule ids to the CLEAN-REACT-PATTERNS prefix
kacper-mikolajczak Jun 19, 2026
a1343c8
Order Recently added by local inserted timestamp
adamgrzybowski Jun 19, 2026
aefc7d1
fix:94001: Onfido copy missing space
Eskalifer1 Jun 19, 2026
24b88d0
docs(SEQUENTIAL_QUEUE): drop overstated dedup guarantee from overview
adhorodyski Jun 19, 2026
293075d
fix: drain deferred queue on first-time reconnect so mid-reconnect up…
adhorodyski Jun 19, 2026
89a8c9f
Merge pull request #94037 from callstack-internal/docs/sq-dedup-followup
inimaga Jun 19, 2026
9facab3
Stop exporting unused ResolveReportContext type
adamgrzybowski Jun 19, 2026
b80d259
Merge pull request #93941 from Expensify/claude-resetRoleFilterOnPoli…
iwiznia Jun 19, 2026
2d0b3e9
Fix Recently added ordering test to expect created fallback
adamgrzybowski Jun 19, 2026
cf47ab8
Merge pull request #93820 from software-mansion-labs/perf/workspaces-…
mountiny Jun 19, 2026
6e7595e
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 19, 2026
2936337
Fix O(n²) isDisablingOrDeletingLastEnabledTag scan in WorkspaceTagsPage
TMisiukiewicz Jun 19, 2026
f8cebc3
Merge remote-tracking branch 'origin/main' into perf/fix-workspace-ta…
TMisiukiewicz Jun 19, 2026
762a485
Merge pull request #93701 from software-mansion-labs/feat/refactor/mo…
mountiny Jun 19, 2026
00123cb
Merge pull request #93948 from callstack-internal/reconnect-patterns-…
mountiny Jun 19, 2026
5143199
Add links to details.md for FlashList patches
VickyStash Jun 19, 2026
bffcf9e
Merge pull request #93756 from Expensify/cmartins-domainGroupTable
JS00001 Jun 19, 2026
ac315d0
Merge pull request #94046 from callstack-internal/VickyStash/refactor…
mountiny Jun 19, 2026
b2b2c11
Merge pull request #94041 from callstack-internal/perf/fix-workspace-…
mountiny Jun 19, 2026
02b3b81
Merge pull request #88578 from truph01/fix/bottom-safe-area-padding-i…
mountiny Jun 19, 2026
d5f2b8e
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 19, 2026
15c61be
Merge pull request #93712 from software-mansion-labs/korytko/fix-navi…
mountiny Jun 19, 2026
3940887
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 19, 2026
c6a9edb
Merge pull request #94023 from Eskalifer1/fix/94001
chuckdries Jun 19, 2026
2228b97
Preserve Recently added carousel when opening parent report
adamgrzybowski Jun 19, 2026
a076dfc
Merge pull request #93918 from Expensify/claude-raisePaginationTestTi…
mountiny Jun 19, 2026
c7815ce
Skip carousel takeover for snapshot-backed threads to avoid button flash
adamgrzybowski Jun 19, 2026
278af47
Merge pull request #93990 from callstack-internal/docs-coding-standar…
rlinoz Jun 19, 2026
9e62255
Type carousel descriptor mock with createRandomTransaction
adamgrzybowski Jun 19, 2026
a97df37
Merge pull request #93713 from software-mansion-labs/korytko/fix-inbo…
mountiny Jun 19, 2026
78edc4f
Update version to 9.4.16-0
OSBotify Jun 19, 2026
bd11dd2
Update Mobile-Expensify submodule version to 9.4.16-0
OSBotify Jun 19, 2026
421e0bb
Update version to 9.4.16-1
OSBotify Jun 19, 2026
eaabc7c
Update Mobile-Expensify submodule version to 9.4.16-1
OSBotify Jun 19, 2026
f5a9cbf
Merge pull request #93451 from software-mansion-labs/@adamgrzybowski/…
grgia Jun 19, 2026
a29ef01
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 19, 2026
012d851
Merge pull request #93816 from software-mansion-labs/collectioneur/tr…
roryabraham Jun 19, 2026
813dbed
Merge pull request #93656 from mukhrr/fix/89545-2FA
blimpich Jun 19, 2026
21d01a8
Auto-tighten eslint-seatbelt baseline
OSBotify Jun 19, 2026
5b7f885
Merge pull request #92496 from Expensify/alberto-createExclusion
chiragsalian Jun 19, 2026
6a2e777
Merge remote-tracking branch 'origin/main' into dariusz-81197-mfa-sta…
chuckdries Jun 19, 2026
6038151
Fix merge conflict resolution
chuckdries Jun 19, 2026
95cdaba
Fix types
chuckdries Jun 19, 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
  •  
  •  
  •  
19 changes: 17 additions & 2 deletions .claude/skills/coding-standards/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ Coding standards for the Expensify App. Each standard is a standalone file in `r
| Category | Prefix | Focus |
|----------|--------|-------|
| Performance | `PERF-*` | Render optimization, memo patterns, useEffect hygiene, data selection |
| Consistency | `CONSISTENCY-*` | Platform checks, magic values, unused props, ESLint discipline |
| Clean React Patterns | `CLEAN-REACT-PATTERNS-*` | Composition, component ownership, state structure |
| Consistency | `CONSISTENCY-*` | Platform checks, magic values, unused props, ESLint discipline, localization, file naming, JSDoc |
| Clean React Patterns | `CLEAN-REACT-PATTERNS-*` | Composition, component ownership, state structure, prop typing, function components |
| UI | `UI-*` | Loading indicators, scrollable pages, styling conventions |

## Quick Reference

Expand Down Expand Up @@ -42,6 +43,11 @@ Coding standards for the Expensify App. Each standard is a standalone file in `r
- [CONSISTENCY-4](rules/consistency-4-no-unused-props.md) — No unused props
- [CONSISTENCY-5](rules/consistency-5-justify-eslint-disable.md) — Justify ESLint disables
- [CONSISTENCY-6](rules/consistency-6-proper-error-handling.md) — Proper error handling
- [CONSISTENCY-7](rules/consistency-7-localize-copy.md) — Localize all user-visible copy
- [CONSISTENCY-8](rules/consistency-8-localize-numbers-dates.md) — Localize numbers, amounts, dates and phone numbers
- [CONSISTENCY-9](rules/consistency-9-file-naming.md) — Name files after what they export
- [CONSISTENCY-10](rules/consistency-10-jsdoc.md) — Follow the JSDoc style guidelines
- [CONSISTENCY-11](rules/consistency-11-no-todo-comments.md) — Track future work in an issue, not a TODO comment

### Clean React Patterns
- [CLEAN-REACT-PATTERNS-0](rules/clean-react-0-compiler.md) — React Compiler compliance
Expand All @@ -50,6 +56,15 @@ Coding standards for the Expensify App. Each standard is a standalone file in `r
- [CLEAN-REACT-PATTERNS-3](rules/clean-react-3-context-free-contracts.md) — Context-free component contracts
- [CLEAN-REACT-PATTERNS-4](rules/clean-react-4-no-side-effect-spaghetti.md) — No side-effect spaghetti
- [CLEAN-REACT-PATTERNS-5](rules/clean-react-5-narrow-state.md) — Keep state narrow
- [CLEAN-REACT-PATTERNS-6](rules/clean-react-6-no-componentprops.md) — Import the exported prop type instead of ComponentProps
- [CLEAN-REACT-PATTERNS-7](rules/clean-react-7-no-inline-prop-types.md) — Do not inline prop types on exported components
- [CLEAN-REACT-PATTERNS-8](rules/clean-react-8-no-class-components.md) — Use function components, not class components
- [CLEAN-REACT-PATTERNS-9](rules/clean-react-9-no-proptypes.md) — Use TypeScript types, not propTypes or defaultProps

### UI
- [UI-1](rules/ui-1-correct-loading-indicator.md) — Use the correct loading indicator based on navigation context
- [UI-2](rules/ui-2-new-page-scrollview.md) — New pages must be scrollable
- [UI-3](rules/ui-3-no-inline-styles.md) — Do not use inline style objects

## Usage

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
ruleId: CLEAN-REACT-PATTERNS-6
title: Import the exported prop type instead of ComponentProps
---

## [CLEAN-REACT-PATTERNS-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-PATTERNS-7
title: Do not inline prop types on exported components
---

## [CLEAN-REACT-PATTERNS-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-PATTERNS-8
title: Use function components, not class components
---

## [CLEAN-REACT-PATTERNS-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-PATTERNS-9
title: Use TypeScript types, not propTypes or defaultProps
---

## [CLEAN-REACT-PATTERNS-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`
Loading
Loading