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 itiOS, Android and cross-platform
Flutter, React Native and native apps that hold up offline, on old hardware and on a metro platform with one bar of signal — shipped to both stores with a release pipeline you own.
An app is not a website in a frame. It is a piece of software that has to work on a five-year-old Redmi with 3GB of RAM, on the Delhi Metro where the network drops between Rajiv Chowk and Barakhamba, and on a device where the user has already decided — in about eight seconds — whether to keep it or uninstall it.
We build mobile products for teams who have a real reason to be on the home screen: a delivery fleet that works offline, a field-service workflow with a camera and a signature, a members app where push is the primary channel, a fintech flow that has to survive an RBI audit. If your users would be equally happy with a good mobile site, we will tell you that and save you a year of app-store maintenance.
Cross-platform by default, native when the hardware demands it. Flutter and React Native cover the overwhelming majority of what people ask us for, and they cover it with one codebase, one release train and one set of tests. When you need Bluetooth Low Energy, an SDK that only ships for iOS, background location that has to survive Doze mode, or 120fps rendering, we write native modules — or the whole thing in Swift and Kotlin — and we say so before you sign.
| Flutter | React Native | Native (Swift / Kotlin) | |
|---|---|---|---|
| One codebase, both stores | Yes | Yes | No |
| Performance on 3GB Android | Excellent | Good | Excellent |
| Custom, brand-heavy interfaces | Excellent | Good | Excellent |
| Shares code with a React web app | No | Yes | No |
| Deep hardware and BLE work | Via native modules | Via native modules | Native |
| Hiring pool in India | Large and growing | Very large | Smaller, pricier |
| Typical cost vs native | ~60% | ~65% | Baseline |
Almost every rescue we take on fails in one of these six places. None of them are visible in a Figma file.
The delivery partner walks into a basement and the app shows a spinner until the OS kills it. Twenty minutes of proof-of-delivery photos gone.
Every SDK the marketing team ever asked for initialises on the main thread before the first frame paints. Users uninstall before they see your logo.
Nobody wired up Crashlytics or Sentry, so the crashes are invisible. Your Play Store rating is dropping and no one can say why.
UPI intent bounces back to the app with no callback, the order is charged but never confirmed, and support reconciles refunds by hand every morning.
The previous agency has the signing key. You cannot ship an update to your own Android app without their goodwill.
No topic strategy, no token refresh handling, Chinese OEM battery optimisers killing the service. Your only re-engagement channel is leaking.
You are in a TestFlight build by week six. Not staring at a Gantt chart.
We map the core job the app does, the device profiles it must survive, and the connectivity it will actually see. We choose Flutter, React Native or native — and we write down why, including what we are giving up. You get a scope, a device test matrix and a number.
Native platform conventions, not a web layout squeezed into a phone. Gestures, transitions, the offline and error states, the permissions priming screens. We put a clickable prototype in front of five real users from your segment before we build it.
The API, the auth, the push infrastructure and the sync protocol — usually the 40% of the work that other quotes forget. Durable local storage, a write queue that survives an app kill, and a conflict-resolution rule we agree with you explicitly.
Every merge produces a signed build in TestFlight and the Play internal track. You install it on your own phone the same day. Widget and integration tests run in CI; the low-end device sits on a desk here and gets tested on manually every sprint.
Listings, screenshots, privacy labels, the data-safety form, account-deletion flow, and the review cycle including the rejections. Staged rollout on Android — 5%, 20%, 100% — with the crash dashboard open the whole way.
We watch crash-free sessions, ANR rate, cold start and funnel drop-off on real traffic. Defects fixed at no charge. Then we hand over the pipeline and the keys — or stay on for the roadmap.
Offline is where most Indian apps quietly fall apart. A form that loses twenty minutes of a field agent's work because the lift had no signal is not a UX inconvenience — it is the reason the agent goes back to paper.
We treat the local database as the source of truth for the session and the server as the thing you eventually reconcile with. Writes queue durably on device. Conflicts resolve against a rule we agree with you in discovery — last-write-wins, server-authoritative, or a merge with a human in the loop — rather than whatever the sync library happened to do. Uploads resume after the app is killed. The user sees what is pending, what has synced and what failed, because silence is worse than a bad number.
Fastlane lanes for signing, versioning and upload. Every merge to main produces a build in TestFlight and the Play internal track, tagged and traceable back to a commit. Your team can ship without us on day one — and without us on day four hundred.
FCM and APNs with token refresh, topic segmentation, deep links into the right screen, and workarounds for the OEM battery optimisers that silently kill background services on Xiaomi, Oppo and Vivo handsets.
Razorpay, PhonePe or Cashfree with UPI intent, cards and netbanking — plus server-side webhook verification so a charged-but-unconfirmed order is impossible, not just unlikely.
Sentry or Crashlytics with source maps, ANR tracking, cold-start traces and a funnel dashboard. You will know about a bad release from a graph, not from a one-star review.
We keep a low-end Android with 3GB of RAM, a mid-range Samsung and an older iPhone on the desk. Cold start, jank and memory are measured on those, because that is what your customer is holding. A screen that drops frames on the cheap phone does not ship.
Chosen for device reality and for your ability to hire against it later.
These are release gates, not aspirations. If a build misses one of them on the low-end device in our test matrix, it does not go to the store — regardless of what the calendar says. Holding the line here is why our apps do not arrive at a one-star average in week two.
Talk about your appMeasured across the device matrix
3GB RAM Android, cold cache
Android app bundle, split per ABI
No dropped frames on core screens
Field teams, delivery fleets and consumer products that survive real Indian network conditions.
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...
Bring the field process, the device your users actually hold, and the constraint everyone else told you was impossible. We will tell you what it takes.
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 itProduction web applications built on Laravel, Next.js and Postgres — typed, tested, observ...
ExploreCommerce platforms where the checkout converts and the back office reconciles — multi-ware...
ExploreERP systems built on an append-only stock and financial ledger — multi-plant, multi-GSTIN,...
ExploreLet's talk mobile app development
A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.