> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

Pick your framework to see the exact commands for building and uploading your app.

* [Expo](/builds/frameworks/expo)
* [React Native (bare)](/builds/frameworks/react-native)
* [Flutter](/builds/frameworks/flutter)
* [iOS Native (Swift)](/builds/frameworks/xcode)
* [Android Native](/builds/frameworks/gradle)

## Hot Reload vs Rebuild

| Framework           | Dev Loop Model                      | When to Rebuild                                   |
| ------------------- | ----------------------------------- | ------------------------------------------------- |
| Expo                | Hot reload (JS/TS changes are live) | Only when native dependencies change              |
| React Native (bare) | Hot reload (JS/TS changes are live) | Only when native dependencies change              |
| Flutter             | Rebuild on every change             | Every code change (Dart compiles into the binary) |
| Swift/iOS           | Rebuild on every change             | Every code change (binary is the app)             |
| Android Native      | Rebuild on every change             | Every code change (binary is the app)             |

For Expo and React Native, the uploaded build is a "dev client shell" -- your JS/TS code is served live from your local Metro server via a Revyl relay. For Flutter, Swift, and Android, the binary **is** the app.

See [Dev Loop: Hot reload and rebuild configuration](../../develop/dev-loop-overview#hot-reload-and-rebuild-configuration) for the full breakdown.

## Platform Build Requirements

Every framework's default debug build satisfies Revyl's artifact requirements out of the box. If you're shipping a custom configuration — narrowed `abiFilters`, release builds, `.ipa` archives — see **[Build Artifact Requirements](/builds/artifact-requirements)** for the full rules and trade-offs.
