Wizard Level·mobile·15 min read

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:

  1. One codebase → iOS + Android — halves your mobile team size
  2. TypeScript — same language as your web frontend
  3. 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.