{"slug":"builds-overview","title":"Native builds overview","summary":"A native build compiles one pinned revision of the project into a signed APK, App Bundle, or IPA on FluxNative's build workers. It is charged only when it succeeds.","body":"The preview runs in a browser. A native build is the real app: compiled, signed, and ready to install on a phone or upload to a store. You do not need Xcode, Android Studio, or a Mac.\n\n## Outputs\n\n| Output | Platform | Use it for | After it finishes |\n| --- | --- | --- | --- |\n| **APK** | Android | Installing on your own phones and sharing with testers directly | QR code, download |\n| **App Bundle (AAB)** | Android | Google Play. Play turns it into device-specific APKs. | **Send to Play**, download |\n| **IPA** | iOS | TestFlight and the App Store | **Send to TestFlight**, download |\n\nEvery output is a signed release build. There is no debug build and no separate development configuration. The app uses the project's one `.env`.\n\n## Start a build\n\n1. Click **Build** in the project bar.\n2. Pick **Android** or **iOS**. For Android, pick **Installable APK** or **Play Store AAB**. Each option shows its price.\n3. Make sure signing is set up. Android can create a key for you. iOS needs a certificate and a provisioning profile first. See [Android signing keys](/docs/android-signing) and [iOS certificates and profiles](/docs/ios-signing).\n4. Start the build. Progress and a live log appear in the panel. You can close the panel; the project bar shows **Building** until it ends.\n\n## What gets built\n\nA build is pinned to the revision that was current when you started it. Edits you or the assistant make afterwards do not change a build that is already queued or running. Build again to include them.\n\nIf the source changes at the very moment you start, FluxNative asks you to try again rather than build a half-updated project.\n\n## Build statuses\n\n| Status | Meaning |\n| --- | --- |\n| **Queued** | Waiting for a free build slot. `#2` means one build is ahead of it. |\n| **Building** | Installing dependencies, generating native projects, compiling, and signing. |\n| **Ready** | Finished. The file can be downloaded, installed, or sent to a store. |\n| **Failed** | Stopped with an error. The reason stays on the build. Nothing is charged. |\n| **Canceled** | You canceled it. Nothing is charged. |\n\n## Credits and limits\n\n- Credits are reserved when a build starts and charged only when it succeeds. Failed and canceled builds cost 0 credits.\n- The plan limits how many native builds can run at once in the organization. Extra builds wait in the queue.\n- A build that runs too long is stopped and marked failed.\n- You can cancel a queued or running build from the panel.\n\n## History\n\nThe panel keeps each platform's history: format, version, size, when it ran, and its status. Download earlier artifacts from there.\n\n## Who can build\n\nBuilding needs the **Build app** permission. Owners, admins, and developers have it by default. See [Organizations and roles](/docs/organizations).\n\n## Next\n\n- [Android builds](/docs/android-builds)\n- [iOS builds](/docs/ios-builds)\n- [Versions and build numbers](/docs/versions-and-build-numbers)\n- [Install and test on a device](/docs/install-on-device)","sectionSlug":"native-builds","sectionTitle":"Build for devices","updatedAt":"2026-09-23T22:51:25.250Z","previous":{"slug":"secrets","title":"API keys and secrets"},"next":{"slug":"android-builds","title":"Android builds"}}