Files
cnapp/TODO.md
T

3.0 KiB

TODO

Remove items from this list once they are done.

  • check that Android release builds now fit on EAS's default worker (4 vCPUs, 15.6 GB): two builds ran out of memory there, one stalling in the C++ step until EAS's 45-minute limit and the next failing with "Gradle build daemon disappeared unexpectedly". Reproduced locally under the same limits (taskset -c 0-3 and a 15 GB, no-swap systemd scope): the build succeeds in 20 minutes but peaks at 13.3 GB of anonymous memory while Skia, Reanimated/Worklets, Screens and Sentry compile their C++ for four ABIs in parallel. Both build profiles in eas.json now set GRADLE_OPTS: "-Dorg.gradle.workers.max=2" (Gradle uses 2 worker leases instead of one per CPU). If that still fails or nears 45 minutes, try "resourceClass": "large" for Android (paid plan); meanwhile eas build -p android --profile production --local works, with the .aab submitted through eas submit -p android --profile beta --path <aab>
  • check that release builds' source maps make Bugsink's stack traces readable: the upload works (build 31's log shows Uploaded files to Sentry once SENTRY_URL was set in eas.json), so throw an error in a release build and check for symbolicated frames in Bugsink's cnapp project
  • consider turning on R8 for Android release builds (SDK 58 default, disabled via android.enableMinifyInReleaseBuilds: false in the expo-build-properties plugin config in app.json): smaller APK, but native Android stack traces get obfuscated unless the R8 mapping file reaches Bugsink, which doesn't document ProGuard/R8 mapping support. Also check whether Sentry needs ProGuard keep rules
  • verify the SDK 58 upgrade on Android: an expiry reminder notification and an error that lands in Bugsink
  • check on iOS, with an EAS build or npm run ios on macOS: the SDK 58 upgrade (an expiry reminder notification, an error that lands in Bugsink), the registration form's birth date wheel (src/components/DateField.tsx), and a Stripe Checkout purchase, renewal and cancel. Check Apple Pay shows inside the auth session (ASWebAuthenticationSession); if not, switch to WebBrowser.openBrowserAsync plus a Linking listener
  • confirm Google Pay on Checkout with a real card in Google Wallet, and that Apple Pay, Google Pay and Link are enabled in the Stripe Dashboard's Checkout settings
  • once app versions using the Payment Sheet are gone, drop galtinn's /api/stripe/payment-sheet/ endpoint and its payment_intent.succeeded handling
  • explore Expo features:
    • add an iOS 26 liquid glass icon: a .icon file made with Apple's Icon Composer, referenced from ios.icon (old icon remains as fallback for older iOS); optionally play with expo-glass-effect
    • try @expo/ui, production-ready as of SDK 56: real SwiftUI / Jetpack Compose components that could back the homegrown ones in src/components/