Flutter App Development: What You Are Signing Up For in 2026

13 min read
07 Oct 2026
Flutter App Development: What You Are Signing Up For in 2026

Flutter is the right choice in 2026 when 3 things are true: the interface is custom and brand-led rather than a copy of each platform's defaults, it must look identical on iOS and Android, and your team has no React investment to reuse. It is the wrong choice when the app must track each operating system's native look release by release, when your engineers already write React, or when the product is mostly glue around third-party native SDKs. Everything else is detail hanging off those 3.

Most comparisons start in the wrong place, on frame rates and code sharing percentages. What decides whether Flutter was a good call is what happens after launch. Flutter ships a new stable release every 91 days on average, and in the 2 years we checked, no stable line received a single hotfix after the next one shipped. Your app depends less on Flutter than on its plugins: 26 everyday plugins pulled 187 packages into a fresh app when we measured on 6 October 2026, and the newest versions of 2 of them could not be installed together. The failure is ordinary: a team adds plugins with open version ranges, the resolver quietly picks a release 14 major versions old, and nobody notices until a store deadline forces an upgrade.

So the decision is less about the framework than about who owns the dependency graph. This post puts numbers on that.

What Flutter is in 2026, and what changed in 2 years

Flutter draws every pixel itself. It does not map your widgets onto the platform's buttons and lists. It renders its own, through its own engine, which is why a Flutter app looks the same on every device and why it does not automatically pick up a new iOS or Android visual style.

Impeller is now the renderer on iOS, with no way back. It became the default on iOS in Flutter 3.10 in May 2023, and Skia was removed from iOS entirely in 3.29 in February 2025. On Android, Impeller is the default on API 29 and above, while devices on API 28 and below still use the legacy Skia backend. The 2026 roadmap sets removing Skia on Android 10 and above as a goal, so that transition is not finished.

Swift Package Manager replaced CocoaPods as the iOS default in 3.44, released May 2026. By the 3.47 release notes, 92 of the top 100 iOS plugins had migrated and CocoaPods support was in maintenance mode. The Android build moved the same way: Flutter's Gradle plugin was rewritten in Kotlin in 3.32, and 3.44 adopted Android Gradle Plugin 9, a breaking change for existing projects.

The current stable is 3.47.6 with Dart 3.13.5, published 1 October 2026. Since 3.47, the minimum iOS version is 15, and the default template targets Android API 36 with a minimum of API 24.

Dart's direction changed once, publicly. The Dart team stopped work on macros on 29 January 2025, and code generation through build_runner remains the supported route. The 2026 roadmap also notes that contributors from outside Google now outnumber Google employees on the project, which matters if your risk register has a line about single-vendor dependence. The community fork announced in October 2024, Flock, has published nothing on its blog since November 2024.

When Flutter is the right call, and when it is not

Decide on the interface and the team, not on the benchmark. Flutter's real advantage is control. A design system with custom typography, motion and components renders the same way everywhere, and the designer's file is what ships. If your brand team has opinions about every pixel, that is worth more than any benchmark.

Two panel comparison of the app types where Flutter is a good fit against those where it is a poor fit.

Identical behaviour on both platforms is the second argument. Because Flutter owns rendering, a layout bug is usually 1 bug, not 2, and a visual change made once appears on both platforms.

A team without React to reuse is the third. Dart's syntax is familiar to anyone who writes Java, Kotlin, Swift or TypeScript, and the SDK ships its own formatter, analyser, test runner and profiling tools. If you are hiring a mobile team from scratch, Flutter does not penalise you for not already having web engineers.

An app that must look native, release by release, is where it costs you. When Apple or Google change their visual language, native apps and React Native apps inherit much of it. A Flutter app keeps looking exactly how you built it until someone redesigns it. For most products that is a feature. For an app whose selling point is feeling like part of the operating system, it is not.

A company that already writes React is the clearest reason to choose something else. Our React Native app development guide covers that path and its own costs.

An app that is mostly third-party native SDKs is the quiet trap, in Flutter as anywhere. Each SDK needs a Flutter plugin, and each plugin is native code you will upgrade every quarter. The next 2 sections are about why that matters more than it looks.

Flutter and React Native run on different clocks

The useful comparison is not speed. It is how often each framework asks you to move. We read every release date from each project's official source on 6 October 2026.

Flutter

React Native

Expo SDK

New release every

91.2 days on average, 3.22 to 3.47

59.7 days on average, 0.76 to 0.87

3 SDKs a year

Versions that receive fixes

In practice only the current stable

The latest 3 minors

Each SDK pinned to 1 React Native version

Source

Official release manifest

npm registry

Expo docs

Flutter's model is fewer releases with a shorter tail. The documentation says stable updates about every 3 months, and that hotfixes cover high severity, high impact or security issues. It defines no support window for older stables. Across every stable line from 3.22 to 3.44, the last hotfix shipped before the next stable did, between 0 and 36 days earlier. If you stay on an older stable, you stop receiving fixes as soon as the next one ships.

Popularity is close. In the 2024 Stack Overflow Developer Survey, 9.4 per cent of all respondents and of professional developers had used Flutter in the past year, against 8.4 and 9.0 per cent for React Native. The 2025 survey dropped the question.

Neither number decides it. Both frameworks ship real apps at large scale. The choice is about your interface, your team, and which upgrade rhythm you are prepared to staff.

What 26 common plugins pull into your app

A fresh Flutter app is lean. flutter create on 3.47.6 gave us an app whose only runtime dependency beyond the SDK is an icon font. The engine, rendering and core widgets ship inside Flutter itself, so there is no native code from third parties until you add it.

You will add it. We picked 26 plugins covering what a typical commerce or booking app needs: Firebase core, messaging, analytics and crash reporting, Google and Apple sign-in, maps and location, camera, image picker and barcode scanning, video and web views, links and sharing, preferences, secure storage, files and SQLite, biometrics, permissions, local notifications, in-app purchases, connectivity, and device and package info. We added all 26 to the fresh app on 6 October 2026 and let the resolver choose versions.

Hub and spoke diagram showing 26 common Flutter plugins resolving to 187 packages, with their publishers, the 43 containing native code, and a version conflict.

26 plugins became 187 packages. Flutter plugins are federated: url_launcher is a front package plus separate implementation packages for Android, iOS and each desktop platform, plus a shared interface. 43 of the 187 packages contain Android or iOS native code. Those are what break when Android Gradle Plugin, Xcode or the Flutter engine moves.

Google publishes 15 of the 26. 11 come from the verified flutter.dev publisher and 4 from firebase.google.com. 4 more come from the Flutter Community organisation, and the remaining 7 come from 5 independent publishers. That is a stronger first-party base than most ecosystems offer. It is not the whole graph, and the plugins outside Google are often the ones closest to your product: notifications, permissions, location, secure storage.

The newest versions of 2 popular plugins could not be installed together. On 6 October 2026, connectivity_plus 7.3.2 and flutter_local_notifications 22.3.1, each the latest release, failed to resolve in the same app. The cause was dbus, a Linux desktop dependency that a mobile app never runs: connectivity_plus needs dbus 0.8 through a package called nm, while the Linux implementation of flutter_local_notifications needs 0.7. A conflict on a platform you do not ship still blocks the platforms you do.

Open version ranges hide it. With every plugin set to any, the resolver did not fail. It silently chose flutter_local_notifications 8.2.0, 14 major versions behind the latest, and moved on. A team that writes any to get unstuck has just shipped notification code years older than the documentation it is reading.

1 plugin had gone a year without a release. google_sign_in 7.2.0, published by flutter.dev, was 384 days old on the day we checked. Every other plugin in the set had shipped within the previous 4 months. A first-party publisher does not guarantee a fresh release.

Ask any vendor for this list before a build starts. For each plugin: the publisher, whether it carries native code, the date of its last release, and whether it resolved alongside everything else at its newest version. That list is short work and it predicts year 2 better than any framework comparison.

The upgrade cycle is the real cost of Flutter

Flutter shipped 10 stable releases between May 2024 and August 2026, an average of 91.2 days apart. We read every date from the official Flutter release manifest. The documentation describes the cadence as about every 3 months, and the 2026 roadmap plans at least 4 stable releases this year.

Bar chart of how many days each Flutter stable release from 3.22 to 3.47 received hotfixes, ranging from 50 to 100 days, with only the current stable still receiving them.

Each stable received hotfixes for between 56 and 100 days, then stopped. The current stable, 3.47, has received 6 hotfixes in its first 50 days. Plan on moving every quarter, because that is the only way to stay on a line that still gets fixes.

Every release carries migration work. The official breaking changes page lists 65 entries across the 10 stables from 3.22 to 3.47, between 3 and 10 per release, counting deprecations and migration guides. 4 more are already listed for the next stable, including the move of Material and Cupertino into standalone packages.

Flutter stable

Breaking change entries

3.22

6

3.24

4

3.27

6

3.29

6

3.32

10

3.35

10

3.38

6

3.41

5

3.44

9

3.47

3

The stores set the deadline. Google Play has required every app update to target Android API 36 since 31 August 2026. Flutter's default template targeted API 35 in 3.32 and API 36 from 3.35, released 14 August 2025. An app created before that and never upgraded must raise its target and retest all 43 native packages before its next update is accepted. Apple has required apps to be built with the iOS 26 SDK, which means Xcode 26, since 28 April 2026.

Google adds a second deadline for memory page sizes. Since 1 November 2025, new apps and updates targeting Android 15 or later must support 16 KB memory pages. Flutter 3.38 made NDK r28 the default, which the release notes describe as preparation for that rule. Every plugin that ships compiled C or C++ code has to support it too.

The policy that works is boring. Take every stable within 4 weeks of release. Never skip 2, because 2 quarters of breaking changes landing together is how a routine upgrade becomes a long bisecting exercise. Commit pubspec.lock, pin every plugin to a caret range, and treat any as a bug.

Over-the-air updates: possible, but not from Google

Flutter has no official over-the-air update mechanism. Every change, including a 1 line Dart fix, goes through a store release unless you add a third-party service. The 2026 roadmap says the Dart team is investigating interpreted bytecode for on-demand code delivery. That is research, not a feature you can plan on.

Shorebird is the third-party option. It patches Dart code on Android, iOS, macOS, Windows and Linux, using its own fork of the Flutter engine. On iOS it runs patches through a Dart interpreter, which its documentation cites as the basis for compliance with Apple's rules.

Shorebird pricing as published on 6 October 2026:

Plan

Monthly price

Patch installs included

Above that

Free

$0

5,000

Not available

Pro

$20

50,000

$1 per 2,500

Business

$400

1,000,000

$1 per 2,500

Enterprise

Custom

Custom

Custom

Apple and Google both allow it within limits. Apple's Developer Program License Agreement, section 3.3.1(B), permits downloaded interpreted code if it does not change the app's primary purpose, bypass OS security, or create a store for other code. Google Play's Device and Network Abuse policy exempts code running in a virtual machine or interpreter. Shorebird's own terms forbid using it to change an app's purpose.

The technical boundary is stricter than the legal one. A patch replaces Dart code. It cannot add a plugin, change native code, request a new permission or move you to a new Flutter version. The trade-off to weigh is that you are now running a fork of the engine, so each Flutter upgrade also depends on Shorebird supporting that version.

Zyneto banner offering a Flutter plugin audit covering publishers, native code and version conflicts.

The native code you will still write

Flutter does not remove native code. It moves it behind an interface. Push notification entitlements, background execution, app signing, Gradle and Xcode configuration, and every SDK without a maintained plugin are still Swift and Kotlin problems with Swift and Kotlin error messages.

Flutter's documentation lists 2 ways to call your own native code. Platform channels pass messages between Dart and the host platform. Pigeon generates type-safe code for both sides of those channels, so you avoid hand-written message parsing. Since 3.38, the recommended way to bind native libraries directly is the package_ffi template with build hooks.

Direct interop is closer but not finished. jnigen, which generates Dart bindings for Java and Kotlin, reached version 1.0 on 3 September 2026, although the Dart documentation still labels Java interop experimental. Swift interop still needs an Objective-C wrapper, and the Swift binding generator is an experimental project at version 0.2. Budget for platform channels and Pigeon on any project that starts this year.

The team shape that works is Flutter engineers with 1 native owner. For a team of 5, that is 4 engineers building features in Dart and 1 who owns the iOS and Android projects, the native plugins and the upgrade calendar. That owner needs to be comfortable in both Xcode and Gradle, not a senior specialist in each.

Regulated apps raise the bar on that owner. Our iCareHeal build is a practice management platform for clinics, with scheduling, telemedicine, health records and patient messaging, built in Flutter on mobile with Flask and MongoDB behind it. Patient records set the bar for access control, audit and retention from the first sprint rather than in a later hardening pass, which makes the native owner's role larger, not smaller.

Who builds on Flutter, and what they publish

Google's own showcase carries the strongest numbers, so read them as Google's. The Google Pay case study reports a codebase reduced from 1.7 million to 1.1 million lines, an estimated 60 to 70 per cent of engineering time saved, and around 180 engineers on the app. The page is undated, and the context suggests 2020.

Nubank reports faster merges. Its showcase page says pull requests on Flutter merge in 9.9 minutes against a 70.45 minute average across its platforms, with a 30 per cent better merge success rate, for more than 48 million customers.

Universal Studios and BMW report scale. Universal's page, listed in December 2023, reports a 45 per cent smaller codebase, a 0.1 per cent crash rate and a 44 per cent shorter release cycle. The My BMW app launched in July 2020 in 47 countries, and every build produces 96 variants.

Toyota shows where Flutter goes beyond phones. Its showcase entry, listed in May 2026, covers infotainment in the 2026 RAV4 and Lexus ES. If your product roadmap includes embedded screens or desktop, Flutter's single renderer is a bigger advantage there than on mobile.

For your decision, the relevant comparison is with React Native, which solves the same problem by using the platform's own views. Our Flutter app development team works with both, and the right answer depends on your interface and your team rather than on either framework's showcase.

Zyneto banner offering to move Flutter apps forward one quarterly stable release at a time ahead of store deadlines.

How to start a Flutter project so year 2 is cheap

Write the plugin list before the first sprint. Every plugin, its publisher, whether it has native code, its last release date, and whether it resolves at its newest version alongside everything else. Any plugin that has gone 6 months without a release is a risk you are choosing deliberately or replacing now.

Pin versions from day 1. Caret ranges in pubspec.yaml, pubspec.lock committed, and a CI check that fails on any. When the resolver cannot satisfy everything, you want an error you can read, not a silent downgrade.

Put the upgrade on the calendar. Every new stable gets a ticket, an owner and a date within 4 weeks of release. Read the breaking changes page for that release before you start, not after the build fails.

Build both platforms in CI from the first commit. The Android Gradle Plugin 9 change and the Swift Package Manager switch in 3.44 are both build-system changes that surface when a native build runs, not in Dart. If nobody builds iOS until release day, that is when you find out.

Decide on over-the-air updates before launch. Either accept that every fix is a store release, or adopt Shorebird knowingly, including its pricing and the engine fork. Changing your mind after launch means a native release anyway.

Record the 2 store deadlines that bind you. Google raised its target API requirement on 31 August in both 2025 and 2026, and Apple announced its 2026 SDK minimum almost 3 months before it applied. Each blocks uploads on the day it lands.

The short version. Flutter in 2026 is a mature framework with its own renderer, a strong first-party plugin base and a predictable quarterly release. Pick it when your interface is custom, your platforms must match, and your team has no React to reuse. The cost of choosing it is not the build. It is a new stable every 91 days with no fixes for the old one, 65 breaking change entries in 2 years, and a plugin graph where 26 everyday plugins become 187 packages, 43 of them native. Treat that graph as something you own, not something you install.

FAQs

Yes, when the interface is custom, must look identical on iOS and Android, and the team has no React codebase to reuse. Flutter renders every pixel with its own engine, ships a new stable release about every 3 months, and Google publishes many of its core plugins. It is a weaker choice when the app must follow each platform's native look or the company already writes React.

Flutter released a new stable version every 91.2 days on average between 3.22 in May 2024 and 3.47 in August 2026, according to the official Flutter release manifest. The documentation describes the cadence as about every 3 months, and the 2026 roadmap plans at least 4 stable releases this year. The latest stable on 6 October 2026 is 3.47.6.

In practice, no. Flutter defines no support window for older stable releases, and its hotfix process covers high severity, high impact or security issues. In the official release manifest, no stable line from 3.22 to 3.44 received a hotfix after the next stable shipped. Staying on supported code means upgrading to each new stable, roughly once a quarter.

Not officially. Google provides no over-the-air update mechanism for Flutter, so every change goes through a store release by default. Shorebird, a third-party service built on its own fork of the Flutter engine, can patch Dart code on Android and iOS. On 6 October 2026 its plans ran from free for 5,000 patch installs a month to $400 a month for 1,000,000. Patches cannot change native code or plugins.

Google publishes many core plugins through the verified `flutter.dev` publisher, including `camera`, `google_maps_flutter`, `video_player`, `webview_flutter`, `url_launcher`, `shared_preferences` and `image_picker`, and the Firebase plugins through `firebase.google.com`. In a set of 26 common plugins we checked on 6 October 2026, Google published 15. Notifications, permissions, location and secure storage came from other publishers.

Impeller is the only renderer on iOS since Flutter 3.29 removed Skia there in February 2025. On Android, Impeller is the default on API 29 and above, while devices on API 28 and below still use the legacy Skia backend. Flutter 3.47 made Impeller the default on macOS, Windows and Linux as well. Flutter on the web still renders with Skia.

You need at least 1 engineer who can work in both native projects, not a full team for each platform. Push entitlements, background execution, app signing, Gradle and Xcode configuration, and any SDK without a maintained plugin are native work. Flutter calls native code through platform channels or Pigeon, and direct Swift interop is still experimental in 2026.

Vikas Choudhary

Vikas Choudhary

Vikas has around fifteen years of experience building software and now builds generative AI systems at Zyneto. His work covers retrieval augmented generation, agentic AI, knowledge graphs, AI memory, and the evaluation and guardrails that decide whether any of it is safe to put in front of customers. He has shipped enterprise copilots, document AI, chatbots and predictive analytics for e-commerce, fintech and marketing teams, and works day to day in Python, JavaScript and SQL. He follows multimodal models, business process automation and enterprise AI security closely, and mentors engineers moving into AI. He writes about architecture, inference cost and the failure modes that only show up at production scale.

Let's make the next big thing together!

Share your details and we will talk soon.

Phone

We respond to all inquiries within 1 hour.

WhatsApp
Email
Book a Meeting