Native, hybrid, PWA, wrapper: what each tool really produces
Are apps built with no-code or AI platforms really native? The four kinds of mobile app in plain words, what each one can and cannot do, and what fifteen tools actually produce.
Key points
- Four different things hide behind the word app: native code (Swift, Kotlin), a cross-platform app compiled from React Native or Flutter, a website in a wrapper, and a PWA installed from the browser.
- Most AI app generators produce React Native with Expo: a real installed app, but not Swift or Kotlin. Only Rork and Vibecode generate Swift, Lovable and Glide stay on the web, and Base44 publishes a web view.
- The difference shows on system features: Siri actions, widgets and in-app purchase need an installed app, and a wrapper that does no more than a website risks rejection under Apple's guideline 4.2.
An app built with an AI or no-code tool isn’t necessarily native. Behind the word “app”, AI and no-code tools produce four different things: native code written in Swift or Kotlin, a cross-platform app compiled from React Native or Flutter, a website wrapped in an app shell, or a PWA installed from the browser. Most AI app generators produce React Native; only a few write Swift.
The four kinds, in plain words
| Kind | What it is | Typical technology | How to recognise it |
|---|---|---|---|
| Native | One app per platform, written in each platform’s own language with Apple’s and Google’s tools | Swift or SwiftUI on iOS, Kotlin on Android | Two separate projects: an Xcode project with .swift files, an Android project with .kt files |
| Cross-platform compiled | One codebase turned into a real iOS app and a real Android app | React Native (often with Expo), Flutter | A package.json listing react-native or expo, or a pubspec.yaml with Dart files for Flutter |
| Wrapper (often called hybrid) | A website displayed inside an app shell, in a web view | Capacitor, Cordova, a vendor’s own shell | The app loads a web address, and content changes without a new store version |
| PWA | A web app the user installs from the browser | HTML, JavaScript, a service worker | No store listing: you open a web address, then “Add to Home Screen” |
Two details matter. React Native is not a website: at runtime it “creates the corresponding Android and iOS views”, per its documentation. Flutter compiles to machine code too, but it “has its own implementations of each UI control” instead of using the system’s. Both are real installed apps; neither is Swift or Kotlin.
A wrapper, on the other hand, is honest about what it is. Base44’s documentation describes its mobile app as “a lightweight native wrapper around your web app that opens only your app’s URL”.
What each kind can and cannot do
| Capability | Native | Cross-platform compiled | Wrapper | PWA |
|---|---|---|---|---|
| Push notifications | Yes | Yes | If the shell adds them (Base44 does) | On iPhone, only once added to the Home Screen, since iOS 16.4 |
| Works offline | Yes | Yes | Depends on the shell (full offline not supported at Base44) | Partly, through a service worker |
| Siri and App Intents, widgets | Yes, directly | Yes, with native code added to the project | Only if the shell adds native code | No |
| Apple and Google in-app purchase | Yes | Yes | Depends on the shell (not supported at Base44) | No, payment happens on the web |
| Store acceptance | Yes | Yes | At risk if it does no more than the website (guideline 4.2) | Not on the App Store |
Push notifications. iOS and iPadOS 16.4, released in March 2023, added web push “to web apps added to the Home Screen”, per WebKit. A PWA opened in Safari without being installed gets nothing.
Siri, widgets and other system features. Apple’s App Intents framework is how an app makes its actions and data available to Siri, Spotlight, Shortcuts and widgets. Widgets themselves are built with WidgetKit. These are native frameworks compiled into the app. Flutter’s documentation shows the path for a cross-platform app: you add an extension in Xcode and work with it “using the same techniques as UIKit or SwiftUI apps”. On Android, the equivalent for assistants is AppFunctions, available on Android 16 and later and still experimental. A web page can register with neither.
In-app purchase. Apple’s guideline 3.1.1 requires in-app purchase to unlock features or digital content inside an app. Base44 states that its apps don’t support Apple In-App Purchase or Google Play Billing yet. A PWA is not in the store, so it charges on the web like any site.
Store acceptance. Guideline 4.2 asks for “features, content, and UI that elevate it beyond a repackaged website”. Wrappers are the kind most exposed to it. Our article on why Apple rejects AI-built apps goes into the detail.
Why native comes back into the debate in 2026
Two dated facts. On September 10, 2026, Shopify announced it would migrate all its mobile apps from React Native to Swift and Kotlin, because coding agents now carry much of the cost of building twice. And Apple’s redesign, Liquid Glass, reaches apps that use standard SwiftUI or UIKit components as soon as they are built with the latest SDK, per Apple. Flutter draws its own controls, so it has to rebuild the look itself: on June 10, 2025, the Flutter team wrote it was “not developing” the new design in its Cupertino library “right now”, and the GitHub issue was still open on November 12, 2026.
Mathieu Poli, head of frontend engineering at GoodBarber, has made the case for native in three signed pieces. In “Everyone is going back to native. We never left” (dev.to, September 11, 2026), he points out that intermediate layers come and go: Adobe shut down PhoneGap in 2020 and Microsoft ended Xamarin support on May 1, 2024. In “The assistant is making the native app mandatory again” (dev.to, October 1, 2026), he argues that App Intents and AppFunctions are native kits a web page cannot register with. In “Native is a floor, not a ceiling” (UX Collective, November 6, 2026), he uses Liquid Glass to show what recompiled native apps get for free. Read these as an argued position from GoodBarber, which publishes this site. The facts they rest on are linked in our sources.
What each tool produces
Checked on November 12, 2026, against each vendor’s documentation, consistent with our comparison of the best AI tools to create a mobile app.
| Tool | What it produces | Kind | In practice |
|---|---|---|---|
| Lovable | Web app | Web, not a mobile app | Opens in a browser, doesn’t go to the stores |
| Bolt | Web app, or React Native with Expo | Web, or cross-platform compiled | On mobile, a real app which you build and publish yourself with Expo |
| Base44 | Web app in a web view | Wrapper | Push available; no in-app purchase or full offline yet |
| Replit | React Native with Expo | Cross-platform compiled | Publishing to iOS only |
| Rork | SwiftUI, Kotlin | Native | Goes as far as App Store submission; for Google Play, provides an .aab file you upload yourself |
| Vibecode | Swift, or React Native | Native or cross-platform | The Swift path goes as far as App Store submission |
| Anything | React Native with Expo | Cross-platform compiled | iOS; Google Play in beta |
| Newly (formerly Natively) | React Native with Expo | Cross-platform compiled | iOS (TestFlight) and Google Play |
| a0.dev | React Native | Cross-platform compiled | iOS |
| Draftbit | React Native with Expo | Cross-platform compiled | Builds and uploads to both stores |
| FlutterFlow | Flutter | Cross-platform compiled | Exportable Flutter code; controls drawn by Flutter |
| Adalo | App described as native | Compiled app, stack not published | Full code export on the Business plan |
| Thunkable | App described as native | Compiled app, stack not published | No code export |
| Glide | PWA | PWA | Doesn’t go to the stores |
| GoodBarber | iOS and Android apps built with its native engines (Swift for iOS, Kotlin for Android), plus a PWA | Native and PWA | Supported publishing, or handled by the GoodBarber Takes Care service; source code not exportable |
Adalo and Thunkable don’t publish the stack behind their apps. At Adalo, full code export on the Business plan lets you check it; Thunkable doesn’t export code. Neither does GoodBarber, but its engineering team states publicly that its engines are written in Swift and Kotlin.
Our take, by project
- Testing an idea, or an internal tool used on a computer as much as on a phone: a web app or a PWA is enough. Lovable, Glide or GoodBarber’s web version get you there without store review or developer fees.
- Putting an existing website on the stores: a wrapper works technically, but add what a website can’t do (notifications, offline, device features) or expect guideline 4.2.
- A real app whose code you or a developer will keep: React Native with Expo (Bolt, Newly, Draftbit) or Flutter (FlutterFlow). That suits most apps; Siri actions and widgets will need some native code on top.
- An app that should feel like iOS and Android and reach Siri and widgets: native. Rork or Vibecode if you want AI-generated Swift and are ready to maintain it, a developer for a specific project, or a native no-code tool such as GoodBarber if you’d rather not handle code.
Whatever the kind, publishing still goes through the same steps: see our guide on how to publish an AI-built app.
FAQ
Are apps built with no-code or AI platforms really native?
Some are, most are not. Rork generates SwiftUI and Kotlin, Vibecode generates Swift on its main path. Bolt, Replit, Anything, Newly, a0.dev and Draftbit produce React Native, FlutterFlow produces Flutter, Base44 a web view and Lovable a web app. GoodBarber builds its apps with its native engines, Swift for iOS and Kotlin for Android. Adalo and Thunkable describe their apps as native without publishing the underlying stack.
Are React Native and Flutter native?
Not in the strict sense, but they are real installed apps. React Native creates real iOS and Android views at runtime. Flutter compiles to machine code but draws its own controls, so it does not automatically pick up system redesigns such as Apple's Liquid Glass.
Can a PWA send push notifications on iPhone?
Yes, since iOS 16.4 (March 2023), but only once the user has added the web app to the Home Screen. A PWA still cannot be listed on the App Store, sell through Apple's in-app purchase, or expose actions to Siri through App Intents.
Sources (34)
- React Native: Core Components and Native Components
- Flutter: Architectural overview
- Flutter: Adding iOS app extensions
- Flutter: Issue #170310, Liquid Glass in Cupertino widgets
- Capacitor: Documentation
- MDN: Progressive web apps
- WebKit: Web Push for Web Apps on iOS and iPadOS
- WebKit: WebKit Features in Safari 16.4
- Apple: App Store Review Guidelines
- Apple: App Intents
- Apple: WidgetKit
- Apple: Adopting Liquid Glass
- Android: AppFunctions
- Shopify Engineering: Back to native
- Apache Cordova: Goodbye PhoneGap
- Microsoft: Xamarin support policy
- Mathieu Poli (GoodBarber): Everyone is going back to native. We never left (dev.to, Sept. 11, 2026)
- Mathieu Poli (GoodBarber): The assistant is making the native app mandatory again (dev.to, Oct. 1, 2026)
- Mathieu Poli (GoodBarber): Native is a floor, not a ceiling (UX Collective, Nov. 6, 2026)
- Base44: Uploading to app stores
- Lovable: FAQ
- Bolt: Expo integration
- Replit: Mobile apps
- Rork: FAQ
- Vibecode: FAQ
- Anything: Mobile apps
- Newly (formerly Natively): FAQ
- a0.dev: Pricing
- Draftbit: FAQ
- FlutterFlow: Product
- Adalo: App store publishing
- Thunkable: Pricing
- Glide: Publishing to an app store
- GoodBarber: Pricing
