·3 min read
Native App, Cross-Platform or PWA? Choosing the Right Mobile Approach for Your Business
Not every business needs an app in the Play Store. Here is what native apps, cross-platform apps and progressive web apps can each do, what they cost, and how to pick one.
- mobile app
- pwa
- cross-platform
- app development
- sme

"We need an app" is one of the most common things we hear from clients. Sometimes that is exactly right. Often, though, what the business needs is something customers or staff can open on their phones, and there is more than one way to deliver that. The choice affects cost, timeline and what the product can actually do.
In Indonesia the context matters: Android dominates, with about 79% of mobile web traffic in Indonesia against 21% for iOS (StatCounter, September 2026), many phones have limited storage, and people are reluctant to install yet another app for a one-off purchase.
The three options
Native apps
Built separately for each platform, using Kotlin for Android and Swift for iOS. They get full access to the phone's features and the best performance, but you are effectively building and maintaining two apps.
Cross-platform apps
Built once with a framework such as Flutter or React Native, then released to both the Play Store and the App Store. They cover most native features with one codebase, which usually means lower cost and faster updates. For most business apps this is the sensible default when a store app is needed.
Progressive web apps (PWAs)
A website built to behave like an app. Users open it from a link, and can add it to their home screen with no store involved. PWAs can work offline for cached pages, use the camera and location while open, and send push notifications on Android and, since iOS 16.4, on iPhones when the PWA is added to the home screen.
Where PWAs fall short
- Background work. Tasks that must run when the app is closed, such as tracking location or timed checks, are limited or unavailable.
- Deep device features. Bluetooth, NFC and some sensors are restricted, especially on iPhone.
- Discovery. No listing in the stores, which matters if customers search for you there.
- Installation on iPhone. Adding to the home screen is a manual step many users do not know about.
An example: why Cekin is a native-capable app
Cekin, a personal safety check-in app we built, asks users to confirm they are safe at a set interval. If a check-in is missed, it notifies emergency contacts with the last known location and battery level. That depends on reliable timers, background location and notifications that fire when the app is closed, exactly the areas where a PWA is weakest. For Cekin, a store app was the only responsible choice.
A restaurant ordering page or a sales team's visit report form is different. Speed of access matters more than background features, and a PWA or a good mobile website is often the better product.
How to choose
Choose a PWA or mobile web app if:
- Users arrive from a link, QR code, ad or WhatsApp message.
- The app is used occasionally, or is an internal tool for staff.
- You want one product for desktop and mobile with the fastest time to launch.
Choose a cross-platform app if:
- Customers use it repeatedly and expect it in the stores.
- You need reliable push notifications, background tasks or device features on both platforms.
- You want to control cost with one codebase.
Choose native if:
- Performance is critical, such as heavy graphics, real-time audio or video.
- You depend on the newest platform features as soon as they are released.
- You have the budget and team to maintain two codebases.
Starting small is fine
Many products start as a web app or PWA, prove that people use them, and add a store app later once the need is clear. Built well, the same backend and API serve both, so the first version is not wasted. Store apps also bring extra running costs, such as developer accounts and yearly OS updates, which we cover in what it takes to keep an app running after launch.
Not sure which approach fits your idea? Talk to CodeWorks. We will look at who your users are and how they will use it, and recommend the simplest option that does the job.