Tutorials & deep dives

The FlutterCook Blog

Long-form, code-first walkthroughs — build the widget, understand the maths, ship the polish.

🧩 Open Source

video_player: the platform-backed Flutter video primitive

Showcase video_player in a production-minded Flutter architecture: controllers, initialization, buffering, subtitles, and lifecycle.

Trung HieuSep 16, 2026
🧩 Open Source

Very Good CLI: opinionated Flutter scaffolding

Showcase very_good_cli in a production-minded Flutter architecture: project templates, flavors, testing defaults, and CI conventions.

Trung HieuSep 16, 2026
🧩 Open Source

url_launcher: platform intent with a fallback contract

Showcase url_launcher in a production-minded Flutter architecture: canLaunchUrl, launch modes, web URLs, and unavailable handlers.

Trung HieuSep 16, 2026
🧩 Open Source

supabase_flutter: auth, Postgres, realtime, and storage

Showcase supabase_flutter in a production-minded Flutter architecture: typed client initialization, auth events, RLS, and session persistence.

Trung HieuSep 16, 2026
🧩 Open Source

skeletonizer: loading UI from the real widget tree

Showcase skeletonizer in a production-minded Flutter architecture: fake data, skeleton annotations, layout stability, and accessibility.

Trung HieuSep 16, 2026
🧩 Open Source

shadcn_flutter: composable UI primitives for Flutter

Showcase shadcn_flutter in a production-minded Flutter architecture: unstyled primitives, New York style, Material interop, and theming.

Trung HieuSep 16, 2026
🧩 Open Source

Sentry Flutter: errors with release context

Showcase sentry_flutter in a production-minded Flutter architecture: crash reporting, performance traces, breadcrumbs, and source maps.

Trung HieuSep 16, 2026
🧩 Open Source

Riverpod: testable async state without widget coupling

Showcase riverpod in a production-minded Flutter architecture: providers, async states, caching, and dependency overrides.

Trung HieuSep 16, 2026
🧩 Open Source

Rive: interactive vector animation as a state machine

Showcase rive in a production-minded Flutter architecture: artboards, state machines, inputs, and runtime performance.

Trung HieuSep 16, 2026
🧩 Open Source

Pigeon: typed platform channels generated from one schema

Showcase pigeon in a production-minded Flutter architecture: Dart/native codegen, API contracts, task queues, and versioning.

Trung HieuSep 16, 2026
🧩 Open Source

permission_handler: runtime permission flows you can explain

Showcase permission_handler in a production-minded Flutter architecture: status, rationale, settings fallback, and platform declarations.

Trung HieuSep 16, 2026
🧩 Open Source

Patrol: integration tests that can leave the Flutter sandbox

Showcase patrol in a production-minded Flutter architecture: native permissions, notifications, deep links, and device automation.

Trung HieuSep 16, 2026
🧩 Open Source

Mocktail: readable Dart mocks without generated files

Showcase mocktail in a production-minded Flutter architecture: fakes, stubbing, verification, fallback values, and test boundaries.

Trung HieuSep 16, 2026
🧩 Open Source

Melos: make a Flutter monorepo a product boundary

Showcase melos in a production-minded Flutter architecture: workspace scripts, package graph, selective tests, and releases.

Trung HieuSep 16, 2026
🧩 Open Source

local_auth: biometrics as a step-up, not a password store

Showcase local_auth in a production-minded Flutter architecture: device support, biometric prompts, fallback credentials, and failure UX.

Trung HieuSep 16, 2026
🧩 Open Source

just_audio: controllable audio with streams

Showcase just_audio in a production-minded Flutter architecture: queues, position streams, playlists, speed, and background integration.

Trung HieuSep 16, 2026
🧩 Open Source

json_serializable: boring JSON that survives refactors

Showcase json_serializable in a production-minded Flutter architecture: generated codecs, converters, checked mode, and API model boundaries.

Trung HieuSep 16, 2026
🧩 Open Source

Isar: fast local objects with queryable indexes

Showcase isar in a production-minded Flutter architecture: collections, indexes, transactions, and reactive watchers.

Trung HieuSep 16, 2026
🧩 Open Source

intl: format locale-sensitive data deliberately

Showcase intl in a production-minded Flutter architecture: dates, numbers, plurals, locale initialization, and testable formats.

Trung HieuSep 16, 2026
🧩 Open Source

image_picker: a small API over messy media sources

Showcase image_picker in a production-minded Flutter architecture: camera/gallery intent, lost data recovery, compression, and permissions.

Trung HieuSep 16, 2026
🧩 Open Source

Golden Toolkit: visual regression with intent

Showcase golden_toolkit in a production-minded Flutter architecture: device matrices, fonts, surface variants, and readable golden diffs.

Trung HieuSep 16, 2026
🧩 Open Source

go_router: URL-first navigation for Flutter

Showcase go_router in a production-minded Flutter architecture: declarative routing, deep links, redirects, and ShellRoute.

Trung HieuSep 16, 2026
🧩 Open Source

FVM: pin Flutter versions per repository

Showcase fvm in a production-minded Flutter architecture: version files, CI parity, team onboarding, and migration cadence.

Trung HieuSep 16, 2026
🧩 Open Source

Freezed: safer immutable models and unions

Showcase freezed in a production-minded Flutter architecture: immutable data classes, JSON unions, copyWith, and exhaustive UI states.

Trung HieuSep 16, 2026
🧩 Open Source

ForUI: accessible headless components for Flutter

Showcase forui in a production-minded Flutter architecture: composable controls, theming, keyboard behavior, and accessibility.

Trung HieuSep 16, 2026
🧩 Open Source

flutter_secure_storage: secrets behind platform keychains

Showcase flutter_secure_storage in a production-minded Flutter architecture: Keychain, Keystore, encrypted shared preferences, and migration.

Trung HieuSep 16, 2026
🧩 Open Source

flutter_hooks: reusable stateful behavior as tiny hooks

Showcase flutter_hooks in a production-minded Flutter architecture: hook lifecycle, controller ownership, effects, and composable UI logic.

Trung HieuSep 16, 2026
🧩 Open Source

flutter_rust_bridge: typed Rust without hand-written FFI glue

Showcase flutter_rust_bridge in a production-minded Flutter architecture: code generation, async Rust, streams, error boundaries, and native builds.

Trung HieuSep 16, 2026
🧩 Open Source

flutter_bloc: explicit events and states at scale

Showcase flutter_bloc in a production-minded Flutter architecture: Cubit, Bloc, BlocListener, and predictable state transitions.

Trung HieuSep 16, 2026
🧩 Open Source

animations: reusable Material motion patterns

Showcase animations in a production-minded Flutter architecture: OpenContainer, shared axis, fade-through, and route transitions.

Trung HieuSep 16, 2026
🧩 Open Source

FlexColorScheme: design-system themes without boilerplate

Showcase flex_color_scheme in a production-minded Flutter architecture: light/dark schemes, surface blends, seed colors, and Material 3.

Trung HieuSep 16, 2026
🧩 Open Source

file_picker: one user intent across six platforms

Showcase file_picker in a production-minded Flutter architecture: filters, multiple selection, bytes, and platform-specific paths.

Trung HieuSep 16, 2026
🧩 Open Source

Equatable: value semantics for Dart state objects

Showcase equatable in a production-minded Flutter architecture: equality, props, sealed states, and predictable rebuild checks.

Trung HieuSep 16, 2026
🧩 Open Source

Drift: typed SQL for an offline-first Flutter app

Showcase drift in a production-minded Flutter architecture: typed tables, migrations, reactive queries, and transactions.

Trung HieuSep 16, 2026
🧩 Open Source

desktop_multi_window: isolate desktop surfaces intentionally

Showcase desktop_multi_window in a production-minded Flutter architecture: window lifecycle, arguments, isolate boundaries, and platform constraints.

Trung HieuSep 16, 2026
🧩 Open Source

Dio: composeable networking with interceptors

Showcase dio in a production-minded Flutter architecture: interceptors, cancellation, retries, and typed error mapping.

Trung HieuSep 16, 2026
🧩 Open Source

connectivity_plus: network type is not internet reachability

Showcase connectivity_plus in a production-minded Flutter architecture: connectivity streams, offline UX, reachability checks, and platform nuance.

Trung HieuSep 16, 2026
🧩 Open Source

camera: a real capture pipeline, not just a preview

Showcase camera in a production-minded Flutter architecture: controller lifecycle, image streams, permissions, and orientation.

Trung HieuSep 16, 2026
🧩 Open Source

build_runner: make code generation a deterministic build step

Showcase build_runner in a production-minded Flutter architecture: watch mode, delete-conflicting-outputs, CI, and generated ownership.

Trung HieuSep 16, 2026
🧩 Open Source

Appwrite Flutter: backend services with explicit clients

Showcase appwrite in a production-minded Flutter architecture: endpoint/project configuration, auth, databases, storage, and functions.

Trung HieuSep 16, 2026
🧭 Tooling

Widget Previewer is stable: isolate UI without booting the app

Faster startup, PreviewThemeData matrices, and web asset sync in 3.47.

Trung HieuSep 11, 2026
🧭 Web

SEO for Flutter web: when to prerender and when not to

Documented limits, hybrid HTML, and marketing page strategies.

Trung HieuSep 11, 2026
🧭 Web

Embedding Flutter into an existing marketing site

Element embedding, lifecycle, and SEO-safe boundaries.

Trung HieuSep 11, 2026
🧭 Platform

Wear companions: watchOS and Wear OS with Flutter phones

Sync patterns and tiny UI constraints.

Trung HieuSep 11, 2026
🧭 Web

Wasm deferred loading: split Flutter web for first paint

Opt into --wasm and --enable-wasm-deferred-loading for smaller boot bundles.

Trung HieuSep 11, 2026
🧭 Strategy

Shipping mobile apps for the Vietnam market in 2026

Payments, localization, and store considerations.

Trung HieuSep 11, 2026
🧭 iOS

UIScene lifecycle: the iOS 27 launch gate for Flutter apps

Xcode 27 fails launches without UIScene. What Flutter migrates automatically.

Trung HieuSep 11, 2026
🧭 Process

A weekly mobile crash triage that actually reduces issues

Triage boards, owner assignment, and release health gates.

Trung HieuSep 11, 2026
🧭 Security

Threat modeling a mobile app in one workshop

Assets, attackers, and mitigations that fit the product.

Trung HieuSep 11, 2026
🧭 Testing

Golden tests for design systems

Font loading, surface sizes, and review workflow for visual diffs.

Trung HieuSep 11, 2026
🧭 Deployment

TestFlight internal vs external testing that finds real bugs

Groups, feedback, and build expiry planning.

Trung HieuSep 11, 2026
🧭 Process

A mobile technical debt inventory that leaders fund

Quantify risk, user impact, and paydown capacity.

Trung HieuSep 11, 2026
🧭 Process

A 2026 skills roadmap for Flutter teams

What to learn next: Impeller, SwiftPM, AI tooling, adaptive UI.

Trung HieuSep 11, 2026
🧭 Adaptive

Keyboard shortcuts and pointer support for tablets

Shortcuts widget, hover, and trackpad scrolling.

Trung HieuSep 11, 2026
🧭 Dart

Switch expressions for cleaner Flutter mapping

Mapping enums and states to widgets without arrow soup.

Trung HieuSep 11, 2026
🧭 Platform

Swift Package Manager plugin migration checklist for Flutter

What iOS/macOS plugin authors must ship after SwiftPM became the default.

Trung HieuSep 11, 2026
🧭 Platform

Stylus pressure and tilt input in Flutter

Apple Pencil, S-Pen, and Windows pen APIs.

Trung HieuSep 11, 2026
🧭 AI

Structured output and tool calling in Flutter AI apps

JSON schema, validation, and UI for tool confirmation.

Trung HieuSep 11, 2026
🧭 AI

Streaming LLM responses into Flutter UIs token by token

Partial JSON, interruptibility, and scroll locking.

Trung HieuSep 11, 2026
🧭 Product

Replying to store reviews without sounding like a bot

Tone, escalation paths, and version-specific answers.

Trung HieuSep 11, 2026
🧭 Product

SKStoreReview and in-app review prompts that do not annoy

Timing, frequency caps, and happy-path triggers.

Trung HieuSep 11, 2026
🧭 Policy

Mapping App Store guidelines to common Flutter features

UGC, payments, health, and kids categories.

Trung HieuSep 11, 2026
🧭 Product

ASO for Flutter apps: screenshots, keywords, and ratings

Store listing experiments that move install conversion.

Trung HieuSep 11, 2026
🧭 Performance

Cold start budgets for Flutter apps

What actually shows up first and how to shave hundreds of milliseconds.

Trung HieuSep 11, 2026
🧭 Deep Dive

Migrating to standalone material_ui and cupertino_ui in Flutter 3.47

How to move off SDK-bundled Material/Cupertino with dart fix and the compatibility bridge.

Trung HieuSep 11, 2026
🧭 Layout

Slivers that scroll without jank

CustomScrollView, SliverList.builder, and avoiding layout thrash.

Trung HieuSep 11, 2026
🧭 Backend

Serverpod: one language from SQL to Flutter widgets

Generated clients, auth, and why Flutter-first teams pick Dart backends.

Trung HieuSep 11, 2026
🧭 Auth

Mobile session management: refresh tokens done right

Rotation, reuse detection, and logout everywhere.

Trung HieuSep 11, 2026
🧭 Security

Secure storage and biometrics for Flutter tokens

Keychain/Keystore, biometric gates, and token rotation.

Trung HieuSep 11, 2026
🧭 Security

Storing tokens with Secure Enclave / StrongBox

Key generation, access control, and fallbacks.

Trung HieuSep 11, 2026
🧭 Security

Redacting secrets from mobile logs and crash reports

What to scrub before the device leaves the pocket.

Trung HieuSep 11, 2026
🧭 Strategy

SEA market expansion checklist for mobile products

Languages, payments, and device profiles by country.

Trung HieuSep 11, 2026
🧭 Product

Building store screenshots that convert

Narrative order, captions, and device frames for 2026 stores.

Trung HieuSep 11, 2026
🧭 Platform

flutter_rust_bridge for heavy compute in Flutter

Porting hot paths to Rust without rewriting the UI.

Trung HieuSep 11, 2026
🧭 i18n

RTL layouts that do not look broken in Flutter

Directionality, icons, and mirrored gestures.

Trung HieuSep 11, 2026
🧭 Process

Communicating mobile roadmaps without over-promising

Betas, kill criteria, and store review buffers.

Trung HieuSep 11, 2026
🧭 State

Riverpod patterns that survive production scale

Family, auto-dispose, and testing without pumping the whole app.

Trung HieuSep 11, 2026
🧭 Enterprise

Retail POS companions and handheld workflows

Barcode, battery, and rugged device testing.

Trung HieuSep 11, 2026
🧭 Process

Running a remote mobile team across timezones

Release ownership, design pairing, and incident follow-the-sun.

Trung HieuSep 11, 2026
🧭 Process

Public release windows: when your Flutter PR ships

Branch cutoffs for 3.41/3.44/3.47/3.50 so teams can plan upgrades.

Trung HieuSep 11, 2026
🧭 Deployment

Mobile rollback playbooks when stores are slow

Remote kill, staged rollout, and server-side disable.

Trung HieuSep 11, 2026
🧭 Process

A mobile release checklist that prevents Friday fires

Store assets, crash-free gates, and rollback plans.

Trung HieuSep 11, 2026
🧭 Monetization

Refund handling that protects ratings

Proactive credits, store flows, and support macros.

Trung HieuSep 11, 2026
🧭 A11y

prefers-reduced-motion and Flutter animations

MediaQuery disableAnimations and designing calm alternatives.

Trung HieuSep 11, 2026
🧭 AI

RAG on mobile: what belongs on-device vs server

Embeddings, sync, and battery-aware retrieval.

Trung HieuSep 11, 2026
🧭 UX

Notification permission primers that earn the grant

Timing, copy, and pre-permission education screens.

Trung HieuSep 11, 2026
🧭 Tooling

Flutter Property Editor: inspect widgets without print debugging

Edit properties live from DevTools while iterating on a screen.

Trung HieuSep 11, 2026
🧭 AI

Prompt caching on mobile AI calls

Prefix stability, cost cuts, and cache invalidation.

Trung HieuSep 11, 2026
🧭 iOS

Privacy manifests and required reason APIs for Flutter plugins

What App Store privacy nutrition labels mean for plugin authors.

Trung HieuSep 11, 2026
🧭 Android

Predictive back animations in Flutter Android apps

What users expect on gesture navigation and how to adopt it.

Trung HieuSep 11, 2026
🧭 Process

Blameless mobile incident postmortems

Timeline, user impact, and action items that get done.

Trung HieuSep 11, 2026
🧭 Career

Portfolio Flutter projects that get interviews in 2026

Show offline, a11y, performance, and CI — not just UI.

Trung HieuSep 11, 2026
🧭 Policy

Google Play policy changes mobile teams should track

Data safety, target API, and account deletion.

Trung HieuSep 11, 2026
🧭 Platform

Platform channels vs FFI in 2026: pick the right bridge

Throughput, types, and when to reach for flutter_rust_bridge.

Trung HieuSep 11, 2026
🧭 Performance

Ship only the assets each platform needs

pubspec platforms: keys keep desktop files out of mobile APKs.

Trung HieuSep 11, 2026
🧭 Platform

Pigeon: typed platform channels that scale

Generate Kotlin/Swift codecs and stop hand-writing MethodChannel maps.

Trung HieuSep 11, 2026
🧭 Privacy

Photo library access: limited libraries and privacy labels

PHPicker, partial access, and Android photo picker.

Trung HieuSep 11, 2026
🧭 Performance

Setting a frame budget your product team understands

16ms is engineering language. Translate it to UX outcomes.

Trung HieuSep 11, 2026
🧭 Monetization

Mobile payment fraud signals worth watching

Refund spikes, device farms, and promo abuse.

Trung HieuSep 11, 2026
🧭 Security

Passkeys and passwordless login in mobile apps

ASAuthorization, Credential Manager, and account recovery UX.

Trung HieuSep 11, 2026
🧭 UI

Pagination and infinite scroll without layout jank

Cursor APIs, item extents, and loading states that do not thrash.

Trung HieuSep 11, 2026
🧭 Tooling

How to pick a Flutter package in 2026

Maintenance signals, platform coverage, and pub scores that matter.

Trung HieuSep 11, 2026
🧭 Learning

How to study open-source Flutter apps without drowning

Repo maps, architecture notes, and stealable patterns.

Trung HieuSep 11, 2026
🧭 AI

Product patterns for on-device LLMs in mobile apps

Download UX, thermal limits, and privacy marketing that is true.

Trung HieuSep 11, 2026
🧭 Process

Mobile on-call runbooks that juniors can execute

Dashboards, first checks, and escalation trees.

Trung HieuSep 11, 2026
🧭 Product

Mobile OKRs that engineering can influence

Session quality, task success, and crash-free as shared goals.

Trung HieuSep 11, 2026
🧭 Data

Sync conflict resolution patterns for mobile apps

Last-write-wins, CRDTs, and when to ask the user.

Trung HieuSep 11, 2026
🧭 AI

Graceful degradation when AI is unavailable

Feature flags, local heuristics, and honest empty states.

Trung HieuSep 11, 2026
🧭 Quality

Mobile observability cost control

Sampling, cardinality, and what to keep forever.

Trung HieuSep 11, 2026
🧭 Quality

Mobile observability: Sentry, Crashlytics, and custom traces

Correlate crashes with performance and releases.

Trung HieuSep 11, 2026
🧭 Deployment

Obfuscation, symbols, and secrets in Flutter release builds

Split-debug-info, tree-shake icons, and never ship API keys in Dart.

Trung HieuSep 11, 2026
🧭 Navigation

State restoration across process death

RestorationMixin, restorationIds, and why scroll position matters.

Trung HieuSep 11, 2026
🧭 Add-to-App

Multiple Flutter instances in one host app

Memory cost, engines, and when a single engine is enough.

Trung HieuSep 11, 2026
🧭 AI

Multimodal AI: camera to structured data in Flutter

Image sizing, privacy, and latency budgets for vision tasks.

Trung HieuSep 11, 2026
🧭 Desktop

Desktop multi-window: popups, dialogs, and windowHandle

Experimental windowing APIs accelerate with Canonical as desktop steward.

Trung HieuSep 11, 2026
🧭 Auth

Multi-account apps without token soup

Account switchers, scoped storage, and push routing.

Trung HieuSep 11, 2026
🧭 AI

Model routing and cascades for mobile AI

Cheap first, escalate on uncertainty, measure quality.

Trung HieuSep 11, 2026
🧭 QA

A 20-minute mobile smoke checklist before every release

Login, pay, push, offline, and deep link golden paths.

Trung HieuSep 11, 2026
🧭 Strategy

Moving Android XML / UIKit apps to Flutter gradually

Add-to-app first screens and shared navigation contracts.

Trung HieuSep 11, 2026
🧭 Strategy

Migrating from React Native to Flutter in 2026

Strangler patterns, design system mapping, and risk.

Trung HieuSep 11, 2026
🧭 Migration

Migrating large apps to Material 3 Expressive

Component themes, regression goldens, and staged rollout.

Trung HieuSep 11, 2026
🧭 Performance

Why your device lab needs a mid-tier Android

The phone most users have is not the phone engineers carry.

Trung HieuSep 11, 2026
🧭 Privacy

Camera and microphone permissions with honest UX

When to request, indicators, and background rules.

Trung HieuSep 11, 2026
🧭 UX

Haptics and microinteractions that feel native

HapticFeedback, spring curves, and when less is more.

Trung HieuSep 11, 2026
🧭 Tooling

Melos monorepos for Flutter apps and packages

Local path overrides, versioning, and CI scripts that scale.

Trung HieuSep 11, 2026
🧭 Media

Background audio with media_kit and platform media sessions

Lock-screen controls, Bluetooth, and queue persistence.

Trung HieuSep 11, 2026
🧭 Design

Material 3 Expressive theming without fighting Flutter

ColorScheme.fromSeed, component themes, and dynamic color on Android.

Trung HieuSep 11, 2026
🧭 Platform

Maps, location, and permission UX in Flutter apps

Foreground vs background location and privacy nutrition labels.

Trung HieuSep 11, 2026
🧭 Enterprise

Logistics tracking UX under poor connectivity

Location batching, offline maps, and ETA honesty.

Trung HieuSep 11, 2026
🧭 i18n

Pseudolocales and expansion testing before translators

Finding truncation bugs without a full translation set.

Trung HieuSep 11, 2026
🧭 Platform

Local notifications that do not spam or break on Android 13+

Channels, permissions, and scheduled reliability.

Trung HieuSep 11, 2026
🧭 AI

Marketing on-device AI without lying

What "on-device" must mean for privacy claims.

Trung HieuSep 11, 2026
🧭 Design

Designing for Liquid Glass and Material without dual UIs

Adaptive chrome, materials, and platform-adaptive widgets.

Trung HieuSep 11, 2026
🧭 Performance

Isolates and compute() without the myths

What actually leaves the UI thread and what does not.

Trung HieuSep 11, 2026
🧭 Career

Mobile performance interview questions that matter

How strong candidates reason about jank and memory.

Trung HieuSep 11, 2026
🧭 Testing

Integration tests that survive real devices

patrol, native automation, and CI device farms for Flutter.

Trung HieuSep 11, 2026
🧭 Process

User communication during mobile incidents

In-app banners, status pages, and store replies.

Trung HieuSep 11, 2026
🧭 Monetization

Subscription groups, upgrades, and proration explained

How to structure tiers so users do not double-pay.

Trung HieuSep 11, 2026
🧭 Monetization

In-app purchases with StoreKit 2 and Play Billing in Flutter

Subscription groups, offers, and restore flows that pass review.

Trung HieuSep 11, 2026
🧭 Performance

Impeller on desktop: SDF text and Metal/Vulkan defaults

Flutter 3.47 makes Impeller the default desktop renderer — what changes for text and jank.

Trung HieuSep 11, 2026
🧭 Performance

Image caching and decode budgets in Flutter lists

precache, ResizeImage, and avoiding 12MP avatars in chat lists.

Trung HieuSep 11, 2026
🧭 i18n

Flutter localization with ARB and gen_l10n that translators like

Untranslated messages, plurals, and gender-aware copy.

Trung HieuSep 11, 2026
🧭 Networking

HTTP in Flutter: timeouts, retries, and cancellation

dio interceptors that do not hang the UI forever.

Trung HieuSep 11, 2026
🧭 Platform

Home screen widgets with Flutter shells

WidgetKit + Glance patterns and shared storage with Flutter.

Trung HieuSep 11, 2026
🧭 Process

Hiring mobile engineers in a Flutter+native world

Signals that predict ramp time and code quality.

Trung HieuSep 11, 2026
🧭 Animation

Hero animations without the glitches

FlightShuttleBuilder, tags that do not collide, and photo galleries.

Trung HieuSep 11, 2026
🧭 Enterprise

Healthcare mobile basics: beyond the buzzword checklist

Minimum security, audit logs, and BAAs.

Trung HieuSep 11, 2026
🧭 Policy

Health and wellness apps: regulations that bite

Medical device status, HIPAA-ish duties, and store labels.

Trung HieuSep 11, 2026
🧭 Android

Hybrid Composition++: Vulkan-composited platform views

Enable HCPP for WebView and maps without Virtual Display tearing.

Trung HieuSep 11, 2026
🧭 AI

Prompt injection defenses for mobile AI features

Input isolation, tool allowlists, and user-visible scopes.

Trung HieuSep 11, 2026
🧭 Enterprise

Accessibility procurement for public-sector mobile apps

VPAT-style docs, WCAG mapping, and audits.

Trung HieuSep 11, 2026
🧭 Navigation

go_router deep links and URL strategies that scale

Path parameters, redirects, and web URL strategies in one router.

Trung HieuSep 11, 2026
🧭 AI

GenUI: when agents compose widgets instead of markdown

A2UI and the Flutter GenUI SDK build live UI from structured agent output.

Trung HieuSep 11, 2026
🧭 AI

Genkit Dart: full-stack AI flows in one language

Model-agnostic tools, structured output, and observability for Flutter and servers.

Trung HieuSep 11, 2026
🧭 Games

Shipping a 2D mini-game inside a Flutter product

Flame overlays, monetization surfaces, and thermal budgets.

Trung HieuSep 11, 2026
🧭 AI

On-device Gemma with flutter_gemma and LiteRT-LM

Local inference across six Flutter platforms with GPU/NPU acceleration.

Trung HieuSep 11, 2026
🧭 Monetization

Paywall UX that converts without dark patterns

Value framing, trials, and regional pricing.

Trung HieuSep 11, 2026
🧭 Forms

Form validation that users finish

Field-level UX, async validators, and keyboard actions.

Trung HieuSep 11, 2026
🧭 Graphics

Fragment shaders: bind uniforms by name in Flutter

getUniformFloat, toImageSync, and high-bit textures for LUTs.

Trung HieuSep 11, 2026
🧭 Design

Shipping custom fonts without license landmines

OFL, embedding rights, and fallback stacks.

Trung HieuSep 11, 2026
🧭 Adaptive

Flutter on foldables and large screens in 2026

Two-pane layouts, hinge awareness, and Material adaptive components.

Trung HieuSep 11, 2026
🧭 Games

Parallax backgrounds and camera work in Flame

Layers, velocity ratios, and mobile GPU cost.

Trung HieuSep 11, 2026
🧭 CI

Firebase App Distribution for Android/iOS betas

Tester groups, CI upload, and release notes automation.

Trung HieuSep 11, 2026
🧭 AI

Firebase AI Logic: Gemini from Flutter without a custom backend

Client-side Gemini calls with App Check, Auth, and Server Prompt Templates.

Trung HieuSep 11, 2026
🧭 Enterprise

Fintech mobile compliance realities

KYC flows, audit trails, and regional licensing.

Trung HieuSep 11, 2026
🧭 Product

Feature flags and remote config without a mess

Kill switches, gradual rollout, and default-safe flags.

Trung HieuSep 11, 2026
🧭 Product

Feature flag cleanup sprints that actually happen

Kill dates, owners, and metrics that prove the flag is done.

Trung HieuSep 11, 2026
🧭 Analytics

Reading mobile experiment results without fooling yourself

SRM checks, guardrails, and multi-metric decisions.

Trung HieuSep 11, 2026
🧭 AI

Eval harnesses for mobile AI features

Golden prompts, regression sets, and release gates.

Trung HieuSep 11, 2026
🧭 Monetization

EU alternative payments and what Flutter teams must change

Core Technology Commission, storefront web distribution, and compliance.

Trung HieuSep 11, 2026
🧭 Enterprise

MDM, managed configuration, and enterprise Flutter apps

App config, kiosk modes, and BYOD realities.

Trung HieuSep 11, 2026
🧭 Strategy

Device profiles that define 2026 mobile UX

Low RAM, high refresh, foldables, and automotive.

Trung HieuSep 11, 2026
🧭 Enterprise

K-12 education apps and student privacy

FERPA-ish duties, parental consent, and ad bans.

Trung HieuSep 11, 2026
🧭 Strategy

When Flutter is wrong: choosing native iOS or Android

A decision framework for teams that feel FOMO from both ecosystems.

Trung HieuSep 11, 2026
🧭 Data

Offline-first Flutter with Drift and background sync

Local source of truth, conflict rules, and WorkManager handoff.

Trung HieuSep 11, 2026
🧭 Language

Dot shorthands in Flutter: cleaner enum and const syntax

Why the new Dart syntax makes Flutter UI code less noisy.

Trung HieuSep 11, 2026
🧭 Process

Mobile docs that stay accurate after ship

ADRs, runbooks, and README ownership.

Trung HieuSep 11, 2026
🧭 Tooling

DevTools Network and Memory views you should actually use

Finding leaked images and chatty APIs in ten minutes.

Trung HieuSep 11, 2026
🧭 Desktop

Window management APIs for Flutter desktop apps

Multi-window state, focus fixes, and native handle access.

Trung HieuSep 11, 2026
🧭 Desktop

Product flavors on Windows and Linux for CI matrices

Per-flavor assets and --flavor builds join Android/iOS on desktop.

Trung HieuSep 11, 2026
🧭 Design

Design tokens across Flutter, iOS, and Android

One source of truth for color, type, and spacing.

Trung HieuSep 11, 2026
🧭 Design

Governing a multi-platform design system

Contribution model, versioning, and deprecation.

Trung HieuSep 11, 2026
🧭 Process

Design reviews that catch mobile-specific failures

Keyboard, safe areas, small screens, and offline states.

Trung HieuSep 11, 2026
🧭 Process

A dependency update rhythm that avoids upgrade hell

Monthly bumps, changelog triage, and CI bots.

Trung HieuSep 11, 2026
🧭 Navigation

Universal Links and App Links that open the right screen

Host association files, verification, and Flutter routing.

Trung HieuSep 11, 2026
🧭 Privacy

GDPR/CCPA data deletion flows in mobile apps

Account deletion, export, and backend hard-delete SLAs.

Trung HieuSep 11, 2026
🧭 Design

Dark mode that does not look inverted

Elevation overlays, contrast ratios, and image treatment.

Trung HieuSep 11, 2026
🧭 Dart

Dart primary constructors in Flutter model code

Less boilerplate for immutable UI models and DTOs.

Trung HieuSep 11, 2026
🧭 UI

CupertinoMenuAnchor and RawMenuAnchor menus

Native-feeling iOS menus without a plugin stack.

Trung HieuSep 11, 2026
🧭 Quality

Error boundaries and Crashlytics for Flutter production apps

Zone errors, FlutterError.onError, and meaningful breadcrumbs.

Trung HieuSep 11, 2026
🧭 Quality

Symbolication done right for iOS and Android crashes

dSYM, mapping.txt, and CI upload steps that do not skip.

Trung HieuSep 11, 2026
🧭 Quality

Crash-free session SLOs for mobile teams

Setting targets by platform and release channel.

Trung HieuSep 11, 2026
🧭 Strategy

True cost of cross-platform in 2026

When Flutter wins, when native wins, and the hybrid middle.

Trung HieuSep 11, 2026
🧭 Add-to-App

Content-sized Flutter views inside native scrollables

isAutoResizable and content_wrap embed Flutter without fixed heights.

Trung HieuSep 11, 2026
🧭 Policy

UGC moderation stacks for mobile apps

Report flows, block lists, and human review SLAs.

Trung HieuSep 11, 2026
🧭 Performance

const constructors: the cheapest Flutter performance win

How const rebuilds become free and where teams forget them.

Trung HieuSep 11, 2026
🧭 Android

Hosting Jetpack Compose inside Flutter (and the reverse)

When to embed Compose views and how Hybrid Composition modes affect them.

Trung HieuSep 11, 2026
🧭 Design

What a mature Flutter component library includes

A11y, dark mode, goldens, and docs site.

Trung HieuSep 11, 2026
🧭 Process

Running a healthy app community on Discord/GitHub

Moderation, issue triage, and feedback loops.

Trung HieuSep 11, 2026
🧭 Dart

Codegen that pays for itself: freezed and json_serializable

Immutable models, unions, and less hand-written parse code.

Trung HieuSep 11, 2026
🧭 Deployment

Code push, hotfix, and what Apple/Google actually allow

OTAs, feature flags, and server-driven UI as safer alternatives.

Trung HieuSep 11, 2026
🧭 Architecture

Clean architecture in Flutter without ceremony

When layers help and when they are cargo cult.

Trung HieuSep 11, 2026
🧭 CI

GitHub Actions for Flutter with sane caches

Faster builds via pub, gradle, and derived data caches.

Trung HieuSep 11, 2026
🧭 Policy

Kids apps: COPPA, age gates, and store questionnaires

What changes when your audience includes children.

Trung HieuSep 11, 2026
🧭 Process

Release notes users actually read

Changelog tone, forced-upgrade messaging, and store copy.

Trung HieuSep 11, 2026
🧭 Security

Certificate Transparency and mobile network trust

Why CT matters for API domains and how to monitor.

Trung HieuSep 11, 2026
🧭 Process

Capacity planning for mobile platform teams

Shared services, review load, and upgrade debt.

Trung HieuSep 11, 2026
🧭 ML

On-device vision with Camera and ML Kit in Flutter

Live barcode scan, face detect, and frame throttling.

Trung HieuSep 11, 2026
🧭 Fundamentals

Debug, profile, and release: stop optimizing the wrong mode

Why jank you see in debug may not exist in release.

Trung HieuSep 11, 2026
🧭 Process

A bug report template that gets mobile issues fixed

Device matrix, build number, and repro videos.

Trung HieuSep 11, 2026
🧭 Policy

Alternative marketplaces: EU DMA and Brazil CADE rules

What changes for distribution and payments.

Trung HieuSep 11, 2026
🧭 Design

Brand refreshes without breaking mobile users

Token stages, co-existing themes, and migration UX.

Trung HieuSep 11, 2026
🧭 Safety

User safety features: block, mute, and restrict

Graph-level enforcement and push suppression.

Trung HieuSep 11, 2026
🧭 Security

Step-up authentication with biometrics for sensitive actions

Re-auth for payments, exports, and settings changes.

Trung HieuSep 11, 2026
🧭 Platform

Background work limits on iOS and Android in 2026

WorkManager, BGTask, and realistic sync intervals.

Trung HieuSep 11, 2026
🧭 Enterprise

SSO for enterprise mobile: OIDC and SAML realities

Browser auth sessions, MDM certs, and logout.

Trung HieuSep 11, 2026
🧭 Enterprise

Field-service apps: offline-first B2B patterns

Sync windows, media capture, and battery.

Trung HieuSep 11, 2026
🧭 Architecture

Escaping setState spaghetti with clear ownership

Local UI state vs app state and where Bloc/Riverpod fit.

Trung HieuSep 11, 2026
🧭 Platform

CarPlay and Android Auto with mobile companion apps

What belongs on the car screen and what does not.

Trung HieuSep 11, 2026
🧭 Security

Certificate pinning and network security on mobile

When pinning helps and when it breaks you.

Trung HieuSep 11, 2026
🧭 Process

ADRs for mobile architecture decisions

One page per irreversible choice, with context.

Trung HieuSep 11, 2026
🧭 Emerging

AR and visionOS companions for mobile products

Where AR belongs and how to keep scope honest.

Trung HieuSep 11, 2026
🧭 Deployment

The April 2027 SDK deadline for App Store uploads

Why you should upgrade Xcode and Flutter toolchains now.

Trung HieuSep 11, 2026
🧭 Design

App icon design that survives 2026 store grids

Safe zones, dark mode, and platform templates.

Trung HieuSep 11, 2026
🧭 iOS

Flutter and iOS app extensions without a second UI stack

Share extensions, widgets, and shared app groups.

Trung HieuSep 11, 2026
🧭 iOS

App Clips and Instant Apps with Flutter modules

Size limits, invocation URLs, and handoff to full apps.

Trung HieuSep 11, 2026
🧭 Security

Device integrity checks without ruining UX

App Attest, Play Integrity, and graceful degradation.

Trung HieuSep 11, 2026
🧭 Backend

API versioning strategies for mobile clients

Deprecation windows, feature negotiation, and forced upgrades.

Trung HieuSep 11, 2026
🧭 Deployment

Android App Bundles, ABI splits, and download size

What Play optimizes for you and what you must still do.

Trung HieuSep 11, 2026
🧭 Android

Preparing Flutter apps for Android 17

Local network protections, dynamic code loading, and AGP matrix.

Trung HieuSep 11, 2026
🧭 Analytics

A mobile analytics event schema that survives redesigns

Naming, required properties, and versioning.

Trung HieuSep 11, 2026
🧭 AI

Flutter AI Toolkit: production chat UX patterns

Streaming, tool calls, and provider-agnostic chat clients.

Trung HieuSep 11, 2026
🧭 AI

Tracing LLM calls inside mobile apps

Spans, token metrics, and privacy-safe logging.

Trung HieuSep 11, 2026
🧭 AI

Unit economics of AI features in mobile apps

Cost per request, free tiers, and routing cheap models first.

Trung HieuSep 11, 2026
🧭 AI Tooling

Agentic Hot Reload: closing the prompt-to-pixels loop

MCP-aware coding agents discover your running Flutter app and hot reload after edits.

Trung HieuSep 11, 2026
🧭 AI Tooling

Package skills and Agent Skills for Flutter teams

Ship domain expertise to coding agents without a giant system prompt.

Trung HieuSep 11, 2026
🧭 Policy

Age assurance requirements affecting mobile apps in 2026

Declared Age Range, Time Allowances, and store questionnaires.

Trung HieuSep 11, 2026
🧭 Auth

Account recovery UX that reduces support tickets

Email, device transfer, and identity proofing tradeoffs.

Trung HieuSep 11, 2026
🧭 A11y

Accessibility semantics checklist for Flutter forms

Labels, focus order, and contrast that pass audits.

Trung HieuSep 11, 2026
🧭 A11y

A practical mobile accessibility audit in one day

TalkBack/VoiceOver, contrast, and touch targets.

Trung HieuSep 11, 2026
🧭 Product

A/B testing mobile UI without wrecking performance

Assignment stability, offline fallback, and metric hygiene.

Trung HieuSep 11, 2026
📚 Deep Dive

Venera: custom reader layouts in Flutter

Comic/manga readers demand custom layout engines, caching, and library UX.

Trung HieuSep 10, 2026
🎵 Deep Dive

Spotube: a privacy-minded Flutter music client

Riverpod, drift, media_kit, and a multi-store release story — how Spotube ships music without a first-party backend.

Trung HieuSep 10, 2026
🎛️ Deep Dive

shadcn-flutter: porting a design system, not a theme

Tokens, primitives, and composites — how a design-system port stays maintainable.

Trung HieuSep 10, 2026
🛠️ Deep Dive

Serverpod: full-stack Dart behind Flutter

Generated clients, database, and auth — one language from SQL to widget.

Trung HieuSep 10, 2026
✍️ Deep Dive

Saber: handwriting notes and local-first files

Canvas input, highlighter compositing, and optional sync — a Flutter notes stack.

Trung HieuSep 10, 2026
🖥️ Deep Dive

RustDesk: Rust core, Flutter shell

How a remote-desktop product splits performance-critical Rust from a Flutter UI.

Trung HieuSep 10, 2026
📔 Deep Dive

Lotti: journaling with audio, habits, and a serious local DB

Complex local data models in Flutter — beyond todo-app tutorials.

Trung HieuSep 10, 2026
📡 Deep Dive

LocalSend: AirDrop-style transfer with zero cloud

A Flutter + Rust LAN protocol on port 53317 — lessons in local-first networking.

Trung HieuSep 10, 2026
🌐 Deep Dive

Jaspr: server-driven Dart for the web

The Flutter mental model on the server — including the framework that builds Flutter’s own docs site.

Trung HieuSep 10, 2026
📸 Deep Dive

Immich: architecture lessons from a 100k-star Flutter photo stack

How Immich combines a Flutter mobile client, NestJS API, and ML pipeline — and which patterns you can steal.

Trung HieuSep 10, 2026
🔐 Deep Dive

Hiddify Next: Flutter UI over a tunnel core

A cross-platform proxy client shows how to pair Flutter with a Go/Sing-box style core.

Trung HieuSep 10, 2026
🎧 Deep Dive

Harmony Music: offline-first player patterns

Library scan, queue, and audio service separation in a Flutter music app.

Trung HieuSep 10, 2026
🧩 Deep Dive

Forui: an opinionated Flutter UI system

Structure-first widgets and theming — a Material alternative worth evaluating.

Trung HieuSep 10, 2026
🦌 Deep Dive

Flutter Deer: a production-shaped practice project

A Chinese multi-flavor shop template that still teaches clean layering and test discipline.

Trung HieuSep 10, 2026
💬 Deep Dive

FluffyChat: Matrix chat in Flutter with real E2EE

How a Matrix client handles rooms, encryption, and multi-platform delivery from Flutter.

Trung HieuSep 10, 2026
🎮 Deep Dive

Flame: game loops inside Flutter

Component trees, game loops, and bridge packages — Flame’s place in a Flutter product.

Trung HieuSep 10, 2026
🔐 Deep Dive

Ente: end-to-end encrypted photos in Flutter

Crypto UX is a design problem. Ente shows how encrypted galleries stay usable.

Trung HieuSep 10, 2026
💸 Deep Dive

Cashew: finance UI that stays local

Charts, budgets, and local persistence patterns for a Flutter finance app.

Trung HieuSep 10, 2026
🧱 Deep Dive

Bloc: the boring architecture that scales

Events in, states out — why bloc remains a default for large Flutter teams.

Trung HieuSep 10, 2026
🔑 Deep Dive

What a secure Flutter authenticator must get right

TOTP apps treat secrets carefully — lessons even if your codebase is not Aegis itself.

Trung HieuSep 10, 2026
🔍 Deep Dive

Widget Previews are stable: iterate on UI without booting the whole app

Flutter 3.47 graduates Widget Previewer to stable with faster startup, theme matrices, and web asset sync.

Trung HieuSep 10, 2026
🕸️ Deep Dive

Flutter web Wasm: deferred loading for smaller first paint

Flutter is moving toward Wasm by default. Deferred loading lets you split modules and ship a smaller bootstrap.

Trung HieuSep 10, 2026
🍎 Deep Dive

UIScene lifecycle: the iOS 27 launch requirement Flutter apps must meet

Xcode 27 / iOS 27 require UIScene. Flutter migrates most apps automatically; custom AppDelegate paths need a manual pass.

Trung HieuSep 10, 2026
📦 Deep Dive

Swift Package Manager is the iOS/macOS default — leave CocoaPods behind

From Flutter 3.44, SwiftPM replaces CocoaPods for new iOS and macOS builds. How the CLI migrates you, what plugin authors must ship, and how to opt out briefly.

Trung HieuSep 10, 2026
🧱 Deep Dive

Standalone material_ui and cupertino_ui: what the 1.0 split changes

Flutter 3.47 ships opt-in standalone design packages. Here is why the split exists, how to migrate with dart fix, and how the compatibility bridge keeps mixed dependencies building.

Trung HieuSep 10, 2026
🗓️ Deep Dive

Public release windows: when your Flutter PR ships to stable

Flutter 3.41 publishes branch cutoff dates so contributors know which stable train their change boards.

Trung HieuSep 10, 2026
📁 Deep Dive

Ship only the assets each platform needs

Flutter 3.41 lets pubspec declare platforms per asset — smaller APKs by excluding desktop-only files.

Trung HieuSep 10, 2026
🪟 Deep Dive

Desktop multi-window APIs: popups, dialogs, and windowHandle

Flutter’s experimental windowing APIs grow with Canonical: popups on Linux/Windows, content-sized windows, and native handle access.

Trung HieuSep 10, 2026
🎨 Deep Dive

Impeller is now the default desktop renderer — what actually changes

Flutter 3.47 turns Impeller on by default for macOS, Windows, and Linux. Shader jank dies; SDF text sharpens; Skia opt-outs are temporary.

Trung HieuSep 10, 2026
🖼️ Deep Dive

Hybrid Composition++: fixing Android platform views without the jank

Flutter 3.44 introduces HCPP — OS-level compositing via Vulkan SurfaceControl for WebView, maps, and other native Android views.

Trung HieuSep 10, 2026
✨ Deep Dive

GenUI and A2UI: agents that compose widgets, not markdown

The GenUI SDK and A2UI protocol let agents build live Flutter UI — a shift from chat walls of text to structured, interactive experiences.

Trung HieuSep 10, 2026
🧠 Deep Dive

Genkit Dart: full-stack AI apps without leaving Dart

Genkit Dart brings model-agnostic AI flows, tools, and structured output to both servers and Flutter clients.

Trung HieuSep 10, 2026
📱 Deep Dive

On-device Gemma in Flutter: flutter_gemma and LiteRT-LM

Run Gemma models on-device across Flutter’s six platforms with GPU/NPU acceleration via LiteRT-LM.

Trung HieuSep 10, 2026
🧬 Deep Dive

Fragment shaders in Flutter: uniforms by name and sync textures

3.41–3.44 shader APIs get ergonomic: getUniformFloat by name, decodeImageFromPixelsSync, and high-bit textures for LUTs.

Trung HieuSep 10, 2026
🔥 Deep Dive

Firebase AI Logic in Flutter: Gemini without a custom backend

Call Gemini from Flutter via firebase_ai, keep prompts on the server, and learn from production patterns like MacroFactor.

Trung HieuSep 10, 2026
🍨 Deep Dive

Product flavors on Windows and Linux in Flutter 3.47

Desktop joins Android/iOS with real flavors — including per-flavor assets in pubspec and --flavor build flags.

Trung HieuSep 10, 2026
📋 Deep Dive

CupertinoMenuAnchor and modern Flutter menus

RawMenuAnchor powers CupertinoMenuAnchor and animated Material MenuAnchor — native-feeling menus without plugin stacks.

Trung HieuSep 10, 2026
📐 Deep Dive

Content-sized Flutter views in native parents

Flutter 3.41 lets embedded views size to content — critical for Flutter inside native scrollables.

Trung HieuSep 10, 2026
🤖 Deep Dive

Agentic Hot Reload: when your coding agent reloads the running app

Flutter 3.44 lets MCP-aware agents discover running apps and trigger hot reload — closing the loop from prompt to pixels.

Trung HieuSep 10, 2026
🧰 Deep Dive

Dart and Flutter Agent Skills: cheaper, better agent workflows

Official skills give coding agents production-grade steps for localization, integration tests, and more — with leaner MCP tools.

Trung HieuSep 10, 2026
🪟 Deep Dive

Slivers, properly: the protocol behind every Flutter scroll effect

A sliver is not a widget with a strange name — it is a layout protocol with its own constraints and geometry. Understand SliverConstraints and SliverGeometry and collapsing headers, sticky sections and pinned toolbars stop being magic.

Trung HieuSep 6, 2026
🔑 Deep Dive

Keys in Flutter: the one rule that explains every case

Keys are not an optimisation and they are not decoration. They exist because element reuse is decided by position and runtime type — and that decision is wrong exactly when your children can be reordered, inserted or removed.

Trung HieuSep 6, 2026
🔗 Guide

go_router and deep links: the parts the quickstart leaves out

Declaring routes is the easy half. Redirects that do not loop, nested shells with their own navigation stacks, typed routes, and the platform files that make a real https:// link open your app — that is the other half.

Trung HieuSep 5, 2026
🧭 Deep Dive

BuildContext is an element: reading the error messages that mention it

"No Scaffold widget found", "called before initState", "do not use BuildContext across async gaps" — three famous errors with one root cause. BuildContext is a handle on your position in the element tree, and every rule about it follows from that.

Trung HieuSep 5, 2026
🎨 Guide

Material 3 theming in Flutter: colour roles, not colour values

ColorScheme.fromSeed gives you a palette in one line and then people immediately override it back to hard-coded hex. Here is what the roles mean, when a seed is the wrong tool, and how ThemeExtension carries the tokens Material does not have.

Trung HieuSep 4, 2026
📝 Guide

Flutter forms past the toy example: async validation, focus, and autofill

Form and TextFormField cover the tutorial. Real forms need validation that talks to a server, errors that appear at the right moment, focus that moves like the platform expects, and a keyboard that does not cover the field being typed into.

Trung HieuSep 4, 2026
♿ Guide

Flutter accessibility: what the semantics tree actually reports

Flutter draws pixels, so screen readers cannot inspect your widgets. They read a separate semantics tree that Flutter builds and sends to the platform. Knowing what lands in that tree — and what silently does not — is the whole job.

Trung HieuSep 3, 2026
🌍 Guide

Flutter localization with ARB files: plurals, genders, and the parts that bite

Adding a second language is easy. Adding the fifth, with plurals that are correct in Polish and dates that are correct in Vietnamese, is where the ARB format and the intl package start to matter.

Trung HieuSep 2, 2026
📦 Guide

Shrinking a Flutter app: where the megabytes actually are

Nobody's Flutter app is 40 MB because of their Dart code. It is the engine floor, the assets nobody audited, the fonts nobody subset, and the ABIs you shipped to devices that cannot run them.

Trung HieuSep 1, 2026
🚀 Deep Dive

Flutter cold start: measuring the time before your first frame

Startup feels slow long before anyone profiles it. The fix starts with knowing which of the four phases you are actually in — process launch, engine init, Dart main, or your first frame — because each has a different lever.

Trung HieuAug 31, 2026
🧠 Deep Dive

Finding a Flutter memory leak: the five objects that never get disposed

Flutter memory leaks are boring, which is why they survive. Almost all of them are one of five patterns, and DevTools can point at the exact retaining path if you know which two buttons to press.

Trung HieuAug 30, 2026
🖼️ Deep Dive

The Flutter image pipeline: from a URL to pixels on screen

Image.network hides five distinct stages — key, fetch, decode, cache, paint. Every image bug you have (flicker on rebuild, blank on scroll back, memory spikes) is one specific stage misbehaving.

Trung HieuAug 29, 2026
📜 Deep Dive

Why your ListView is slow, and the four fixes that actually work

A janky list is almost never the list widget's fault. It is one of four things: you built everything at once, each item is too expensive, the scroll extent is unknown, or you are decoding full-size images per row.

Trung HieuAug 28, 2026
👆 Deep Dive

Why your tap doesn't register: hit testing and the gesture arena

A GestureDetector that ignores taps is not broken. It either was never hit-tested, or it lost an arena it did not know it entered. Both are visible once you know where to look.

Trung HieuAug 27, 2026
🎢 Deep Dive

Custom scroll physics: making a list stop where you want it to

ScrollPhysics is the smallest interface in Flutter that controls the most-felt behaviour. Four methods decide whether a list snaps, bounces, resists, or refuses to fling — and you rarely need to override more than one.

Trung HieuAug 26, 2026
🌈 Deep Dive

Fragment shaders in Flutter: the GPU escape hatch, and its costs

Flutter can load GLSL fragment shaders and run them on the GPU. That unlocks effects the widget layer cannot express — and introduces a compilation cost, a uniform-plumbing chore, and a set of platform caveats worth knowing before you commit.

Trung HieuAug 25, 2026
⚙️ Guide

A Flutter CI pipeline that catches real problems

Most Flutter CI configs run flutter test and stop. Here is a pipeline that also catches formatting drift, dependency rot, golden regressions, and the build failures that only appear on a clean machine — with the caching that keeps it under five minutes.

Trung HieuAug 24, 2026
🍦 Guide

Flutter flavors: one codebase, three apps, zero copy-pasted config

Dev, staging and production should be three installable apps with different icons, bundle ids and endpoints — built from the same source, with no runtime if-statement deciding which backend to call. Here is the full wiring on both platforms.

Trung HieuAug 23, 2026
🎯 Guide

Retrieval that doesn't lie: build the eval before you build the RAG

Most RAG failures are retrieval failures wearing a generation costume. Here is how to separate the two with a 50-question golden set, recall@k and MRR, and a regression harness that runs in CI.

Trung HieuAug 22, 2026
📐 Deep Dive

Stop parsing prose: schemas, tool calling, and output you can type-check

The path from regexing free text out of a model, to asking for JSON in the prompt, to a schema enforced at the API layer. Each step deletes a class of bug — and the last one still can't tell you whether the answer is true.

Trung HieuAug 22, 2026
🚦 Guide

Shipping an LLM feature: the demo is 20% of the work

The gap between a prompt that works in your terminal and something you can leave running for real users, in the order you actually build it: evals, guardrails, timeouts, a kill switch, safe logging, staged rollout.

Trung HieuAug 22, 2026
🧊 Deep Dive

Prompt caching in practice: the win is in the ordering, not the flag

Turning on prompt caching is one line. Getting hits is an architecture decision: everything invariant has to come first, and everything per-request has to come last. Here's how to order a prompt so the cache actually fires, and how to prove it did.

Trung HieuAug 22, 2026
🌐 Analysis

Flutter on the web compiled to WebAssembly: what you get, what you give up

flutter build web --wasm is not an optimization flag — it swaps dart2js for dart2wasm, requires WasmGC in the browser, and drops dart:html from under your dependency graph. Here is the mechanism, a real package:web and @JS interop example, and the limits that no compiler flag removes.

Trung HieuAug 22, 2026
🖥️ Analysis

Running a model on your own machine: the four cases where it actually wins

Local LLMs are neither a replacement for frontier APIs nor a toy. There are four workloads where running your own weights is the correct engineering answer — and a lot of arithmetic you can do before downloading anything.

Trung HieuAug 22, 2026
🧪 Guide

Flutter tests that fail for a reason: widget, golden and integration

The test pyramid applied honestly to Flutter: what unit, widget, golden and integration tests each prove, why pumpAndSettle is the wrong default, why goldens diverge between your Mac and Linux CI, and the four things that make a Flutter suite flaky.

Trung HieuAug 22, 2026
🧩 Guide

Riverpod, Bloc, signals or setState: choosing Flutter state management and living with it

One list screen with loading, error, data and pull-to-refresh, written four ways — setState, ValueNotifier, Riverpod and Bloc — so you compare real code instead of adjectives. Plus the point where setState genuinely stops being enough.

Trung HieuAug 22, 2026
🔐 Guide

Secrets in a Flutter app: what you can store, and what you cannot

Every string compiled into your app is readable by anyone who downloads it. That single fact decides which secrets belong on the device, which belong on a server, and what flutter_secure_storage is actually for.

Trung HieuAug 22, 2026
🔌 Deep Dive

Calling native code from Dart: platform channels, Pigeon, or FFI

Three tools, three different problems. MethodChannel and EventChannel talk to platform services. Pigeon generates the same thing without the string typos. dart:ffi calls a C library directly — synchronously, which is both the point and the danger.

Trung HieuAug 22, 2026
⏱️ Guide

A Flutter frame budget you can hold yourself to, instead of "optimise later"

Performance is not a debugging session you schedule after the feature ships. It is a budget with line items: 16.6 ms a frame at 60 Hz, 8.3 ms at 120 Hz, split across the UI and raster threads. Six rules, the code that enforces each one, and how to measure it so you can verify instead of trust.

Trung HieuAug 22, 2026
🗄️ Deep Dive

Offline-first Flutter: the local database is the source of truth, not the API

The architectural flip that makes an app work on a train: the UI reads only from SQLite, and the network becomes a background reconciler. A concrete Drift schema with an outbox table, idempotency keys, a real sync loop, and an honest look at why conflict resolution is a product decision no package can make for you.

Trung HieuAug 22, 2026
🧵 Deep Dive

Flutter isolates: what actually goes off the UI thread, and what doesn't

async/await does not move work to another thread — it only creates a suspension point. Here is what that means for jank, and how compute, Isolate.run, long-lived workers, TransferableTypedData and BackgroundIsolateBinaryMessenger fit together.

Trung HieuAug 22, 2026
🧩 Deep Dive

Impeller and a janky frame: how to find where the 16ms actually went

Impeller is the default renderer now, which killed the shader-compilation class of jank and made most of the old warmup advice useless. Here is what is left: profile mode, the UI-versus-raster split, and the five things that actually blow a frame budget — each with a fix.

Trung HieuAug 22, 2026
🧩 Deep Dive

When widget composition runs out: writing your own RenderObject

The escalation ladder from Row/Column to CustomPaint to CustomMultiChildLayout to a real RenderBox — then a complete, tested staggered-flow layout with performLayout, computeDryLayout, paint, hit testing and ParentData.

Trung HieuAug 22, 2026
🎬 Guide

Three kinds of Flutter animation, and how to pick the right one

Implicit, explicit and physics-based animation in Flutter, shown as the same card built three ways — plus the AnimatedBuilder child parameter, the dispose discipline, and why animating layout is not free.

Trung HieuAug 22, 2026
🎛️ Analysis

Fine-tune, retrieve, or write a better prompt: a decision you can defend

These three get compared as if they solve the same problem. They don't. Prompting changes instructions, retrieval changes knowledge, fine-tuning changes behaviour — map the symptom to the layer and the argument ends.

Trung HieuAug 22, 2026
🧮 Analysis

Cost per request: the number most AI features never compute

You know your monthly API bill. You probably don't know what one request costs, which means you can't tell a pricing problem from a usage problem. Here's the full model — including the multipliers that turn a half-cent call into a four-cent user action.

Trung HieuAug 22, 2026
🪟 Guide

Context engineering: a big window is not permission to fill it

Frontier models now take a million tokens of input. That changed what is possible, not what is wise. A practical method for deciding what goes into the context, in what order, and what to cut first when it overflows.

Trung HieuAug 22, 2026
🔍 Guide

AI code review nobody mutes: the problem is precision, not capability

A reviewer bot that posts thirty comments on a pull request gets turned off within a week, and its three real findings die with the twenty-seven nits. Designing for precision: repo conventions instead of best practices, a hard comment cap, falsifiable findings, an adversarial refutation pass, and the one metric that tunes it.

Trung HieuAug 22, 2026
🗃️ Analysis

Agent memory: files, a vector store, or just a bigger context window

Memory is three different problems sharing one name — recalling a fact, recalling a decision, recalling a procedure. Each wants a different mechanism, and picking the wrong one is why your agent confidently repeats a mistake from March.

Trung HieuAug 22, 2026
🌐 Tutorial

Using web technology to build mobile apps: the 2026 technical map

Four ways to get HTML/CSS/JS onto a phone — pure PWA, WebView shell, server-rendered shell, and the not-actually-WebView option. With verified numbers, store deadlines, hard limits, and a list of famous case studies that are dead but still being cited.

Trung HieuAug 21, 2026
🚚 Analysis

Lovable left Next.js in 6 months: the numbers, and the parts you can actually reuse

Lovable moved its whole product from Next.js on Vercel to TanStack Start on Cloudflare workerd in six months. Median TTFB down 49%, dev server 5x lighter — and one 11-minute OOM incident. What's worth copying, and what isn't.

Trung HieuAug 21, 2026
🔔 Guide

Push notifications in Flutter: the four states your app can be in

Foreground, background, terminated, and 'the user tapped the notification to open the app' each deliver the message through a different code path. Most notification bugs are one of those four being unhandled.

Trung HieuAug 21, 2026
🐦 Tutorial

What Flutter is: reading a 3D game built in 15 minutes to understand the whole framework

A Google PM built a 3D tic-tac-toe game with Flutter and published every prompt. I checked the timestamps against the commit history — and used that repo as an introduction to Flutter: widgets, Dart, hot reload, Impeller, and four bugs that show why you still have to understand the framework.

Trung HieuAug 21, 2026
🔬 Deep Dive

What the research actually says about prompt engineering — five claims, fact-checked

Five viral claims about prompt engineering, checked against the papers they cite. Two hold up, three don't — and the real findings are more useful than the folklore.

Trung HieuAug 20, 2026
🆓 Guide

Free AI coding agents: how to use OpenCode's free models without regretting it

OpenCode ships genuinely free hosted models with no API key. Here's what the free tier actually costs you, which work belongs on it, and the escalation ladder that keeps the bill sane.

Trung HieuAug 20, 2026
💳 Guide

In-app purchases in Flutter: the parts that are not about the button

Wiring up in_app_purchase takes an afternoon. Handling restores, interrupted purchases, refunds, and the receipt validation that stops a modified client from unlocking everything takes considerably longer — and that is the part that matters.

Trung HieuAug 20, 2026
💸 Guide

Using AI without burning cash: free tiers, caching, and routing

Three levers decide your AI bill: not paying for what's free, not paying twice for the same tokens, and not paying frontier prices for junior work. Here's what each is worth, with real numbers.

Trung HieuAug 20, 2026
🧑‍✈️ Guide

The chief-of-staff pattern: turning scattered AI chats into an agent team

Nine habits that turn a pile of one-off AI conversations into a system with a single front door, shared memory, logged work, and routines that run while you sleep.

Trung HieuAug 20, 2026
🖼️ Guide

Two layout systems that make AI posters look designed, not generated

Split-level composition and photo-to-abstract editorial: two reusable layout frameworks, with fill-in prompt templates and the zone ratios that make them work.

Trung HieuAug 20, 2026
⏱️ Deep Dive

Background work in Flutter: what the OS will actually let you run

Android and iOS have different, and equally firm, opinions about running code when your app is not in front. Understanding those limits before choosing a package saves you from building a feature the platform will quietly refuse to execute.

Trung HieuAug 19, 2026
🖥️ Guide

Flutter on desktop: the window is part of your app now

On mobile the OS owns the window. On desktop you own it — size, position, minimum bounds, multiple windows, the close button that must not close. Here is what changes when your Flutter app grows a title bar.

Trung HieuAug 18, 2026
🧩 Guide

Dependency injection in Flutter without the ceremony

get_it, Provider, Riverpod and plain constructors all solve the same problem: making a class say what it needs instead of reaching for it. Here is what each actually gives you, and the rule that decides between them.

Trung HieuAug 17, 2026
🚨 Deep Dive

Flutter error handling: catching what actually reaches users

Flutter has four separate places an error can escape: the framework, the current zone, the platform dispatcher, and the isolate. Wire all four, symbolicate the stack traces, and stop shipping crashes you never see.

Trung HieuAug 16, 2026
🎯 Deep Dive

Records and patterns in Dart: what they replace

Records give you multiple return values without a class. Patterns give you destructuring and exhaustive switches. Together they delete a category of boilerplate — and introduce a few habits worth forming early.

Trung HieuAug 15, 2026
🧬 Deep Dive

Extension types in Dart: a new name for an old value

Extension types give a primitive a distinct static type with no runtime allocation. That is a genuinely useful tool for ID confusion and unit errors — and a trap if you expect them to behave like classes.

Trung HieuAug 14, 2026
🌊 Deep Dive

Dart streams in depth: backpressure, broadcast, and the leaks in between

Most stream bugs are one of four things: a subscription never cancelled, a single-subscription stream listened to twice, an error that kills the stream, or a producer that ignores pause. Here is how each one works.

Trung HieuAug 13, 2026
⚙️ Guide

Code generation in Dart: build_runner without the frustration

build_runner is slow, opaque, and occasionally wrong — until you understand what it caches, why it conflicts, and which generators actually earn their build time. A practical guide to the whole pipeline.

Trung HieuAug 12, 2026
🔍 Guide

Writing a custom lint for your Dart codebase

Team conventions that live in a wiki get broken. Conventions that live in the analyzer get fixed before the pull request opens. Here is how the Dart analysis pipeline works and where a custom rule fits into it.

Trung HieuAug 11, 2026
🛠️ Analysis

Designing tools an AI agent can actually use

An agent that misuses your tools is usually not a model problem. It is a naming problem, a schema problem, or an error-message problem — and all three are yours to fix.

Trung HieuAug 10, 2026
🧭 Analysis

Choosing an embedding model: the questions that actually matter

Leaderboard rank is the least useful signal. Dimension count, context window, multilingual coverage, cost at your scale and the pain of ever changing your mind matter far more.

Trung HieuAug 9, 2026
✂️ Analysis

Chunking for retrieval: the decision that quietly caps your RAG quality

Chunk size is not a tuning knob you turn until the numbers look good. It encodes an assumption about what a question is, and every downstream problem in your RAG system traces back to it.

Trung HieuAug 8, 2026
🔭 Guide

Observability for LLM apps: tracing a non-deterministic system

You cannot reproduce a bad answer by re-running the request. What you can do is capture enough of the run that you never need to. Here is what to record, what to sample, and what to leave out.

Trung HieuAug 7, 2026
🛡️ Analysis

Prompt injection: what actually defends against it

There is no prompt that makes a model immune to instructions in its input. The defences that work are architectural: least privilege, human approval on the irreversible, and treating every retrieved byte as untrusted.

Trung HieuAug 6, 2026
👁️ Guide

Vision models in production: the parts the demo skips

Passing an image to a model is one line of code. Deciding what resolution to send, how to handle a 40-page scanned PDF, what to do when the answer is confidently wrong, and what it all costs — that is the actual project.

Trung HieuAug 5, 2026
🧪 Guide

Synthetic data for evals: building a test set you can trust

Generating test cases with a model is fast, cheap and quietly circular. Done carefully it gives you an evaluation suite before you have traffic; done carelessly it certifies your system against its own assumptions.

Trung HieuAug 4, 2026
🌊 Guide

Streaming UX: designing for tokens arriving one at a time

Streaming makes a slow model feel fast, and introduces a set of interface problems that batch responses never had: reflowing layout, half-finished markdown, cancellation, and errors that arrive after you have already shown output.

Trung HieuAug 3, 2026
🔀 Deep Dive

Model routing and cascades: paying for the intelligence you need

Sending every request to your largest model is the simplest architecture and usually the wrong one. Routing and cascading cut cost and latency substantially — if you can tell, before answering, which requests are hard.

Trung HieuAug 2, 2026
📱 Deep Dive

On-device AI in Flutter: what fits on a phone

Running a language model locally removes the API bill, the network dependency and the privacy question, and replaces them with a download size, a memory ceiling and a thermal budget. Here is how to tell which trade you are making.

Trung HieuAug 1, 2026
🎨 Tutorial

Creating a custom progress indicator in Flutter with CustomPaint

Build a circular progress ring from scratch with Container, Stack and CustomPaint — including the trigonometry behind startAngle and sweepAngle.

Trung HieuAug 23, 2021