Hi, I'm developing a mobile dating app (React Native/Expo) with ~1,700 signed-up users. I recently set up a separate staging environment and I'm trying to nail down the right deployment and testing workflow with Supabase — specifically around:
Database migration strategy — how to safely roll out schema changes when older app versions are still in the wild
Backwards compatibility — ensuring API/RPC changes don't break users who haven't updated yet
Version gating — enforcing minimum app versions when a breaking change ships
I see GitHub Actions mentioned in the docs for CI/CD, but with mobile apps you can't force everyone onto the latest version instantly like you can with web. Curious how others handle this — do you version your RPC functions, use feature flags, or something else?
Thanks for any insight!
A user developing a mobile dating app with React Native/Expo seeks advice on deployment and testing workflows with Supabase. They are particularly interested in strategies for database migration, maintaining backwards compatibility, and enforcing minimum app versions during breaking changes. The user mentions using GitHub Actions for CI/CD and seeks community insights on best practices.
following, also interested!
I don't do much app development so take this with a grain of salt but for version gating an application i would assume you could display/force a modal on the app that shows if the minmum supported version changes i.e a quick api call every time the app is launched. Versioning RPCs seems like a good idea just for breaking changes, so the app might be 1.9 but the RPC is 1.1 for examples. Databases are a tricky one, i think if i was facing this issue i would avoid deleting things for the most part and so i would design the database schema with that in mind i.e make most data eference a user/org at the top level so that tables are not too coupled with one another. If i wanted to stop showing any data due to a new version-> keep the tables (wipe for users on more recent version) -> remove the UI component/call that accesses it but maintain the endpoint for older users since their UI/database objects would still make use of that. Also a very modular frame of mind would help i bet this is a (table, UI component, APi endpoint) set, they come together in newer versions or they are removed together