03 / EXPENSIFY
Work that adds up.
Product features and performance, one detail at a time.
Through Margelo, I’ve contributed to Expensify’s React Native app since 2022. The public work spans everyday product features, the way state is stored, and how quickly the app gets moving.
I’ve helped bring theme switching to life, improve company card assignment, move App and Onyx to NitroSQLite, and start network requests earlier with NitroFetch. I’ve also worked on a post-quantum end-to-end encryption library.
The NitroFetch integration gave me a particularly interesting problem: Expensify needed its normal authentication and request behavior while starting a critical request before JavaScript had loaded. I wrote about the migration, the tradeoffs, and the measured results on Margelo’s blog.
Selected public work
- Shareable QR codes — Added a quick way to share a profile by QR code.
- Native Onyx merges — Used SQLite JSON_PATCH to merge changes in native storage.
- Theme switching — Helped bring the theme preference into the app and finish its migration.
- Onyx meets NitroSQLite — Moved Onyx to NitroSQLite, followed by the matching App migration.
- Company card assignments — Made assigning cards easier with a searchable table and a shorter inline flow.
- Storage at scale — Split large SQLite queries so Onyx can handle databases with many keys.
- A faster start with NitroFetch — Replaced native fetch and began key startup requests before the JavaScript runtime was ready.