# Supabase Storage uploads that survive real mobile networks in Expo apps

Uploads are the feature that works perfectly on office wifi and falls apart everywhere else. A user takes a photo in a parking garage, the tunnel kills the connection halfway through, and your app either retries gracefully or leaves them staring at a spinner. If you ship an Expo app backed by Supabase Storage, the difference between those two outcomes is a handful of decisions you make once: private buckets, signed URLs, tight RLS policies, client-side compression, and retries that assume failure.

This guide walks through a production-ready upload setup for Expo and React Native apps. It assumes you already have Supabase Auth wired up and a bucket created.

---

*This is an excerpt. Read the full post at [otf-kit.dev/blog/supabase-storage-uploads-expo-production](https://otf-kit.dev/blog/supabase-storage-uploads-expo-production) — full-stack kits your AI coding agent can actually ship to production. [Browse the kits →](https://otf-kit.dev)*
