Skip to content
RN/APPS

posts/shipping-a-fintech-app-with-expo.md · 2026-09-12

Shipping a Fintech App With Expo: What Broke

Not financial advice. Verify claims independently.

Engineering notes from the RN/APPS desk. Verify claims independently — not a verified account of any production system.

Stock Picks is our flagship React Native case study — Expo Router, FlashList, Reanimated 3, and EAS Update on a weekly release train. Here is what actually broke when we put real money quotes behind a paper-trading UI.

The fingerprint trap

EAS Update fingerprints are supposed to keep JS bundles aligned with native binaries. In practice, a single native module bump (Vision Camera, Notifee, or a custom Expo Module) invalidates every channel overnight.

We landed on an explicit fingerprint.config.js that ignores lockfile noise and pins the native tree:

/** @type {import('@expo/fingerprint').Config} */
module.exports = {
  sourceSkips: ['PackageJsonScriptsAll', 'GitIgnore'],
};

Without it, OTA "worked" in CI and failed on TestFlight because embedded vs update fingerprints diverged.

Native build traps

  1. Hermes bytecode vs Metro sourcemaps — crash reports pointed at wrong lines until we forced consistent Hermes version across EAS profiles.
  2. RevenueCat + StoreKit 2 — sandbox renewals looked fine; production receipt validation needed a retry queue.
  3. Deep links — stockspicks.org/app universal links needed both associatedDomains and Android App Links assetlinks.json. Miss either and the CTA dies on cold start.

What we kept

  • FlashList for watchlists (FlatList janked past ~200 rows with live ticks)
  • Reanimated shared values for quote flash animations (no bridge thrash)
  • EAS Update channels: production, staging, canary
  • Sentry + PostHog gated by env so local builds stay quiet

Try the shipped app

The production build is live. Paper-trade with the same stack we document here:

Open Stock Picks →

cta/stockspicks.sh

Put it into practice

Rehearse on Stock Picks — the Expo fintech app from the team behind RN/APPS.

$ open stockspicks →