Skip to content
PRS India

Flutter 3 · Dart 3 · Impeller

Flutter Development

Flutter draws every pixel itself. That is why it is right for a product led by its brand, with a strong custom design. It is wrong when you need the phone's own look and feel. We build it, and we will tell you which one you have.

Last updated

  • 60fps on mid-range Android
  • Pixel-identical across devices
  • Impeller: no shader jank
  • Riverpod or Bloc, decided once
Flutter Development
Why Flutter

It draws every pixel itself. That is the gift and the trade.

Flutter does not ask iOS or Android to draw anything. It brings its own engine and paints the screen itself. So a Flutter app looks exactly the same on an iPhone 16 and on a four-year-old Samsung with a heavily changed Android look. If your product is led by its brand and has a strong custom design, that is a real gift. What the designer drew is what every user sees. There are no surprises between phones, and no QA testing for each OS. If your product needs to feel like the phone itself, with Cupertino style, system menus and the scroll feel an iPhone user knows, then you must rebuild what native gives you free. We will tell you so before you commit.

Talk to a Flutter engineer
60fps
On mid-range Android

Held steady through complex animated screens, because Impeller prepares shaders when the app is built.

95%
Code shared

Between iOS and Android. This is higher than React Native, because Flutter does the drawing on both.

1.9s
Cold start

On a mid-range Android phone, AOT-compiled to native ARM code. Not on a top phone, and not on wifi.

0
Flutter web builds

We do not ship it. It draws to a canvas, and search engines cannot see it. Public websites use Next.js.

How we actually build it

Flutter's big bet is that it should not ask the phone to draw anything. It brings its own drawing engine and paints every pixel itself. That one choice explains what people love about it and what they complain about. Understand it, and you can decide if Flutter is right for you.

Impeller, and why jank stopped being the conversation

The old Skia renderer prepared shaders while the app was running. That is why early Flutter apps were known to stutter the first time you opened a screen with a new animation. Impeller prepares them when the app is built. It is now the default on both iOS and Android. So "Flutter jank" is mostly no longer a real problem. We hold 60 fps on mid-range Android phones through complex, animated screens, and 120 fps on phones with a screen that can show it.

The consequence of owning the pixels

Because Flutter draws everything, your app looks exactly the same on an iPhone 16 and on a four-year-old Samsung with an old Android look. For a brand-led product with a strong custom design, this is a real gift. What the designer drew is what every user sees. There are no surprises between phones, and no QA testing for each OS.

It is also the cost. A Flutter app does not get new platform UI behaviour on its own. If you want an app that feels like a native iOS app, with Cupertino style, system menus and the exact scroll feel an iPhone user knows, you must rebuild it yourself. We use Flutter where the design belongs to the brand. We use native or React Native where the design belongs to the phone.

State management, decided once, on day one

Flutter offers about nine ways to manage state. The arguments about them have probably cost more engineering hours than they have saved. We use Riverpod for most apps. We use Bloc when the app is driven by events and a record of every state change has real value, such as regulated fintech. What matters is that the choice is made once, written down, and checked in review. It should not be argued again in every pull request by whoever read a blog post last.

Dart, honestly

Dart 3 with sound null safety, pattern matching and sealed classes is a pleasant language. The tools, such as hot reload, the analyzer and dart format, are better than what most tools offer. The cost is real, though. Dart is used almost nowhere outside Flutter. You cannot share checks, types or business rules with a TypeScript web front end, and the hiring pool is smaller. If you already have a React web product, writing the same thing twice is the strongest reason to choose React Native instead. We will tell you so.

What we do not use Flutter for

Flutter web. It draws to a canvas, sends a large download, and search engines can hardly see it. For anything public on the web, the answer is Next.js. We would not pretend otherwise just to keep a project in one language.

The honest part

When Flutter is the right call — and when it is not.

  Choose Flutter Choose something else
Brand-led custom design system Yes. Flutter draws every pixel, so the design is the same everywhere. No surprises between phones, and no QA testing for each OS. Little reason to look elsewhere. This is Flutter at its strongest.
You already have a React web product You will write your checks, types and business rules twice, in two languages, forever. Count that cost honestly. React Native. Sharing logic across web and mobile is usually worth more than any drawing advantage Flutter has.
Animation-heavy interface Yes. Impeller prepares shaders ahead of time, animations run on their own thread, and 60fps on mid-range Android is normal. React Native with Reanimated is now very close. This is no longer the deciding reason it was in 2021.
App must feel platform-native No. Cupertino widgets copy the look of iOS but are not iOS. Your users will feel the difference when they scroll. Native Swift and Kotlin, or React Native, which uses the real phone parts underneath.
Public-facing web app No. Flutter web draws to a canvas, sends a heavy download and search engines cannot see it. Next.js. Run two sets of code and keep your search traffic. We will not pretend otherwise to sell you one language.
Hiring in India A smaller pool than React. Web teams do not already know Dart the way they know TypeScript. React Native, if hiring fast is a real limit for you. Be honest with yourself about whether it is.
What we build

Flutter work we take on.

Brand-led consumer apps

Where the design is the product and it must look the same on every phone, from a top phone to a ₹10,000 Android.

Fintech apps

Bloc for a checkable record of every state change, fingerprint or face unlock, certificate pinning, and security built to pass review.

Offline-first field apps

Drift or Isar as a real database on the phone, a queue of saved changes, and clear rules for clashes on each record, for phones that lose signal for hours.

Regulated-industry apps

Healthcare and insurance, where the same checked screens on every device help you meet the rules, and are not just nice to have.

Legacy Flutter modernisation

An app stuck on an old SDK with Provider and no null safety. Moved to Flutter 3, Impeller and Riverpod without a rewrite.

Release engineering

Codemagic or GitHub Actions CI, app signing, separate versions for testing and live, store submission and step-by-step rollout.

Characteristics

What owning the renderer buys — and costs.

  • Impeller, shaders precompiled

    The shader work done while the app runs, which caused the old first-run stutter, is gone. It is now the default on both platforms.

  • Pixel-identical everywhere

    Your design looks the same on every device. No surprises between phones, and no visual QA testing for each OS.

  • AOT-compiled to native ARM

    Release builds are compiled ahead of time into machine code. There is no JavaScript bridge and no interpreter slowing the busy parts.

  • Offline-first with Drift or Isar

    A real database on the phone, a queue of saved changes and clear rules for clashes on each record. Built for signal that comes and goes.

  • The hiring cost is real

    Dart is used almost nowhere outside Flutter. The hiring pool is smaller, and web engineers do not already know it the way they know TypeScript.

  • No web story worth having

    Flutter web draws to a canvas and search engines cannot read it. We build public websites in Next.js and say so plainly.

The stack

What ships with a Flutter build from us.

Flutter 3
Dart 3
Impeller
Melos

Flutter or React Native? We have no stake in the answer.

We build both. The right choice depends on whether you already have a React product, and whether your design belongs to the brand or to the phone. Talk to us for twenty minutes and you will get a real recommendation with reasons.

FAQ

The questions you were going to ask on the call.

If you have a React web product, React Native almost always wins. This is not because it draws better. It is because types, checks and business logic are shared across the whole company, and not written twice in two languages. If you have no React work, the app has many animations, and the design is strongly branded and does not copy the phone style, Flutter is excellent and often the better choice. We build both, so we have no stake in the answer.

No, and that complaint is several years old. The old Skia renderer prepared shaders while the app ran. That is why the first run of a new animation stuttered. Impeller prepares them when the app is built, and it is the default on both platforms. We hold 60fps through complex animated screens on mid-range Android phones, and 120fps on phones with a screen that can show it.

It will feel like your app, the same on every device. That is different from feeling native, and whether it is right depends on your product. For a strongly branded product with its own design, it is a real advantage: no surprises between phones, and no QA testing for each OS. For an app that tries to copy iOS style, with Cupertino patterns, system menus and the exact scroll feel an iPhone user knows, you must rebuild what native would have given you free.

We do not recommend it. Flutter web draws to a canvas, sends a large first download and search engines can hardly see it. For anything public, the answer is Next.js. We would rather run two sets of code and have a website that ranks in search than keep everything in one language and quietly lose search traffic. We will say so even though the one-language pitch is easier to sell.

Riverpod for most apps. Bloc when the app is driven by events and a record of every state change has real value, such as regulated fintech. The important thing is not which one you pick. It is that you pick once, write it down and check it in review. Flutter offers about nine options, and the arguments about them have cost the industry more engineering hours than they have ever saved.

A focused app on an existing API is typically 10 to 14 weeks from around ₹9,50,000. A full product with offline sync, payments, push and an admin back end is 18 to 26 weeks from around ₹19,00,000. It is priced the same as React Native for the same work, because the effort is really similar. If someone quotes far less for one, that tells you about their staff, not the framework.

Let's talk flutter development

Bring us the hard version of the problem.

A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.