Files
cnapp/TODO.md
T

3.3 KiB

TODO

Remove items from this list once they are done.

  • upload source maps to Bugsink so release-build stack traces are symbolicated (until then they're minified): create an auth token in Bugsink and set SENTRY_AUTH_TOKEN as an EAS secret — the Sentry plugin config in app.json (url/organization/project) is already set up for the upload. Needs Bugsink ≥ 2.0.14; verify the project slug in Bugsink matches cnapp
  • 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 Stripe or Sentry need ProGuard keep rules
  • verify the SDK 58 upgrade on devices: useFrameworks: "dynamic" (needed since @stripe/stripe-react-native 0.78 pulls the Stripe iOS SDK through Swift Package Manager) is untested with Skia, Reanimated and Sentry, so do an iOS EAS build first; then a test-mode purchase on Android and iOS including a card that requires authentication (exercises the handleURLCallback deep link), an expiry reminder notification, and an error that lands in Bugsink
  • test in ios emulator? (npm run ios, requires macOS)
  • characters in the password input field are invisible
  • ask for date of birth and place of study when registering: galtinn now requires them on its web sign-up and profile forms, but /api/user/register/ still treats them as read-only, so users registered in the app must fill them in before they can save their profile on the web. Needs galtinn's register serializer to accept them first
  • use Expo Application Services to build and submit app to stores
  • 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/
  • add Apple Pay for membership payments: either natively in the payment sheet (register the merchant ID merchant.no.neuf.chateau + Apple Pay certificate, set merchantIdentifier in the @stripe/stripe-react-native plugin config, pass applePay to initPaymentSheet, new iOS build), or for free by moving payment to a Stripe-hosted Checkout page in the browser (needs a backend Checkout Session endpoint and a return deep link)
  • add Google Pay for membership payments: either natively in the payment sheet (enableGooglePay: true in the plugin config, pass googlePay to initPaymentSheet, request production access in the Google Pay & Wallet Console, new Android build), or for free via the same Stripe-hosted Checkout page as for Apple Pay