The Framework Decision Nobody Talks About Honestly
Every founder building a mobile MVP gets hit with the same question within the first week: PWA, React Native, or Flutter? And every founder gets terrible advice, usually from a developer who has only worked with one of the three and treats it like a religion.
Here is the truth nobody wants to say out loud: all three can work for your MVP. The question is not which one is "best." The question is which one is cheapest and fastest for your specific product, your specific team, and your specific users. Get that wrong and you burn $30K-$50K and three months rebuilding on a different platform.
We have shipped MVPs on all three platforms across 200+ projects. Some of the best products we have built were PWAs. Some were React Native. A few were Flutter. The pattern is not about the technology. It is about matching the technology to the product requirements and the constraints you actually have, not the ones you wish you had.
This guide gives you the honest comparison, with real costs, real timelines, and real examples. No fanboy energy. Just the tradeoffs that matter when you are spending your own money or your investors' money to validate an idea.
PWA: The Underdog That Wins More Than You Think
Progressive Web Apps are regular web apps that use service workers, a web manifest, and modern browser APIs to deliver an app-like experience. Users can install them on their home screen, receive push notifications (yes, even on iOS since Safari 16.4), and use them offline. They run in the browser engine, which means you build once and deploy everywhere with a single URL.
Cost and Timeline
A PWA MVP typically runs $15K-$40K and takes 4-8 weeks to build. That is roughly half the cost and half the timeline of React Native or Flutter. Why? Because you are building a web app. Your developers use HTML, CSS, JavaScript, and whatever frontend framework they already know. Next.js, React, Vue, Svelte, it does not matter. If they can build a website, they can build a PWA.
You also skip the app store entirely. No $99/year Apple Developer fee. No 2-4 week review cycles. No fighting with App Store Review Guidelines Section 4.2 about your app being "not sufficiently different from a mobile web browsing experience." You push code, users get the update instantly.
What PWAs Do Well
- Instant deployment: Push to production and every user has the latest version. No waiting for app store reviews, no begging users to update.
- SEO and shareability: Your app is a URL. Users can share it, Google can index it, and you can run ads that link directly to any screen in your product.
- Lower development cost: One codebase, one deployment pipeline, one team of web developers. No Xcode, no Android Studio, no bridging native modules.
- Offline support: Service workers cache assets and data for offline use. Not as seamless as native offline, but good enough for most content-heavy apps.
Where PWAs Fall Short
The limitations are real and they matter. PWAs cannot access NFC, Bluetooth Low Energy is limited (Web Bluetooth exists but is flaky and unsupported on iOS), HealthKit and Google Fit are completely off the table, and background processing is unreliable. Camera and GPS work fine, but anything that requires deep hardware integration is a dead end.
Performance sits around 60-70% of native. For a content feed, a dashboard, or a B2B tool, that is perfectly fine. For a photo editor with real-time filters, a fitness tracker with constant sensor polling, or a game with complex animations, it is not enough.
The app store distribution problem is also real. Plenty of users still go to the App Store or Google Play to discover apps. If your growth strategy depends on app store search rankings, a PWA removes that channel entirely. You can list PWAs on the Google Play Store using TWA (Trusted Web Activity), but Apple still does not allow it in any meaningful way.
Real Examples
Starbucks rebuilt their mobile ordering experience as a PWA and saw a 2x increase in daily active users. Twitter Lite (now X Lite) is a PWA that reduced data consumption by 70%. Pinterest's PWA increased user engagement by 60%. These are not small companies experimenting. These are billion-dollar products choosing PWAs because the tradeoffs made sense for their use case.
React Native: The Safe Bet for Most B2C MVPs
React Native lets you write JavaScript (or TypeScript) and render actual native UI components on iOS and Android. It is not a WebView wrapper. When you use a ScrollView in React Native, it renders a UIScrollView on iOS and an android.widget.ScrollView on Android. The result feels native because it is native, at least at the UI layer.
Cost and Timeline
A React Native MVP typically costs $30K-$80K and takes 8-14 weeks to build. The wide range depends on complexity. A basic marketplace app with auth, listings, messaging, and payments sits around $40K-$50K. Add features like real-time video, complex animations, or offline-first data sync and you push toward $70K-$80K.
The Expo ecosystem has changed the economics dramatically. Expo provides managed build services (EAS Build), over-the-air updates (EAS Update), push notifications, file system access, camera, location, and dozens of other native APIs out of the box. You do not need to touch Xcode or Android Studio for most apps. Five years ago, React Native meant constant fights with native build tools. In 2026, Expo handles 90% of that pain.
The New Architecture Changes Everything
React Native's New Architecture (Fabric renderer + TurboModules + JSI) shipped as the default in React Native 0.76. The performance gap with native has narrowed significantly. You get synchronous native module calls, concurrent rendering, and direct JavaScript-to-native communication without the old bridge serialization bottleneck. Real-world performance now sits at 85-95% of fully native, depending on the use case. For most consumer apps, users cannot tell the difference.
Why React Native Wins for Most MVPs
- Talent pool: JavaScript is the most widely known programming language. Finding React Native developers is dramatically easier than finding Flutter (Dart) or native iOS (Swift) developers. When you are hiring your first 2-3 mobile engineers, this matters more than any technical benchmark.
- Ecosystem depth: React Native has packages for everything. Stripe integration, maps, video players, chat SDKs, analytics, A/B testing. Most third-party services ship a React Native SDK. With Flutter, you sometimes find yourself writing platform channels to bridge to an iOS or Android SDK that does not have a Dart wrapper yet.
- Code sharing with web: If you also have a web app built in React, you can share business logic, API clients, state management, and even some UI components (using React Native Web) between your mobile and web codebases. This is a genuine advantage that saves weeks of development.
- Native API access: React Native can access any native API through native modules. NFC, BLE, HealthKit, ARKit, background geolocation. If the native SDK supports it, React Native can use it. The Expo modules API makes writing custom native modules straightforward even for developers who do not know Swift or Kotlin deeply.
For a deeper comparison of React Native against Flutter specifically, we break down the framework-level tradeoffs in detail.
Flutter: Pixel-Perfect UI at the Cost of a Smaller Ecosystem
Flutter takes a fundamentally different approach. Instead of rendering native platform UI components, it draws every pixel itself using the Skia (and now Impeller) rendering engine. Think of it as a game engine for apps. This gives Flutter complete control over every pixel on screen, which means your app looks and behaves identically on iOS, Android, web, Windows, macOS, and Linux.
Cost and Timeline
Flutter MVPs cost roughly the same as React Native: $30K-$80K over 8-14 weeks. The slightly faster widget development cycle (hot reload is genuinely excellent) is offset by the smaller package ecosystem and the occasional need to write platform-specific code for missing plugins.
Where Flutter Genuinely Excels
- UI consistency: If your brand demands pixel-perfect consistency across platforms, Flutter delivers it effortlessly. There is no "this button looks slightly different on Android" problem because Flutter does not use platform buttons. It paints its own.
- Complex animations: Flutter's rendering pipeline is built for 60fps+ animations. Building a custom animated onboarding flow, a card-swiping interface, or a data visualization with animated transitions is dramatically easier in Flutter than in React Native. The animation APIs are first-class and well-documented.
- Multi-platform from one codebase: Flutter's desktop and web support has matured significantly. If your MVP needs to run on mobile, web, and desktop, Flutter lets you ship all three from a single codebase with a higher degree of UI fidelity than React Native Web offers.
- Performance for complex UIs: The Impeller rendering engine (default since Flutter 3.16) eliminates shader compilation jank that plagued earlier Flutter versions. For apps with heavy visual elements, lots of layered animations, or custom drawing, Flutter's rendering architecture outperforms React Native.
The Dart Problem
Dart is a good language. It has null safety, strong typing, excellent async/await, and productive tooling. But almost nobody knows it outside of Flutter. Your hiring pool shrinks by 5-10x compared to JavaScript/TypeScript. Dart developers are harder to find, more expensive to hire, and harder to replace when they leave.
This is not a fatal flaw. Experienced developers pick up Dart in 2-3 weeks. But when you are a startup trying to move fast with limited budget, the overhead of onboarding developers to an unfamiliar language adds friction. Every week of ramp-up time is a week you are not shipping features to users.
Real Examples
Google Pay, BMW's app, Alibaba's Xianyu (500M+ users), and Toyota's infotainment system all run on Flutter. These are apps where UI polish and cross-platform consistency justified the investment in a smaller ecosystem. Notably, many of these companies have the resources to build custom plugins for any missing functionality, a luxury most startups do not have.
Head-to-Head Comparison: Cost, Timeline, and Team
Here is the comparison table that actually matters when you are planning an MVP budget and timeline.
Development Cost
- PWA: $15K-$40K. Lowest cost because you are building a web app with enhanced capabilities. One deployment target, no app store fees, no native build tooling.
- React Native: $30K-$80K. Mid-range. Expo reduces tooling overhead, but you still need to manage iOS and Android builds, app store submissions, and platform-specific testing.
- Flutter: $30K-$80K. Similar to React Native. Slightly faster UI development is offset by plugin gaps and the Dart learning curve for new team members.
Time to First Deploy
- PWA: 4-8 weeks to MVP. Deploy to production in minutes. No app store review wait.
- React Native: 8-14 weeks to MVP. Add 1-4 weeks for first app store submission and review.
- Flutter: 8-14 weeks to MVP. Same app store timeline as React Native.
Team Size and Composition
- PWA: 1-2 frontend developers. Any web developer can contribute. Designers work in familiar web paradigms.
- React Native: 2-3 developers. At least one should have native mobile experience for debugging platform-specific issues. JavaScript/TypeScript expertise required.
- Flutter: 2-3 developers. Dart expertise required (or budget 2-3 weeks for ramp-up). At least one should understand native iOS and Android for plugin development.
Update and Iteration Speed
- PWA: Instant. Push code, users get it immediately. No app store review, no version fragmentation.
- React Native (with Expo): Near-instant for JS changes via EAS Update (over-the-air). Native changes require a new build and app store review.
- Flutter: Requires app store review for all updates. Google has Shorebird for OTA updates in Flutter, but it is less mature than Expo's solution.
Understanding the broader web app vs mobile app decision helps frame these tradeoffs in the context of your overall product strategy.
When Each Approach Wins: Decision Framework
Stop reading benchmark comparisons and Reddit threads. Here is when each approach is the right call based on what you are actually building.
Choose a PWA When:
- Content-heavy apps: News readers, recipe apps, documentation tools, knowledge bases. If your core experience is consuming and searching content, a PWA delivers 95% of the native experience at 40% of the cost.
- B2B tools and dashboards: Internal tools, admin panels, CRM interfaces, project management apps. Your users are on desktop half the time anyway, and they care about functionality, not app store presence.
- Rapid validation: You need to test a hypothesis in 4 weeks, not 12. A PWA lets you ship, measure, learn, and pivot without the overhead of native builds and app store reviews. If the idea validates, you can always rebuild as native later with real user data guiding your decisions.
- Budget under $30K: If your total mobile budget is under $30K, a PWA is your only realistic option for a quality product. Trying to build a React Native or Flutter app for $20K results in a buggy, half-finished mess that hurts your brand.
Choose React Native When:
- Most B2C consumer apps: Social apps, marketplace apps, e-commerce, food delivery, ride-sharing. These need push notifications, smooth native scrolling, camera access, location tracking, and app store distribution. React Native handles all of this with a mature ecosystem.
- You have JavaScript/TypeScript developers: If your existing team knows React, the ramp-up to React Native is measured in days, not weeks. This is an enormous advantage for startups that cannot afford to hire specialized mobile developers.
- You need native API access: NFC payments, Bluetooth peripherals, health data integration, background location tracking, AR features. React Native's native module system (especially with Expo Modules) gives you full access to platform APIs.
- You also need a web app: React Native Web lets you share significant code between your mobile app and a React web app. If your product requires both a mobile app and a web dashboard, React Native reduces total development effort by 30-40%.
Choose Flutter When:
- Pixel-perfect branded experiences: If your app IS your brand and every animation, transition, and micro-interaction needs to be identical across platforms, Flutter's custom rendering gives you control that React Native cannot match without significant native code.
- Complex animations and custom UI: Finance apps with animated charts, creative tools with gesture-driven interfaces, music apps with custom audio visualizations. Flutter's rendering pipeline handles these use cases with less effort.
- Desktop + mobile from day one: If you genuinely need iOS, Android, and desktop (Windows/macOS) apps from a single codebase, Flutter's multi-platform support is more mature than React Native's.
- You are building a highly visual product: Apps where the UI itself is a competitive differentiator. Think Duolingo-style gamified experiences or interactive educational content. Flutter's widget system and animation framework make these products faster to build.
The Hybrid Strategy Most People Miss
Here is a strategy that saves startups a lot of money and time: start with a PWA, then go native if validated.
Build your MVP as a PWA in 4-6 weeks for $15K-$25K. Ship it. Get users. Measure engagement, retention, and the specific pain points where PWA limitations actually affect your users (not hypothetical limitations, real ones that real users complain about).
If your PWA validates the idea and you discover that users genuinely need push notifications that work reliably on every device, or you need Bluetooth for hardware pairing, or your app store presence is hurting distribution, then invest $40K-$60K in a React Native or Flutter rebuild. At that point you have real user data, validated features, and a clear understanding of which native APIs you actually need.
This approach costs $55K-$85K total but gives you a working product in 4 weeks instead of 12, and the native rebuild is faster because you already know exactly what to build. Compare that to spending $60K on a native MVP that takes 14 weeks and might pivot completely after launch.
We have seen startups waste $100K+ building a polished native app for a product idea that did not resonate with users. A PWA-first approach would have told them that in 4 weeks for $20K. The remaining $80K could have funded the pivot that actually worked.
This does not work for every product. If your MVP requires NFC, BLE, or health data from day one, you need native from the start. But for the 60-70% of MVPs where the core value is in the content, workflow, or social interactions, not the hardware integration, PWA-first is the financially smarter path. For more on this decision, our breakdown of native vs cross-platform approaches covers the long-term maintainability angle.
Making Your Decision and Moving Forward
The framework decision should take you one afternoon, not one month. Here is the shortcut: answer three questions and you have your answer.
Question 1: Do you need device hardware APIs beyond camera and GPS? If yes (NFC, BLE, HealthKit, ARKit, background processing), eliminate PWA. Choose between React Native and Flutter based on your team's language preference and UI complexity needs.
Question 2: Is your budget under $30K? If yes, build a PWA. Trying to ship a quality native app for under $30K does not work unless you have a co-founder who is a mobile developer willing to work for equity.
Question 3: Is pixel-perfect custom UI your primary differentiator? If yes, lean Flutter. If no (and it is no for most apps), lean React Native for the larger ecosystem and talent pool.
That decision tree handles 80% of cases. The remaining 20% involve nuances around existing team expertise, long-term platform strategy, and specific third-party SDK requirements that deserve a real architecture conversation.
Whatever you choose, commit to it for your MVP. Do not hedge by "keeping options open" with abstraction layers or cross-framework wrappers. Ship the MVP, validate the product, and make your long-term platform decision with real data instead of conference-talk opinions.
The fastest way to get clarity on the right approach for your specific product is to talk to someone who has shipped on all three platforms. Book a free strategy call and we will map your product requirements to the platform that gives you the best shot at launching fast and learning faster.
Need help building this?
Our team has launched 50+ products for startups and ambitious brands. Let's talk about your project.