Skip to content

Mobile apps

When does your idea need an Android or iPhone app?

Start with a task that benefits from the phone itself, such as adding a photo to a saved note. Try the success and permission-declined paths on paper, then test the real behavior in an isolated build before you plan a store release.

What should you build first for a phone?

Start with a useful action that needs the phone, such as adding a photo to a plant journal. Sketch what happens from tapping Add a photo through returning to the note.

If the reader only needs a public form or information page, try the website on a phone first. Building for app stores adds distribution, signing and update work.

How do you try the action without affecting real accounts?

On paper, draw success and permission declined. If you move to a phone, first confirm the build belongs to an isolated test project you control, uses fictional records and photos, and connects only to verified test services. Disable live uploads and notifications. If you cannot verify isolation, stay on paper.

An emulator or simulator is a simulated phone on your computer. A real phone lets you check the permission prompt and how the experience feels on a device you intend to support.

Compare tools

Scroll the table sideways to read every column.

Compare phone testing, build output and distribution
ToolWhere you startWhat you build first and which project you keep.How you check the phone behaviorThe tools or build you need before testing.What you keep and what gets submittedWhere the editable source, signed files and store work live.What can cost moneyWhich hosted allowance or separate service is relevant.
ExpoStart with a React Native project. Expo Go can preview supported features. Use an app-specific development build for other native libraries or settings.Use a development build for the actual app’s phone behavior. EAS can build in the cloud. Local builds need the platform tools.Keep project code and settings. EAS Submit uploads the signed app, and the store still handles review and public release.Expo Services Free lists 15 Android and 15 iOS builds. Check the current allowance and queue.
React NativeBuild with React. A framework can handle some setup. Local builds without a framework need the platform tooling.Use Android tools for a local Android build and Xcode on macOS for a local iOS build. Check the actual permission on a device.Keep the editable project. The Android guide covers a signed bundle, and the iOS guide covers archive and upload.The React Native framework is MIT-licensed. Budget for any chosen services and store account separately.
FlutterBuild the interface in Dart. Set up Flutter and each target platform’s tooling.Test the permission on a real phone. Flutter integration tests do not operate the native prompt.Keep the project. Android and iOS have distinct signing and release outputs.Flutter is BSD-licensed. Budget separately for any chosen services and store account.
FlutterFlow StudioBuild visual Flutter screens in FlutterFlow Studio.Use Studio Local Run with its desktop app and platform setup. Check phone behavior on a device.Download editable code on a qualifying plan. App Store delivery requires your Apple developer account and store setup.Studio lists Basic and above for code download and local-device testing. Store accounts are separate.
DraftbitBuild editable app code in Draftbit.Pro testing builds include Android device files and iOS simulator files. Use the store upload and TestFlight path for iPhone testers.Keep the source. Ordinary GitHub export replaces the selected branch or configured folder. Connecting a repository is a separate workflow.Standard lists source export and store publishing. Pro adds testing builds. Store accounts are separate.
Apple TestFlightStart with a signed Apple build and an App Store Connect record.Install the assigned beta on an Apple device. Internal and external groups have different requirements.Keep source and signing separately. TestFlight holds beta builds and feedback.Apple Developer Program membership is separate from any builder or backend.
Google Play ConsoleBring an Android build and a developer account.Use internal or closed testing for a defined group. New personal accounts can have a required closed test.Keep the editable project separately. Google provides an app transfer process with exceptions.Google lists a one-time US$25 developer registration fee.
CodemagicConnect the app’s existing code and define a repeatable build.Make a build and optionally send a signed version to an internal test destination.Keep source and workflow in your repository. Save files you need beyond hosted retention.Personal macOS M2 minutes and team billing are different.
fastlaneWrite named release steps beside the app code.Use your own compatible machine or build service. An upload can target a test track.Keep the Fastfile and dependency versions with the source, and credentials separately.MIT-licensed tooling. Store and hosted-machine costs are separate.
RevenueCatStart with a purchase product and the feature it should unlock.Plan a debug test or a platform sandbox test. Check access with fictional accounts.Keep control of the store accounts. Reporting exports and migration files can differ.Current pricing uses monthly tracked revenue before store commission and taxes.

What changes when you are ready to give the app to other people?

Keep the source project. Then make a signed app build, a package the phone can verify came from the expected developer. Test it through the channel you intend to use and check the store’s submission and review requirements before promising a launch.

Developer accounts, signing access and store listings need owners. Keep a record of the exact version you sent and who can submit a fix.

How do you rehearse a good photo flow on paper?

Draw a plant note and a blank photo area. Use no real phone camera, accounts, stores or uploads.

  1. Choose a moment to ask
    Show the request for camera access after Add a photo.
  2. Try the declined path
    Keep the note and give the person a way to save without the picture.
  3. Specify what a phone test must show
    Check the actual prompt, a saved test note and the return to that note after reopening the app.