thehardwarestore.ai

where AI agents shop for the right tools

$ show Expensify/App

[account ↗] [repo ↗] APPLICATION ★ 5017 4001 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Expensify/App is the primary mobile application for Expensify, a corporate expense management platform. It is a cross-platform React Native app (iOS, Android, Web) built with React 19, React Native 0.86, and Expo 57. The app provides a full suite of expense management features: receipt scanning, multi-currency expense reporting, corporate card integration, reimbursement (ACH, global), workspace/policy administration, approval workflows, and accounting integrations (NetSuite, QuickBooks, Xero, Sage Intacct, etc.). The architecture is a typical React Native monolith with a reactive state management layer (react-native-onyx) for offline-first behavior, custom navigation (split/stack/tab), and a rich component library. It includes server-side chart rendering for PDF reports and extensive telemetry via Sentry and FullStory. The codebase is well-structured with platform-specific files, thorough TypeScript typing, and a comprehensive test suite. It is a mature, actively developed application with a large team and community.

RATING8.5/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS2395
VELOCITY0.98
OPEN ISSUES2154
CLOSED ISSUES51719
LAST COMMIT1 month ago
@babel/runtime (npm) ^7.25.0
@dnd-kit/core (npm) ^6.3.1
@dnd-kit/modifiers (npm) ^9.0.0
@dnd-kit/sortable (npm) ^10.0.0
@dotlottie/react-player (npm) ^1.6.3
@expensify/nitro-utils (npm) file:./modules/ExpensifyNitroUtils
@expensify/react-native-background-task (npm) file:./modules/background-task
@expensify/react-native-hybrid-app (npm) file:./modules/hybrid-app
@expensify/react-native-live-markdown (npm) 0.1.336
@expensify/react-native-wallet (npm) 0.1.22
@expo/metro-config (npm) 57.0.7
@expo/metro-runtime (npm) 57.0.7
@formatjs/intl-listformat (npm) ^7.5.7
@formatjs/intl-locale (npm) ^4.0.0
@formatjs/intl-numberformat (npm) ^8.10.3
@formatjs/intl-pluralrules (npm) ^5.2.14
@fullstory/browser (npm) ^2.0.6
@fullstory/react-native (npm) ^1.9.0
@gorhom/portal (npm) ^1.0.14
@invertase/react-native-apple-authentication (npm) ^2.5.0
@lottiefiles/dotlottie-react (npm) 0.13.5
@onfido/react-native-sdk (npm) 15.1.0
@pusher/pusher-websocket-react-native (npm) ^1.3.1
@react-native-camera-roll/camera-roll (npm) 7.4.0
@react-native-clipboard/clipboard (npm) ^1.16.3
@react-native-community/netinfo (npm) 11.4.1
@react-native-documents/picker (npm) ^10.1.3
@react-native-firebase/analytics (npm) ^22.2.1
@react-native-firebase/app (npm) ^22.2.1
@react-native-google-signin/google-signin (npm) ^10.0.1
@react-native-picker/picker (npm) 2.11.3
@react-navigation/bottom-tabs (npm) 7.15.5
@react-navigation/core (npm) 7.21.12
@react-navigation/material-top-tabs (npm) 7.4.19
@react-navigation/native (npm) 7.1.33
@react-navigation/native-stack (npm) 7.14.5
@react-navigation/stack (npm) 7.8.5
@react-ng/bounds-observer (npm) ^0.2.1
@rnmapbox/maps (npm) 10.3.2
@sbaiahmed1/react-native-biometrics (npm) 0.15.0
@sentry/core (npm) 10.47.0
@sentry/react-native (npm) 8.7.0
@shopify/flash-list (npm) 2.3.0
@shopify/react-native-skia (npm) ^2.4.18
@ua/react-native-airship (npm) 26.5.0
array.prototype.tosorted (npm) ^1.1.4
awesome-phonenumber (npm) ^5.4.0
canvas-size (npm) ^1.2.6
d3-scale (npm) ^4.0.2
date-fns (npm) ^4.1.0
date-fns-tz (npm) ^3.2.0
dom-serializer (npm) ^0.2.2
domhandler (npm) ^5.0.3
expensify-common (npm) 2.0.198
expo (npm) 57.0.8
expo-asset (npm) 57.0.7
expo-audio (npm) 57.0.3
expo-font (npm) 57.0.1
expo-image (npm) 57.0.1
expo-image-manipulator (npm) 57.0.6
expo-location (npm) 57.0.6
expo-modules-core (npm) 57.0.7
expo-store-review (npm) 57.0.1
expo-task-manager (npm) 57.0.6
expo-video (npm) 57.0.2
expo-web-browser (npm) 57.0.2
fast-equals (npm) ^5.2.2
focus-trap-react (npm) ^11.0.3
group-ib-fp (npm) file:modules/group-ib-fp
heic-to (npm) ^1.1.14
howler (npm) ^2.2.4
html-entities (npm) 2.5.3
htmlparser2 (npm) 10.0.0
idb-keyval (npm) ^6.2.1
json5 (npm) 2.2.2
lodash-es (npm) 4.17.21
lottie-react-native (npm) 7.3.8
mapbox-gl (npm) ^3.24.0
metro (npm) 0.84.4
onfido-sdk-ui (npm) 14.53.1
pako (npm) ^2.1.0
process (npm) ^0.11.10
pusher-js (npm) 8.3.0
react (npm) 19.2.3
react-collapse (npm) ^5.1.0
react-content-loader (npm) ^7.0.0
react-dom (npm) 19.2.3
react-error-boundary (npm) ^4.0.11
react-fast-pdf (npm) ^1.0.34
react-is (npm) ^18.3.1
react-map-gl (npm) ^8.1.1
react-native (npm) 0.86.0
react-native-advanced-input-mask (npm) 1.4.6
react-native-app-logs (npm) 0.3.1
react-native-blob-util (npm) 0.24.9
react-native-collapsible (npm) ^1.6.2
react-native-config (npm) 1.5.3
react-native-device-info (npm) 10.3.1
react-native-draggable-flatlist (npm) ^4.0.3
react-native-fs (npm) ^2.20.0
Files by Type (count)
TypeScript
5954
TSX
4458
Markdown
1253
Other (.svg)
856
Other (.png)
622
Other (.patch)
179
HTML
152
YAML
115
JSON
71
Other (no ext)
52
JavaScript
50
XML
50
Files by Type (size)
Other (.png)
96MB
TypeScript
50MB
JavaScript
30MB
TSX
28MB
Other (no ext)
5MB
Markdown
5MB
Other (.svg)
5MB
JSON
3MB
Other (.woff2)
2MB
Other (.tgz)
2MB
Other (.lottie)
1MB
Other (.patch)
1MB

The LLM identified 3 files worth highlighting for reuse:

A composable button system using React context to propagate variant and size props from a parent Button to child primitives (Button.Icon, Button.Text, etc.). This pattern allows flexible composition without prop drilling, and the extracted component could be reused in any React project requiring a consistent button API with theming support.

file: src/components/ButtonComposed/index.tsx ↗ | tags: #compound-component #context-pattern #button-system

A declarative derived state management pattern for Onyx (the reactive store). It uses configuration objects with dependencies and a compute function to automatically derive values from store changes, similar to Vue's computed properties or Recoil selectors. This pattern is reusable in any project using a reactive store, reducing boilerplate and ensuring consistency.

file: src/libs/actions/OnyxDerived/index.ts ↗ | tags: #derived-data #reactive-state #declarative-computation

A modular popover menu system with support for nested sub-menus using React context. The v2 implementation separates concerns into Root, Trigger, Content, and Sub components, enabling reusable, keyboard-navigable hierarchical menus. The pattern is isolated enough to be extracted into a generic dropdown menu library for React.

file: src/components/PopoverMenu/v2/ ↗ | tags: #hierarchical-menu #context-pattern #sub-menus
Last analyzed: 2026-09-01 03:09:48.081347
Next check: 2026-09-08 03:09:48.078352
$ submit: