NM Company
A portfolio and enquiry site for events firm NM Company
A visual portfolio and enquiry website for an event management and supplies firm — presenting a full...
Read itFlutter 3 · Dart 3 · Impeller
Flutter owns every pixel, which is exactly why it is right for a brand-led product with a strong custom design system — and wrong when you need the platform's own idiom. We build it, and we will tell you which one you have.
Flutter does not ask iOS or Android to render anything. It ships its own engine and paints the interface itself, which is why a Flutter app looks precisely the same on an iPhone 16 and a four-year-old Samsung with a heavily customised Android skin. If your product is brand-led with a strong custom design system, that is a real gift: what the designer drew is what every single user sees, with no platform surprises and no per-OS QA matrix. If your product needs to feel like the platform — Cupertino idiom, system menus, the scroll physics an iPhone user has in their fingers — then you are reimplementing what native would have given you free, and we will tell you so before you commit.
Talk to a Flutter engineerHeld through complex animated interfaces, with Impeller precompiling shaders at build time.
Between iOS and Android — higher than React Native, because Flutter owns the rendering on both.
On a mid-range Android handset, AOT-compiled to native ARM. Not on a flagship, and not on wifi.
We do not ship it. It renders to a canvas and search engines cannot see it. Public web is Next.js.
Flutter's central bet is that it should not ask the platform to draw anything. It ships its own rendering engine and paints every pixel itself. That single decision explains everything people love about it and everything they complain about, and understanding it is how you decide whether it is right for you.
The old Skia renderer compiled shaders at runtime, which is why early Flutter apps famously stuttered the first time you opened a screen with an unfamiliar animation. Impeller precompiles them at build time. It is the default on both iOS and Android now, and the practical result is that "Flutter jank" has largely stopped being a real objection — we hold 60 fps on mid-range Android hardware through complex, animated interfaces, and 120 fps on devices with the display for it.
Because Flutter draws everything, your app looks exactly the same on an iPhone 16 and a four-year-old Samsung running an ancient Android skin. For a brand-led product with a strong custom design system, this is a genuine gift: what the designer drew is what every user sees, with no platform surprises and no per-OS QA matrix.
It is also the trade. A Flutter app does not automatically inherit new platform UI behaviour, and an interface that is deliberately trying to feel like a native iOS app — Cupertino idiom, system context menus, the exact scroll physics an iPhone user has in their fingers — is a thing you are now reimplementing rather than receiving. We use Flutter where the design is the brand's, and we use native or React Native where the design is the platform's.
Flutter's ecosystem offers roughly nine ways to manage state, and the ensuing argument has probably consumed more engineering hours than it has saved. We standardise on Riverpod for most applications and Bloc where the domain is genuinely event-driven and an audit trail of state transitions has real value — regulated fintech, for instance. What matters is that the choice is made once, written down, and enforced in review, not relitigated in every pull request by whoever read a blog post most recently.
Dart 3 with sound null safety, pattern matching and sealed classes is a genuinely pleasant
language, and the tooling — hot reload, the analyzer, dart format — is better than what
most ecosystems offer. The cost is real, though: Dart lives essentially nowhere outside Flutter. You
cannot share validation logic, types or business rules with a TypeScript web front end, and your
hiring pool is smaller. If you already have a React web product, that duplication is the single
strongest argument for choosing React Native instead, and we will make it to you.
Flutter web. It renders to a canvas, ships a large payload, and is effectively invisible to search engines. For anything public-facing on the web the answer is Next.js, and we would not pretend otherwise to keep a project in one language.
| Choose Flutter | Choose something else | |
|---|---|---|
| Brand-led custom design system | Yes. Owning the pixels means the design is identical everywhere, with no platform surprises and no per-OS QA matrix. | Little reason to look elsewhere. This is Flutter at its strongest. |
| You already have a React web product | You will write your validation, types and business rules twice, in two languages, forever. Count that cost honestly. | React Native. Sharing logic across web and mobile usually outweighs any rendering advantage Flutter has. |
| Animation-heavy interface | Yes. Impeller precompiles shaders, animations run on the raster thread, and 60fps on mid-range Android is routine. | React Native with Reanimated is genuinely close now. This is no longer the decisive argument it was in 2021. |
| App must feel platform-native | No. Cupertino widgets approximate iOS; they do not inherit it, and your users will feel the difference in the scroll. | Native Swift and Kotlin, or React Native, which uses the real platform components underneath. |
| Public-facing web app | No. Flutter web draws to a canvas, ships a heavy payload and is invisible to search engines. | Next.js. Run two codebases and keep your search traffic. We will not pretend otherwise to sell you one language. |
| Hiring in India | A smaller pool than React, and Dart skills do not transfer in from web teams the way TypeScript does. | React Native, if hiring speed is a real constraint on you. Be honest with yourself about whether it is. |
Where the design system is the product and it must land identically on every handset, from a flagship to a ₹10,000 Android.
Bloc for an auditable trail of state transitions, biometric unlock, certificate pinning, and a security posture built for review.
Drift or Isar as a real local database, a queued mutation log, and per-entity conflict rules for phones that lose signal for hours.
Healthcare and insurance, where a consistent audited interface across every device is a compliance asset rather than a nicety.
An app stranded on an old SDK with Provider and no null safety. Moved to Flutter 3, Impeller and Riverpod without a rewrite.
Codemagic or GitHub Actions CI, signing, flavours for staging and production, store submission and staged rollout.
The runtime shader compilation that caused the old first-run stutter is gone. It is the default on both platforms now.
Your design lands the same on every device. No platform surprises, and no per-OS visual QA matrix to maintain.
Release builds are ahead-of-time compiled machine code. There is no JavaScript bridge and no interpreter in the hot path.
A real local database with a queued mutation log and an explicit per-entity conflict policy. Built for signal that comes and goes.
Dart lives almost nowhere outside Flutter. The pool is smaller and web engineers do not transfer in the way TypeScript ones do.
Flutter web renders to a canvas and search engines cannot read it. We build public web in Next.js and say so plainly.
A Shopify storefront for a Surat ethnic-wear label — 200+ SKUs of lehengas, sarees and suits organised by type, colour,...
A fleet, ePOD and route-optimisation platform built offline-first for drivers in low-connectivity corridors — because th...
A Shopify storefront for a Surat watch and eyewear retailer — browsable by gender, brand, style and combo, with predicti...
We build both, and the right choice depends on whether you already have a React product and whether your design is the brand's or the platform's. Twenty minutes on a call and you will have a real recommendation with reasons attached.
FAQ
Proof
NM Company
A visual portfolio and enquiry website for an event management and supplies firm — presenting a full...
Read itSwasthya Sarathi
A multi-service healthcare platform that helps people find hospitals, doctors, labs, medical stores,...
Read itMV Tech Education
A course-catalogue and admissions website for a Bihar vocational institute — leading with industrial...
Read itReact that renders on the server, ranks in Google and does not ship 300 KB of JavaScript t...
ExploreThe framework we have shipped more business systems on than any other. Laravel 12 with Oct...
ExploreOne codebase, both stores, and a release you can fix the same afternoon. We build React Na...
ExploreLet's talk flutter development
A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.