React Native + Expo: Mobile Development the Australian Way
Build iOS and Android apps from a single TypeScript codebase. A practical guide for the Aussie developer who wants to ship mobile without learning Swift and Kotlin.
React Native + Expo: Mobile Development the Australian Way
Over 80% of all smartphones in Australia run iOS or Android. If you want to reach Australians on their devices, you're building mobile. And in 2025, the path of least resistance is React Native + Expo.
Why This Stack in Australia?
Australian startups like Deputy, Culture Amp, and Linktree have all shipped React Native at scale because:
- One codebase → iOS + Android — halves your mobile team size
- TypeScript — same language as your web frontend
- Expo — eliminates the native pain points (no Xcode required for basic dev)
Bootstrap in 3 Commands
npx create-expo-app@latest my-app --template blank-typescript
cd my-app
npx expo start
You'll have a running app on your physical device in under 5 minutes via the Expo Go app.
Expo Router: File-Based Navigation
Expo Router (v3+) brings Next.js-style file-based routing to mobile:
app/
_layout.tsx # Root layout (navigation shell)
(tabs)/
_layout.tsx # Tab bar layout
index.tsx # Home tab
profile.tsx # Profile tab
modal.tsx # Full-screen modal
// app/(tabs)/index.tsx
import { Text, View } from 'react-native';
export default function HomeScreen() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Welcome to OzStack Mobile</Text>
</View>
);
}
Supabase on React Native
The same Supabase client you use on web works on mobile:
npm install @supabase/supabase-js @react-native-async-storage/async-storage
import { createClient } from '@supabase/supabase-js';
import AsyncStorage from '@react-native-async-storage/async-storage';
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL!,
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!,
{
auth: {
storage: AsyncStorage,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
},
}
);
Note: use EXPO_PUBLIC_* instead of NEXT_PUBLIC_* for Expo.
App Store Deployment with EAS Build
Expo Application Services (EAS) builds your app for the App Store and Google Play without you touching Xcode or Android Studio:
npm install -g eas-cli
eas login
eas build:configure
eas build --platform all
This is particularly useful in Australia because:
- Local dev machines don't need to be Apple Silicon
- CI/CD pipelines don't need macOS runners (expensive in GH Actions)
Performance Tips for Australian Networks
Australia has notoriously high latency to US/EU servers. If you're using Supabase, their Sydney region (ap-southeast-2) cuts your latency significantly.
For images:
- Use Expo Image (
expo-image) — it handles caching, progressive loading, and priority hints - Optimise for 3G-equivalent conditions even in metro areas (NBN is... inconsistent)
The Reality of Mobile Development in AU
Building mobile in Australia means:
- App Store Review: accounts need an Australian ABN for business accounts
- Push Notifications: use
expo-notifications— works across iOS and Android - Payments: Stripe is the default; AfterPay has a React Native SDK for BNPL
If you're building a consumer app for the Australian market, file-based navigation + Supabase + Stripe will cover 90% of your requirements.
Beyond the Yellow Brick Road
Mobile is the wizard-level path — more complexity, smaller team ecosystem, but enormous potential reach. With 26 million Australians and smartphone penetration at 91%, the mobile opportunity is real.
Click your heels and ship.