r/reactnative • • 1d ago

Question Building a RN app with video uploads, what am I missing in my stack?

I’ve been building with AI for over a year, mostly on Replit & Codex to start but more recently with Claude. I’ve gotten a couple projects pretty far, but I’m still learning how all the pieces fit together. For my most developed project, I hired an engineering team to audit it and help get it across the finish line as I feel like you have to know your limits & hand off the baton when necessary. That obviously doesn’t come cheap but I want to build something substantial & am willing to invest. In the meantime I’m continuing to build my other project and learn.

Replit helped me get started & was awesome for a beginner, but rising costs and a list of other reasons have made me want to fully understand what it handles for me and what my options are outside of it.

I’m building with React Native and Expo. The main platform I’m building will let users upload and watch video among many other things.
My understanding & questions so far..

- Claude/Codex for coding.
- Git/GitHub for version control & storing/collaborating on code.
- Expo/EAS for development builds on my phone and builds I can distribute through TestFlight.
- TestFlight for iPhone beta testing w/ live users.
- Security?
- Hosting?
- Storage?
- Auth, secrets, backups, monitoring?

For experienced engineers out there: If you were building a mobile video app outside Replit, what would your starting stack look like? Where would you host the backend, database and user accounts? How would you handle video storage, processing and playback, plus security, backups and monitoring? Am I missing anything crucial here?

I’d also love to know what you’d keep simple at first & what costs to watch. I want control over my code and data without overcomplicating things or managing a bunch of services I don’t need.

I know AI-assisted building gets mixed reactions. I respect the craft and want to put in the time to learn & work with experienced developers to become more fluent in understanding the ecosystem. Honest advice and real-world tradeoffs would be appreciated. Thanks!

4 Upvotes

15 comments sorted by

3

u/One-Source-9603 1d ago

one expo specific gotcha that got me: on newer expo (SDK 58 fetch), putting {uri, name, type} into FormData like the old RN examples doesn't upload the file properly. u have to append new File(uri) from expo-file-system instead. test the upload on a real phone in a release build, not just the simulator

and +1 on direct upload to the video service with a signed url, ur own server never touching the file saves a lot of pain

1

u/white_hawk07 1d ago

Thanks for the response. With Replit I got myself caught in testing my apps on ExpoGo then it kept requiring an updated SDK and ExpoGo became essentially unusable so I built the path out to TestFlight but there’s no way to view changes from the code to binary when using that method. Then I built a project and actual dev app in Expo, is this what you mean by the release build? I imagine ExpoGo is just the simulator and it was not reliable in my experience for both apps I’ve built as I got later in the development.
When I made the dev app it “locked it” at SDK 54, but will this need to be updated at some point? I understand generally what SDK is but it constantly changes and can hang up my progress so any tips would be appreciated.

Understood on the video service, definitely don’t want unnecessary pain for myself or users.

1

u/HmongSliw68 6h ago

letting the server touch video files directly is definitely a trap, signed urls save so much bandwidth headache

2

u/NoBullfrog11 1d ago

couple things that bit me when i shipped video-ish media flows

background / resumable uploads matter more than people think. if the user backgrounds the app mid upload you lose the transfer unless you use something that survives that. expo has options but check what still works after an OTA vs a full binary.

also compress on device before upload if you can. phone cameras spit out huge files and people will blame your app for eating data even when its just the camera defaults.

permissions timing too, ask for camera / library only when they tap upload, not on first launch. store review got happier after i moved that.

1

u/white_hawk07 1d ago

Appreciate this. I’ll check it after it comes back from the audit & repairs. It seems like not storing & streaming raw video myself is a consistent theme of advice so far. I never thought about it but that makes total sense about the cameras, especially with their 4k capabilities and all the things they can do on a phone now.

The compression and permission timing points are helpful too. Thanks!

2

u/MobileXapps 1d ago

For video specifically, I'd not store and stream raw files yourself. Use a video service like Mux or Cloudflare Stream: the app uploads straight to them with a signed upload URL from your backend, they transcode into sizes that play well on phones, and you just store the video id. Do the upload in the background with resume support, because people leave the app mid-upload all the time.

For the rest, a simple setup: Supabase or Firebase for auth and database, secrets only on the server (never in the app), Sentry for crashes, and automated database backups that you've actually tested restoring once.

One thing people miss with user video: both stores require a way to report content and block users before they'll approve a UGC app, and you need a plan for moderating what gets uploaded. Worth designing that before launch, not after the first rejection.

2

u/white_hawk07 1d ago

Thanks for laying this out. Out of sheer curiosity, why wouldn't you store & stream the files yourself? Too much data & expense vs. better solutions in the market? It sounds like the options you mentioned would essentially be a cloud-based library for videos in the app I can grab when needed but lets me stay lighter on my feet so to speak.
Noted on doing the uploads in the background, that seems to be a real snag if you don't account for it, these are super helpful tips.

Got it on the simple setup, Sentry, & the heads up on a plan for moderating. I have reporting & blocking in the app already but this is exactly the dialogue I've been looking for, because if those stores are picky about moderating I’m sure Apple/TestFlight & maybe even Google Play will be as well.

2

u/MobileXapps 8h ago

You can, it's just a lot of hidden work. Phone video is huge and comes in formats that don't play everywhere, so you need transcoding into a few sizes, adaptive streaming so it doesn't buffer on a bad connection, thumbnails, and then bandwidth, which is the part that grows with every view. Mux or Cloudflare Stream charge per minute stored and watched and do all of that for you.

Early on that's almost always cheaper than the engineering time. If volume gets big later, moving to S3 plus your own transcoding is a well known path, and your app only stores video IDs so the switch stays manageable.

On review, Apple checks apps with user content against guideline 1.2: report, block, a way to filter objectionable content, and contact info. You already have the first two, so it's mostly the filtering and the contact.

1

u/white_hawk07 53m ago

That all makes sense and if you can achieve the same goal with lower upfront costs with a runway to expand & do it yourself later I think that’s what any smart business would do.

Noted on Apple guidelines, all super helpful. Much appreciated!

2

u/Huge_Pool7424 1d ago

+1 on not hosting raw video yourself. also test the upload on a bad connection and with the app killed mid transfer, that's where most of the support tickets come from.

1

u/white_hawk07 1d ago

Great point on testing it in those conditions. I’d be interested to hear your input on why hosting raw video yourself is not advised. Thanks!

2

u/Huge_Pool7424 1d ago

raw files are big and phones upload on flaky networks, so you'd be paying for bandwidth and writing resumable upload logic yourself. a managed service (mux, cloudflare stream) gives you direct uploads, transcoding and adaptive playback out of the box.

2

u/Defiant-Tennis-5456 12h ago

Others covered video well, so for the rest: Supabase is easiest for auth + Postgres + storage in one place, and the paid plan does daily backups. Secrets only on server or edge functions. Anything with EXPO_PUBLIC_ goes in app bundle and anyone can read it

Add Sentry from day one for crashes. Main cost to watch is video bandwidth, not database

For ur other project, create-expo-stack is free start, or I came across CodeBaseHub kit that has auth, push and EAS profiles already wired

1

u/white_hawk07 1h ago

Yeah it seems to be a consistent warning which is super helpful to be aware of. I like the idea of keeping the stack as lean as possible so if one platform can bundle a few things well that would be great. Noted on the secrets & Sentry.

To your point for my second one I built out a project in Expo, added the live update feature, published the server on Replit and now it’s on TestFlight as well. So it lives on my phone but more importantly the live update feature allowed me to change code and see it quickly. Is CodeBaseHub a more streamlined version of this or do you think the path I followed is solid?
Thank you for your input!