mobile· 8 min read

How to Build a React Native App with VULK

Step-by-step tutorial on building production React Native + Expo apps with VULK, from prompt to testing in Expo Go and shipping with EAS Build.

João CastroJoão Castro
How to Build a React Native App with VULK

Updated July 18, 2026 — refreshed with verified platform data and the current honest preview status for React Native.

How do you build a React Native app with VULK?

The complete answer: you describe the app in a prompt, and VULK generates a full React Native + Expo project — Expo Router file-based navigation, NativeWind (Tailwind for React Native) styling, TypeScript throughout, and app.json configured with bundle identifiers and permissions. You then download the project, run npx expo start, and test it on your own phone in Expo Go within minutes; production builds ship through EAS Build (eas build) to the App Store and Google Play.

One thing stated upfront, because honesty beats marketing: VULK does not currently render React Native apps in the in-app live preview. React Native is Metro-bundled and cannot run in the browser-based preview that serves VULK's web stacks — an in-editor RN preview is in development, not shipping. What you get today is complete, real generated code plus the standard Expo workflow to run it on a device. Demand is real but smaller than Flutter's: 213 all-time user prompts have requested React Native/Expo versus 381 for Flutter (VULK platform data, July 2026, N = 11,355 projects) — which is also why Flutter got its in-platform build service first.

What exactly does VULK generate?

This is not a web app wrapped in a WebView. VULK generates real native components — View, Text, ScrollView, FlatList, TouchableOpacity — that compile to platform-native widgets on iOS and Android.

What you get Details Status
Expo Router structure app/ directory, layouts, nested + dynamic routes ✅ Generated
NativeWind styling tailwind.config.js, className props, dark themes ✅ Generated
TypeScript Typed navigation params and component props ✅ Generated
App configuration app.json with bundle IDs, splash, permissions ✅ Generated
Testing on device Expo Go via QR code, hot reload locally ✅ Standard Expo workflow
Store builds EAS Build for APK/AAB (Android) and IPA (iOS) ✅ Via eas build
In-editor live preview Metro-bundled RN in the VULK preview ❌ In development

The generated file tree looks like this:

app/
  _layout.tsx          # Root layout with navigation container
  index.tsx            # Home screen
  (tabs)/
    _layout.tsx        # Tab navigator layout
    home.tsx           # Home tab
    profile.tsx        # Profile tab
    settings.tsx       # Settings tab
  [id].tsx             # Dynamic route
components/
  Button.tsx
  Card.tsx
  Header.tsx
assets/
  fonts/
  images/
tailwind.config.js
app.json
package.json

How do you write prompts that produce good mobile apps?

The prompt is where the quality of your generated app is decided. Here are real prompts that produce solid results.

Basic prompt (works, but generic):

Build a fitness tracking app in React Native

Better prompt (specific features):

Build a React Native fitness tracking app with Expo Router tab navigation. Include a workout log screen where users can add exercises with sets, reps, and weight. Add a progress screen with charts showing weekly volume. Use NativeWind for styling with a dark theme. Include a timer component for rest periods between sets.

Advanced prompt (production-quality):

Build a React Native + Expo fitness tracker with these screens: (1) Dashboard showing today's workout plan and weekly stats, (2) Exercise library with search and muscle group filters, (3) Active workout screen with a running timer, set logging, and rest timer, (4) Progress tab with line charts for weight lifted per muscle group over 30 days, (5) Profile with settings for units (kg/lbs) and rest timer defaults. Use Expo Router tabs for main navigation and stack navigation within each tab. Style with NativeWind using a dark theme (zinc-900 background, emerald-500 accents). Store data locally with AsyncStorage. Use expo-haptics for button feedback.

The difference between these prompts is specificity. VULK's AI models perform best when you describe screens, data structures, and interaction patterns explicitly — the median VULK prompt is just 364 characters, but the top-quality mobile generations come from prompts like the advanced one above (VULK platform data, July 2026).

How does NativeWind work in the generated code?

NativeWind lets VULK use Tailwind CSS class names in React Native. The generated code uses the className prop instead of StyleSheet.create:

// What VULK generates with NativeWind
export default function WorkoutCard({ exercise, sets }: WorkoutCardProps) {
  return (
    <View className="bg-zinc-800 rounded-2xl p-4 mb-3">
      <Text className="text-white text-lg font-semibold">
        {exercise.name}
      </Text>
      <Text className="text-zinc-400 text-sm mt-1">
        {sets} sets completed
      </Text>
    </View>
  );
}

This is real React Native code that compiles to native StyleSheet objects at build time. There is no runtime performance penalty. If you need styles NativeWind does not cover, you can fall back to style props — VULK generates these when platform-specific styling is required.

How does Expo Router navigation work?

VULK generates file-based routing using Expo Router. This mirrors the mental model of Next.js: files in the app/ directory become routes.

Key patterns VULK uses:

  • Tab navigation: A (tabs)/_layout.tsx file with Tabs component from expo-router/tabs
  • Stack navigation: Nested _layout.tsx files with Stack component for push/pop navigation within a tab
  • Dynamic routes: Files named [id].tsx or [slug].tsx that accept route parameters
  • Modal routes: Files in a (modal)/ group that present as modal overlays

The root layout typically includes providers for fonts, themes, and any global state:

export default function RootLayout() {
  return (
    <ThemeProvider>
      <Stack screenOptions={{ headerShown: false }}>
        <Stack.Screen name="(tabs)" />
        <Stack.Screen name="(modal)" options={{ presentation: 'modal' }} />
      </Stack>
    </ThemeProvider>
  );
}

How do you test the app on your phone?

Since there is no in-editor RN preview yet, testing happens on your own device — and the Expo workflow makes that fast:

  1. Download the code from VULK's editor (source ZIP export is included from the Builder plan up)
  2. Extract and install dependencies: cd your-app && npm install
  3. Start the dev server: npx expo start
  4. Scan the QR code with Expo Go on your phone (iOS Camera app or Android Expo Go app)

The app loads on your device within seconds, and local changes reflect instantly via hot reload.

For features that require native modules not included in Expo Go (like Bluetooth or NFC), create a development build using npx expo run:ios or npx expo run:android. VULK's generated app.json includes plugin configurations for common native modules.

How do you iterate after the first generation?

VULK's conversation flow is designed for iterative mobile development. After the initial generation, refine with follow-up messages:

  • "Add pull-to-refresh on the workout list screen"
  • "Replace the flat list with a sectioned list grouped by muscle group"
  • "Add a bottom sheet for the exercise picker instead of navigating to a new screen"
  • "Make the rest timer show a circular progress indicator"

Each iteration preserves your existing code and applies targeted changes. VULK tracks the full file tree and modifies only the files that need updating. The median build conversation on the platform is 4 messages — one shot plus a few tweaks (VULK platform data, July 2026).

How do you ship to the App Store and Google Play?

Production builds go through EAS Build, Expo's managed build service:

  • Android: eas build --platform android produces an APK (direct install) or AAB (Google Play submission). No local Android Studio required.
  • iOS: eas build --platform ios produces an IPA for TestFlight and App Store submission. You need an Apple Developer account ($99/year).

VULK's generated app.json ships with the bundle identifiers, version fields, and permission declarations EAS expects, so the project is build-ready without config surgery. (If you want an in-platform APK build service today, that exists for VULK's Flutter path — another reason many mobile builders choose Flutter on VULK.)

What should you watch for?

Navigation depth: If your app has more than three levels of nested navigation, describe the hierarchy explicitly in your prompt. Otherwise the AI may flatten routes that should be stacked.

Image handling: VULK generates expo-image usage for optimized image loading. If your app is image-heavy (gallery, social feed), mention this so the AI includes proper caching and placeholder handling.

Offline support: If your app needs to work offline, state this in your prompt. VULK will generate AsyncStorage persistence and network state detection, but only when asked.


FAQ

Can I preview my React Native app inside VULK?

Not yet. React Native apps are Metro-bundled and cannot run in VULK's browser-based live preview; the editor shows an honest instructions panel instead of a fake render. An in-editor RN preview is in development. Today you test on your own device via Expo Go — typically running within five minutes of downloading the code.

Is the generated code really native, or a WebView wrapper?

Really native. VULK generates React Native components (View, FlatList, TouchableOpacity) that compile to platform-native widgets through the standard React Native toolchain — no WebView, no hybrid shell.

Should I choose React Native or Flutter on VULK?

If you want everything inside one platform — generation, in-app preview, and APK/AAB export without leaving VULK — choose Flutter: it has a live build-then-serve preview and in-platform store builds. Choose React Native if your team lives in the React/TypeScript ecosystem and is comfortable with the Expo/EAS workflow. Platform demand reflects this: 381 all-time Flutter prompts vs 213 for React Native/Expo (VULK platform data, July 2026).

What does shipping to the stores cost?

Google Play has a one-time $25 registration; Apple's Developer Program is $99/year. EAS Build has a free tier that works for small apps. On the VULK side, source export starts at the Builder plan ($19.99/mo) — VULK is paid-only, with a 3-day full-access intro from $3.99 credited to your first month if you continue.

Can the generated app talk to a real backend?

Yes. If your prompt describes accounts, saved data, or APIs, VULK generates its standard backend (PostgreSQL + REST + JWT auth) and wires the React Native screens to it over HTTPS — the same backend system used for web apps, hosted on VULK's infrastructure.


React Native on VULK is honest and production-oriented: real Expo code, a real device workflow, real store builds via EAS — and no pretend previews. Start with a detailed prompt at vulk.dev, test in Expo Go, iterate in conversation, and ship.

Published by João Castro · 8 min read

Keep reading

All articles
VULK Support

Online

Hi! How can I help you today?

Popular topics

AI support • support.vulk.dev

How to Build a React Native App with VULK — Blog | VULK