App development guide · South Africa

Native, cross-platform, or a PWA? How to choose how your app is built

The framework wars online are written for developers. If you’re the one paying for the app, the question is simpler: what does it need to do, where does it need to run, and what will it cost to own? Here’s how to choose between full native, React Native, .NET MAUI, and a progressive web app — in plain English.

Reading time · 7 minApp developmentUpdated 2026

“Should we build native or cross-platform?” is one of the first questions on any app project, and most of the answers online are the wrong shape for the person asking. They compare frameworks the way developers argue about them — benchmarks, ecosystems, and taste. If you’re commissioning the app rather than writing it, what you actually need is a way to match the build approach to what the app has to do and what it will cost to run for years.

One thing worth saying up front: whichever route you pick, most of an app’s cost is usually the backend nobody sees — the accounts, data, and business logic on a server. The framework decision below moves the number less than people expect, but it moves the reach, the timeline, and the maintenance commitment a great deal. (For the money side, see what a mobile app costs in South Africa.)

The four routes, quickly

Think of them as a spectrum from lightest and cheapest to heaviest and most capable:

  • PWA (progressive web app). A web app, built once, that installs to the home screen, works offline, and can send push notifications. No app store, no store commission, instant updates.
  • React Native. One JavaScript/TypeScript codebase compiled to real iOS and Android apps. The largest cross-platform community, and a natural fit alongside a React web front-end.
  • .NET MAUI. One C# codebase for iOS and Android (and desktop). The evolution of Xamarin, and the strongest option when your backend is already .NET and Azure — one language, end to end.
  • Full native. Two codebases — Swift/SwiftUI for iOS, Kotlin for Android. Maximum performance and the deepest access to each platform, at the highest cost.
Choosing a build approach — at a glance
RouteBest forIn app stores?Relative cost
PWAContent, booking, and transactional apps; widest low-friction reach.No (installs from the web)Lowest
React NativeMost business apps needing store presence, push, and device features.YesMid
.NET MAUIThe same, when the backend is .NET / Azure and you want one language.YesMid
Full nativePerformance-critical, graphics-heavy, or deeply platform-specific apps.YesHighest
Rule of thumb

Build as light as the app allows, and no lighter. Start at the PWA end and only move up the spectrum when a concrete requirement — a store listing, a hardware feature, a performance ceiling — forces you to. Paying for native before you need it is one of the most common expensive mistakes in app projects.

When a PWA is the smart, cheap answer

Progressive web apps are underrated in South Africa specifically. Where mobile data is expensive and a large share of users are on mid-range Android, a PWA that skips a hundred-megabyte download, works offline, and updates itself silently can beat a native app on the only metric that matters early on: whether people actually install and keep using it. There’s no store approval to wait on, and no 15–30% store commission if you ever charge.

The honest limits: PWAs can now send push notifications on modern Android and iOS, but iOS still restricts some capabilities, and a PWA can’t reach every piece of device hardware or run heavy background work. If you need a store presence for credibility, or deep native features, a PWA is the wrong tool — but for a great many business apps, it is exactly right and by far the cheapest to reach real users with.

When cross-platform is the sweet spot

For most apps that genuinely need to be apps — in the stores, with push notifications, camera and location access, and reliable offline sync — cross-platform is the default worth beating. One codebase serves both iOS and Android, which is faster to build and cheaper to maintain than two native ones, while still producing real, store-shippable apps that feel native to users.

The choice between the two mainstream options is mostly about the rest of your stack:

  • React Native if you want the largest ecosystem and community, or you already have a React web front-end and want to share people and patterns across web and mobile.
  • .NET MAUI if your backend is C# / .NET on Azure. Sharing one language end to end — and often real code, like models and validation — removes a whole seam from the project. It’s the option we reach for most, because it’s where our stack lives.

When full native earns its cost

Native is the right answer when the app’s reason for existing is something only native can do well: heavy real-time graphics or 3D, augmented reality, games, intensive on-device processing, or a design that deliberately diverges between iOS and Android. Building both platforms natively roughly doubles the interface work compared with a single cross-platform codebase, so it earns that premium only when performance or platform depth is the whole point — not as a default.

The .NET MAUI angle — and what happened to Xamarin

If you’ve researched cross-platform on the .NET side, you’ll have seen Xamarin. It matters that Microsoft ended support for Xamarin on 1 May 2024. Its successor, .NET MAUI, carries the same idea — one C# codebase across platforms — into modern tooling. A new Xamarin build quoted in 2026 is a warning sign; the right .NET choice today is MAUI.

We work in the Microsoft ecosystem — C# and .NET on the backend, Azure for infrastructure — so for us .NET MAUI often means one team, one language, and shared code from the database to the phone. That’s a genuine cost and reliability advantage when the backend is already there. We’re candid about the trade-off, though: React Native has the bigger community and a wider pool of ready-made libraries, and for a JavaScript-first team it can be the more pragmatic pick.

What each route costs

Roughly, cost climbs as you move up the spectrum: a PWA is the cheapest way to reach users, cross-platform sits in the middle, and full native on both platforms is the most expensive because you’re building the interface twice. But remember the backend usually dominates the budget regardless of the front-end choice. We put real rand ranges — by complexity, with what drives each band — in the mobile app cost guide, and the wider software cost primer covers where projects spend time in general.

How we’d choose it with you

In practice the decision takes one honest conversation. We look at what the app must do, who your users are and what devices they’re on, whether you need a store presence, and what your backend already looks like — then we recommend the lightest route that meets the requirement, not the most impressive one. Often that’s a PWA or a cross-platform build; sometimes it’s native; occasionally it’s a PWA now and a native app once demand is proven. The goal is the same either way: spend the budget where it actually changes the outcome.

Frequently asked questions

Is a PWA good enough instead of a “real” app?

For a lot of apps, yes. A progressive web app installs to the home screen, works offline, and sends push notifications on modern Android and iOS — with no app-store approval, no store commission, and instant updates. It is the right call for content, booking, and transactional apps that do not need deep device hardware. It is the wrong call when you need heavy graphics, background processing, or the credibility of a store listing.

React Native or .NET MAUI — which is better?

Neither is universally better; they suit different teams. React Native has the larger community and ecosystem and pairs naturally with a JavaScript/React web stack. .NET MAUI lets you share one C# codebase with a .NET and Azure backend, which is a real advantage when the backend is already Microsoft. We usually pick based on your existing stack and where the rest of the system lives.

Is Xamarin still a good choice in 2026?

No. Microsoft ended support for Xamarin on 1 May 2024. Its successor is .NET MAUI, which carries the same C# cross-platform idea forward with modern tooling. If someone quotes you a new Xamarin build in 2026, that is a red flag — the correct choice on the .NET side is now .NET MAUI.

Is cross-platform really cheaper than native?

Usually, because one codebase serves both iOS and Android instead of two. Full native roughly doubles the UI work if you build both platforms well. The catch is that the backend — accounts, data, and business logic on a server — is often the largest cost either way, so the framework choice moves the number less than people expect.

Which is best for a South African audience?

It depends on your users. Where data is expensive and a lot of people are on mid-range Android, a lightweight PWA that avoids a large download and works offline can outperform a native app on adoption. Where you need push-heavy engagement, camera and hardware access, or a store presence, cross-platform is the sweet spot. Full native is reserved for the performance-critical minority.

Tell us what you’re building.

We’ll tell you honestly whether we’re the right fit, what it’ll take, and roughly what it costs — usually within a day.