Expensify / App
Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing Expensify/App in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewNew Expensify Table of Contents • Local Development • Platform-Specific Setup • Testing on browsers in simulators and emulators • Running The Tests Additional Reading • Application Philosophy • API Details • Contributing to Expensify • Expensify Code of Conduct • Contributor License Agreement • React StrictMode • Left Hand Navigation(LHN) • HybridApp - additional info & troubleshooting ---- Local development These instructions should get you set up ready to work on New Expensify 🙌 Getting Started • Install then & : • Install : • Install dependencies: • Run the specific platform with the following command: , e.g. You can use any IDE or code editing tool for developing on any platform. Use your favorite! Recommended setup In order to have more consistent builds, we use a strict and version as defined in the field and file. will fail if you do not use the version defined, so it is recommended to install via for easy node version management. Automatic version switching can be installed for or using . Platform-Specific Setup For detailed setup instructions for each platform, see the following guides: • **🕸 Web Development**: Web Setup Instructions • **📱 iOS Development**: iOS Setup Instructions • **🤖 Android Development**: Android Setup Instructions General Troubleshooting • If you are having issues with **_Getting Started_**, please reference React Native's Documentation • If you are running into CORS errors like (in the browser dev console) You probably have a misconfigured file - remove it ( ) and try again **Note:** Expensify engineers that will be testing with the API in your local dev environment please refer to these additional instructions. Environment variables Creating an file is not necessary. We advise external contributors against it. It can lead to errors when variables referenced here get updated since your local file is ignored. • - The root URL used for the website • - The URL used to hit the Expensify secure API • - The URL used to hit the Expensify API • - Constant used for the app when authenticating. • - Another constant used for the app when authenticating. (This is OK to be public) • - Key used to authenticate with Pusher.com • - Secure URL used for when testing • - URL used for when testing • - Flag to turn testing on or off • - Flag to turn testing on or off • - Flag to enable Redux DevTools for Onyx state debugging • ⚠️- Used in web development, it starts a server along the local development server to proxy requests to the backend. External contributors should set this to otherwise they'll have CORS errors. If you don't want to start the proxy server set this explicitly to • (optional) - Set this to to capture performance metrics and see them in Flipper see PERFORMANCE.md for more information • (optional) - Set this to to capture even more performance metrics and see them in Flipper see React-Native-Onyx#benchmarks for more information > If your changes to .env aren't having an effect, try , then re-run or ---- Running the tests Unit tests Unit tests are valuable when you want to test one component. They should be short, fast, and ideally only test one thing. Often times in order to write a unit test, you may need to mock data, a component, or library. We use the library Jest to help run our Unit tests. • To run the **Jest unit tests**: • UI tests guidelines can be found here Performance tests We use Reassure for monitoring performance regression. More detailed information can be found here: CodeCov CodeCov is the service we use to measure and track code coverage. You can find out more about it here ----