Writing
Notes from the codebase.
Things I learn while shipping apps — Flutter patterns, architecture decisions, and the small details that are easy to get wrong.

Why Mobile Apps Fail (And It's Rarely the Code)
After shipping 15+ mobile apps, the failures I've seen came from slow networks, pushy onboarding and backends that buckled at launch — not from bad code.
Read article →
Crash Reporting and Monitoring in Flutter: What I Set Up Before Launch
How I set up crash reporting and monitoring in Flutter with Crashlytics or Sentry: error hooks, symbol uploads, privacy-safe context, alerts, analytics, weekly reviews.
Read article →
Building Offline-First Flutter Apps: Caching Strategies That Actually Work
How I design Flutter apps that keep working without a connection — local caching, stale-while-revalidate, queued writes and honest UI states.
Read article →
End-to-End Testing with Playwright: Lessons from Owning a Test Suite
What I've learned building Playwright E2E coverage for critical user flows — resilient locators, auth setup, test data, flaky tests and running it all in CI.
Read article →
Stripe Connect in Flutter: Building Marketplace Payments the Right Way
A practical guide to multi-party payments with Stripe Connect and flutter_stripe — account onboarding, PaymentIntents with platform fees, and webhooks you can trust.
Read article →
Flutter vs React Native: How I Advise Clients to Choose
A balanced Flutter vs React Native guide for founders: team skills, web code sharing, UI, performance, native integrations, hiring and maintenance, and when to go native.
Read article →
In-App Subscriptions in Flutter with RevenueCat: A Practical Guide
How I set up auto-renewing subscriptions in Flutter apps with RevenueCat — entitlements, offerings, paywalls, restore purchases and the edge cases stores don't warn you about.
Read article →
Hiring a Flutter Developer: What to Look For (From Someone Who Gets Hired)
A practical guide to hiring a Flutter developer: shipped apps, architecture questions, communication, red flags, trial tasks and owning your code, accounts and keys.
Read article →
CI/CD for Flutter with Azure DevOps: From Commit to Store
A working Azure Pipelines setup for Flutter — analyze, test, build signed Android and iOS releases, and ship them without touching a laptop.
Read article →
How I Estimate a Mobile App Project (And Why You Get a Range)
How I estimate a mobile app project for founders: breaking it into features and integrations, running discovery, giving ranges, and planning for change and maintenance.
Read article →
Ad Monetization in Flutter Without Ruining the User Experience
How I add ad monetization to Flutter apps with google_mobile_ads — formats, placement, frequency caps, consent, mediation and paywalls — without driving users away.
Read article →
Reducing Flutter App Size: Measure First, Then Trim
How I approach reducing Flutter app size — measuring with --analyze-size, app bundles, split debug info, asset and font trimming, and auditing heavy packages.
Read article →
Live Location Tracking in Flutter with Google Maps
Building real-time location features in Flutter — Google Maps setup, streaming GPS updates efficiently, smooth marker movement, geocoding and the battery and privacy details that matter.
Read article →
Background Work in Flutter: What iOS and Android Actually Allow
Background work in Flutter, honestly explained — workmanager, iOS background fetch limits, Android Doze, silent push, foreground services and isolates.
Read article →
Bringing a Flutter App to Apple CarPlay and Android Auto
What it actually takes to extend a Flutter audio app into the car — why your Flutter UI doesn't run there, how audio_service bridges Android Auto, and the native CarPlay work you can't avoid.
Read article →
A Flutter Testing Strategy That Actually Pays Off
A practical Flutter testing strategy — unit, widget, golden and integration tests, mocking with mocktail, what not to test, and running it all in CI.
Read article →
Better Forms in Flutter: Validation, Focus and Autofill Users Won't Hate
How I build better forms in Flutter — validation timing, keyboard and focus handling, autofill, server errors shown inline, and no double submits.
Read article →
Pragmatic Clean Architecture in Flutter
How I structure production Flutter apps with Clean Architecture — feature-first folders, repositories, sealed results and dependency injection — without drowning in boilerplate.
Read article →
Flutter Animations That Feel Native: Motion Without the Jank
A practical guide to Flutter animations that feel native — implicit and explicit animations, Hero, page transitions, curves, reduced motion and performance.
Read article →
Accessibility in Flutter Apps: Semantics, Text Scaling and Automated Checks
A practical guide to accessibility in Flutter apps: Semantics labels, tap target sizes, text scaling, contrast, focus order, screen reader testing and guideline tests.
Read article →
Rewriting a Native App in Flutter: Lessons from a Full Migration
What I learned rewriting a production native app as a single Flutter codebase — when a rewrite makes sense, how to plan it, and the mistakes that cost the most time.
Read article →
Flutter Localization in Practice: ARB Files, Plurals, RTL and Runtime Switching
Flutter localization in practice with gen-l10n: ARB files, placeholders, ICU plurals and select, dates and numbers with intl, RTL layouts and runtime locale switching.
Read article →
Taking Over an Existing Flutter App: How I Stabilize an Inherited Codebase
My step-by-step process for inheriting a Flutter app from another developer — auditing, upgrading dependencies, fixing crashes first and shipping improvements without breaking what works.
Read article →
A Practical Mobile App Security Checklist for Flutter Developers
A practical mobile app security checklist for Flutter: keeping secrets off the device, secure storage, pinning trade-offs, obfuscation limits and server-side checks.
Read article →
Responsive Flutter Layouts: One Codebase for Phones and Tablets
A practical approach to responsive Flutter UIs — breakpoints, LayoutBuilder, adaptive navigation and list-detail layouts that work from small phones to large tablets.
Read article →
Building a .NET API for a Flutter App with ASP.NET Core Minimal APIs
How I build a .NET backend for a Flutter app with ASP.NET Core minimal APIs: typed results, EF Core, JWT auth, ProblemDetails errors, pagination and Dart models.
Read article →
Production-Ready Authentication in Flutter: Tokens, Refresh and Routing
Production-ready authentication in Flutter: secure token storage, a dio interceptor that refreshes once, go_router redirects, Sign in with Apple and account deletion.
Read article →
My App Store and Google Play Release Checklist for Flutter Apps
The App Store and Google Play release checklist I use for Flutter apps: versioning, signing, privacy forms, account deletion, review notes, and staged rollouts.
Read article →
Deep Linking in Flutter with go_router: Universal Links and Android App Links
Set up deep linking in Flutter with go_router, iOS Universal Links and Android App Links: verification files, auth redirects, and testing with adb and simctl.
Read article →
Push Notifications in Flutter with FCM: Foreground, Background and Terminated States
A practical guide to push notifications in Flutter with Firebase Cloud Messaging: permissions, app states, tokens, Android channels, APNs setup and deep links.
Read article →
Fixing Jank in Flutter Apps: A Practical Guide to Smooth 60fps Performance
How I find and fix jank in Flutter apps with profile mode and DevTools: UI vs raster thread, expensive builds, saveLayer, oversized images and blocking work.
Read article →
Riverpod vs BLoC: How I Choose Flutter State Management in Production
Riverpod vs BLoC for Flutter state management: the same feature built both ways, how each is tested, and the questions I ask before picking one for a project.
Read article →
Flutter Best Practices and Tips for Efficient App Development
Practical tips for structuring projects, optimizing performance, and keeping data secure in production Flutter apps.
Read article →
Building Dropdown Lists in Flutter: Simplifying Option Selection
How to add and customize a DropdownButton in Flutter, from project setup to styling and handling selection state.
Read article →