Keeping a Long-Lived gRPC Stream Alive on Flutter
FlutterOpening the realtime stream was the easy part; keeping the socket alive on a phone that suspends, switches networks, and lies about being connected was the hard part.
Practical lessons from 12+ years of building and shipping mobile apps.
Opening the realtime stream was the easy part; keeping the socket alive on a phone that suspends, switches networks, and lies about being connected was the hard part.
Building offline-first chat meant our on-device SQLite store and the server had to agree on reality after a reconnect, and the first version got that agreement spectacularly wrong.
End-to-end encryption is easy to describe and brutal to operate on real phones, where keys live in the Keychain and Keystore and survive, or vanish, in ways that surprise you.
Getting WebRTC calls to actually connect was the easy part; keeping them alive through CallKit, audio sessions, and a leaked camera light was the real work.
A single Sync message once fired three alerts on one phone; here is how I hunted down duplicate, late, and missing push notifications on the device.
The doctor dashboard felt janky and killed the tablet battery by lunch; the culprit was thousands of needless widget rebuilds hiding behind a live data stream.
Patient symptom photos kept vanishing when the app was backgrounded or killed, so we handed the uploads to the OS itself.
Syncing Apple HealthKit data into a clinical backend sounds simple until duplicates, wrong timezones, and vanishing deletions teach you that clinical data has to be exactly right.
After a few back-to-back video consultations the iOS app's memory kept climbing until the OS killed it, so I went retain-cycle hunting.
Our patients live on flaky 3G in elevators and rural clinics, so we stopped assuming the network works and built an app that survives it losing.
Practical experience migrating a live streaming project from Objective-C to Swift, valuable lessons and best practices.
After 6 years of native iOS development, I switched to Flutter. Here are the most surprising things.
After 12 years of applying Clean Architecture to projects big and small, here is a practical perspective.
The story from idea to real product, reaching Top 50 and the valuable startup lessons along the way.
A practical comparison after 5 years in outsourcing and 5+ years at a product company in health tech.
Experience developing an iOS platform serving global markets for a major F&B brand.