Seven questions, in the order they will hurt you if you skip them. Each ends with how opointo answers it, including where it falls short.
1. Do you get a normal Expo project?
Some builders export code you can read but cannot run without their runtime, or keep the app on their platform. Ask for an exported project and open package.json. You should see Expo, React Native and the libraries you would have chosen yourself, and nothing from the builder you could not delete.
opointo: a normal Expo project with Expo Router, written into your repo by your agent, with no runtime from us inside it. Exports target Expo SDK 57 and React Native 0.86.3; building one needs Node 22.13 or later.
2. Are the controls native on each platform?
iOS and Android are different design languages. Apple’s controls carry Liquid Glass on iOS 26, and Google’s Material 3 Expressive has its own shapes and motion. A builder that draws one look and renders it on both makes an app that feels borrowed somewhere. Ask what draws the tab bar on each platform.
opointo: Apple’s own tab bar, switch, slider and segmented control on iOS, with Liquid Glass, and Material 3 Expressive through Jetpack Compose on Android. Native on both, and deliberately different on each.
3. Does it wire the navigation, or only the screens?
Screens are the easy half. Tabs, pushed screens, pop-ups, provider order, safe areas and scroll insets are where a generated app breaks, usually on the second platform.
opointo: you draw arrows between screens, and each becomes a tab, a pushed screen or a pop-up inside an app shell we tested on real devices on both platforms.
4. Does it say Expo Go or a development build?
Expo Go runs only the native modules it ships with. Real native controls usually need more than that, so a builder that promises Expo Go and every native control is promising one of the two.
opointo: Expo Go cannot run the app, because several components use real native controls, so it needs a development build.
5. What happens when you stop paying?
This is the question that decides whether you own an app or rent one. Ask it before you build anything you care about.
opointo: every app you generated keeps working, forever. The code is in your repo, has no licence check and never calls home. Cancelling stops generating code, the component registry and our updates.
6. Does it keep up with iOS and Android?
Apple and Google both move their design languages every year. A builder that was right last year can be wrong now. Ask for a dated record of what was verified, not a logo wall.
opointo: Verified on iOS 26 and on Android 16 with Material 3 Expressive. iOS 27 support is in progress. The compatibility page is generated from our run records, so it changes when somebody runs something, not when somebody edits a page. update_components updates the components and app shell we supplied as the platforms move; your own code is left alone.
7. What does it need on your machine?
Cloud builds can compile an iOS app without a Mac. That holds until you add a native module the builder did not plan for, which every real app does.
opointo: You need a Mac with Xcode 26 to build the iOS app. Android needs only the Android SDK. We ask for the Mac on purpose: once you add your own database, sign-in or payments, you are installing native modules we do not ship, and that is where a Mac stops being optional.
Where opointo is not the right builder
- You never want to see code. Today you need a coding agent, and you run the build yourself.
- You need a web app or a tablet layout. opointo builds phone apps for iOS and Android.
- You need iOS and have no Mac.
- You want the builder to make your backend. Data, sign-in and payments are yours to add.
opointo is built by a small team. While opointo is in beta, the first 100 subscribers pay 40% less and keep that price for as long as they stay subscribed. Today’s price: $15 a seat a month, or $12 billed yearly, at the beta price (usually $25 and $20).
Open the App Builder and check these seven against a starter app.