The FlutterCook Blog
Long-form, code-first walkthroughs — build the widget, understand the maths, ship the polish.
video_player: the platform-backed Flutter video primitive
Showcase video_player in a production-minded Flutter architecture: controllers, initialization, buffering, subtitles, and lifecycle.
🧩 Open SourceVery Good CLI: opinionated Flutter scaffolding
Showcase very_good_cli in a production-minded Flutter architecture: project templates, flavors, testing defaults, and CI conventions.
🧩 Open Sourceurl_launcher: platform intent with a fallback contract
Showcase url_launcher in a production-minded Flutter architecture: canLaunchUrl, launch modes, web URLs, and unavailable handlers.
🧩 Open Sourcesupabase_flutter: auth, Postgres, realtime, and storage
Showcase supabase_flutter in a production-minded Flutter architecture: typed client initialization, auth events, RLS, and session persistence.
🧩 Open Sourceskeletonizer: loading UI from the real widget tree
Showcase skeletonizer in a production-minded Flutter architecture: fake data, skeleton annotations, layout stability, and accessibility.
🧩 Open Sourceshadcn_flutter: composable UI primitives for Flutter
Showcase shadcn_flutter in a production-minded Flutter architecture: unstyled primitives, New York style, Material interop, and theming.
🧩 Open SourceSentry Flutter: errors with release context
Showcase sentry_flutter in a production-minded Flutter architecture: crash reporting, performance traces, breadcrumbs, and source maps.
🧩 Open SourceRiverpod: testable async state without widget coupling
Showcase riverpod in a production-minded Flutter architecture: providers, async states, caching, and dependency overrides.
🧩 Open SourceRive: interactive vector animation as a state machine
Showcase rive in a production-minded Flutter architecture: artboards, state machines, inputs, and runtime performance.
🧩 Open SourcePigeon: typed platform channels generated from one schema
Showcase pigeon in a production-minded Flutter architecture: Dart/native codegen, API contracts, task queues, and versioning.
🧩 Open Sourcepermission_handler: runtime permission flows you can explain
Showcase permission_handler in a production-minded Flutter architecture: status, rationale, settings fallback, and platform declarations.
🧩 Open SourcePatrol: integration tests that can leave the Flutter sandbox
Showcase patrol in a production-minded Flutter architecture: native permissions, notifications, deep links, and device automation.
🧩 Open SourceMocktail: readable Dart mocks without generated files
Showcase mocktail in a production-minded Flutter architecture: fakes, stubbing, verification, fallback values, and test boundaries.
🧩 Open SourceMelos: make a Flutter monorepo a product boundary
Showcase melos in a production-minded Flutter architecture: workspace scripts, package graph, selective tests, and releases.
🧩 Open Sourcelocal_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.
🧩 Open Sourcejust_audio: controllable audio with streams
Showcase just_audio in a production-minded Flutter architecture: queues, position streams, playlists, speed, and background integration.
🧩 Open Sourcejson_serializable: boring JSON that survives refactors
Showcase json_serializable in a production-minded Flutter architecture: generated codecs, converters, checked mode, and API model boundaries.
🧩 Open SourceIsar: fast local objects with queryable indexes
Showcase isar in a production-minded Flutter architecture: collections, indexes, transactions, and reactive watchers.
🧩 Open Sourceintl: format locale-sensitive data deliberately
Showcase intl in a production-minded Flutter architecture: dates, numbers, plurals, locale initialization, and testable formats.
🧩 Open Sourceimage_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.
🧩 Open SourceGolden Toolkit: visual regression with intent
Showcase golden_toolkit in a production-minded Flutter architecture: device matrices, fonts, surface variants, and readable golden diffs.
🧩 Open Sourcego_router: URL-first navigation for Flutter
Showcase go_router in a production-minded Flutter architecture: declarative routing, deep links, redirects, and ShellRoute.
🧩 Open SourceFVM: pin Flutter versions per repository
Showcase fvm in a production-minded Flutter architecture: version files, CI parity, team onboarding, and migration cadence.
🧩 Open SourceFreezed: safer immutable models and unions
Showcase freezed in a production-minded Flutter architecture: immutable data classes, JSON unions, copyWith, and exhaustive UI states.
🧩 Open SourceForUI: accessible headless components for Flutter
Showcase forui in a production-minded Flutter architecture: composable controls, theming, keyboard behavior, and accessibility.
🧩 Open Sourceflutter_secure_storage: secrets behind platform keychains
Showcase flutter_secure_storage in a production-minded Flutter architecture: Keychain, Keystore, encrypted shared preferences, and migration.
🧩 Open Sourceflutter_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.
🧩 Open Sourceflutter_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.
🧩 Open Sourceflutter_bloc: explicit events and states at scale
Showcase flutter_bloc in a production-minded Flutter architecture: Cubit, Bloc, BlocListener, and predictable state transitions.
🧩 Open Sourceanimations: reusable Material motion patterns
Showcase animations in a production-minded Flutter architecture: OpenContainer, shared axis, fade-through, and route transitions.
🧩 Open SourceFlexColorScheme: 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.
🧩 Open Sourcefile_picker: one user intent across six platforms
Showcase file_picker in a production-minded Flutter architecture: filters, multiple selection, bytes, and platform-specific paths.
🧩 Open SourceEquatable: value semantics for Dart state objects
Showcase equatable in a production-minded Flutter architecture: equality, props, sealed states, and predictable rebuild checks.
🧩 Open SourceDrift: typed SQL for an offline-first Flutter app
Showcase drift in a production-minded Flutter architecture: typed tables, migrations, reactive queries, and transactions.
🧩 Open Sourcedesktop_multi_window: isolate desktop surfaces intentionally
Showcase desktop_multi_window in a production-minded Flutter architecture: window lifecycle, arguments, isolate boundaries, and platform constraints.
🧩 Open SourceDio: composeable networking with interceptors
Showcase dio in a production-minded Flutter architecture: interceptors, cancellation, retries, and typed error mapping.
🧩 Open Sourceconnectivity_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.
🧩 Open Sourcecamera: a real capture pipeline, not just a preview
Showcase camera in a production-minded Flutter architecture: controller lifecycle, image streams, permissions, and orientation.
🧩 Open Sourcebuild_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.
🧩 Open SourceAppwrite Flutter: backend services with explicit clients
Showcase appwrite in a production-minded Flutter architecture: endpoint/project configuration, auth, databases, storage, and functions.
🧭 ToolingWidget Previewer is stable: isolate UI without booting the app
Faster startup, PreviewThemeData matrices, and web asset sync in 3.47.
🧭 WebSEO for Flutter web: when to prerender and when not to
Documented limits, hybrid HTML, and marketing page strategies.
🧭 WebEmbedding Flutter into an existing marketing site
Element embedding, lifecycle, and SEO-safe boundaries.
🧭 PlatformWear companions: watchOS and Wear OS with Flutter phones
Sync patterns and tiny UI constraints.
🧭 WebWasm deferred loading: split Flutter web for first paint
Opt into --wasm and --enable-wasm-deferred-loading for smaller boot bundles.
🧭 StrategyShipping mobile apps for the Vietnam market in 2026
Payments, localization, and store considerations.
🧭 iOSUIScene lifecycle: the iOS 27 launch gate for Flutter apps
Xcode 27 fails launches without UIScene. What Flutter migrates automatically.
🧭 ProcessA weekly mobile crash triage that actually reduces issues
Triage boards, owner assignment, and release health gates.
🧭 SecurityThreat modeling a mobile app in one workshop
Assets, attackers, and mitigations that fit the product.
🧭 TestingGolden tests for design systems
Font loading, surface sizes, and review workflow for visual diffs.
🧭 DeploymentTestFlight internal vs external testing that finds real bugs
Groups, feedback, and build expiry planning.
🧭 ProcessA mobile technical debt inventory that leaders fund
Quantify risk, user impact, and paydown capacity.
🧭 ProcessA 2026 skills roadmap for Flutter teams
What to learn next: Impeller, SwiftPM, AI tooling, adaptive UI.
🧭 AdaptiveKeyboard shortcuts and pointer support for tablets
Shortcuts widget, hover, and trackpad scrolling.
🧭 DartSwitch expressions for cleaner Flutter mapping
Mapping enums and states to widgets without arrow soup.
🧭 PlatformSwift Package Manager plugin migration checklist for Flutter
What iOS/macOS plugin authors must ship after SwiftPM became the default.
🧭 PlatformStylus pressure and tilt input in Flutter
Apple Pencil, S-Pen, and Windows pen APIs.
🧭 AIStructured output and tool calling in Flutter AI apps
JSON schema, validation, and UI for tool confirmation.
🧭 AIStreaming LLM responses into Flutter UIs token by token
Partial JSON, interruptibility, and scroll locking.
🧭 ProductReplying to store reviews without sounding like a bot
Tone, escalation paths, and version-specific answers.
🧭 ProductSKStoreReview and in-app review prompts that do not annoy
Timing, frequency caps, and happy-path triggers.
🧭 PolicyMapping App Store guidelines to common Flutter features
UGC, payments, health, and kids categories.
🧭 ProductASO for Flutter apps: screenshots, keywords, and ratings
Store listing experiments that move install conversion.
🧭 PerformanceCold start budgets for Flutter apps
What actually shows up first and how to shave hundreds of milliseconds.
🧭 Deep DiveMigrating 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.
🧭 LayoutSlivers that scroll without jank
CustomScrollView, SliverList.builder, and avoiding layout thrash.
🧭 BackendServerpod: one language from SQL to Flutter widgets
Generated clients, auth, and why Flutter-first teams pick Dart backends.
🧭 AuthMobile session management: refresh tokens done right
Rotation, reuse detection, and logout everywhere.
🧭 SecuritySecure storage and biometrics for Flutter tokens
Keychain/Keystore, biometric gates, and token rotation.
🧭 SecurityStoring tokens with Secure Enclave / StrongBox
Key generation, access control, and fallbacks.
🧭 SecurityRedacting secrets from mobile logs and crash reports
What to scrub before the device leaves the pocket.
🧭 StrategySEA market expansion checklist for mobile products
Languages, payments, and device profiles by country.
🧭 ProductBuilding store screenshots that convert
Narrative order, captions, and device frames for 2026 stores.
🧭 Platformflutter_rust_bridge for heavy compute in Flutter
Porting hot paths to Rust without rewriting the UI.
🧭 i18nRTL layouts that do not look broken in Flutter
Directionality, icons, and mirrored gestures.
🧭 ProcessCommunicating mobile roadmaps without over-promising
Betas, kill criteria, and store review buffers.
🧭 StateRiverpod patterns that survive production scale
Family, auto-dispose, and testing without pumping the whole app.
🧭 EnterpriseRetail POS companions and handheld workflows
Barcode, battery, and rugged device testing.
🧭 ProcessRunning a remote mobile team across timezones
Release ownership, design pairing, and incident follow-the-sun.
🧭 ProcessPublic release windows: when your Flutter PR ships
Branch cutoffs for 3.41/3.44/3.47/3.50 so teams can plan upgrades.
🧭 DeploymentMobile rollback playbooks when stores are slow
Remote kill, staged rollout, and server-side disable.
🧭 ProcessA mobile release checklist that prevents Friday fires
Store assets, crash-free gates, and rollback plans.
🧭 MonetizationRefund handling that protects ratings
Proactive credits, store flows, and support macros.
🧭 A11yprefers-reduced-motion and Flutter animations
MediaQuery disableAnimations and designing calm alternatives.
🧭 AIRAG on mobile: what belongs on-device vs server
Embeddings, sync, and battery-aware retrieval.
🧭 UXNotification permission primers that earn the grant
Timing, copy, and pre-permission education screens.
🧭 ToolingFlutter Property Editor: inspect widgets without print debugging
Edit properties live from DevTools while iterating on a screen.
🧭 AIPrompt caching on mobile AI calls
Prefix stability, cost cuts, and cache invalidation.
🧭 iOSPrivacy manifests and required reason APIs for Flutter plugins
What App Store privacy nutrition labels mean for plugin authors.
🧭 AndroidPredictive back animations in Flutter Android apps
What users expect on gesture navigation and how to adopt it.
🧭 ProcessBlameless mobile incident postmortems
Timeline, user impact, and action items that get done.
🧭 CareerPortfolio Flutter projects that get interviews in 2026
Show offline, a11y, performance, and CI — not just UI.
🧭 PolicyGoogle Play policy changes mobile teams should track
Data safety, target API, and account deletion.
🧭 PlatformPlatform channels vs FFI in 2026: pick the right bridge
Throughput, types, and when to reach for flutter_rust_bridge.
🧭 PerformanceShip only the assets each platform needs
pubspec platforms: keys keep desktop files out of mobile APKs.
🧭 PlatformPigeon: typed platform channels that scale
Generate Kotlin/Swift codecs and stop hand-writing MethodChannel maps.
🧭 PrivacyPhoto library access: limited libraries and privacy labels
PHPicker, partial access, and Android photo picker.
🧭 PerformanceSetting a frame budget your product team understands
16ms is engineering language. Translate it to UX outcomes.
🧭 MonetizationMobile payment fraud signals worth watching
Refund spikes, device farms, and promo abuse.
🧭 SecurityPasskeys and passwordless login in mobile apps
ASAuthorization, Credential Manager, and account recovery UX.
🧭 UIPagination and infinite scroll without layout jank
Cursor APIs, item extents, and loading states that do not thrash.
🧭 ToolingHow to pick a Flutter package in 2026
Maintenance signals, platform coverage, and pub scores that matter.
🧭 LearningHow to study open-source Flutter apps without drowning
Repo maps, architecture notes, and stealable patterns.
🧭 AIProduct patterns for on-device LLMs in mobile apps
Download UX, thermal limits, and privacy marketing that is true.
🧭 ProcessMobile on-call runbooks that juniors can execute
Dashboards, first checks, and escalation trees.
🧭 ProductMobile OKRs that engineering can influence
Session quality, task success, and crash-free as shared goals.
🧭 DataSync conflict resolution patterns for mobile apps
Last-write-wins, CRDTs, and when to ask the user.
🧭 AIGraceful degradation when AI is unavailable
Feature flags, local heuristics, and honest empty states.
🧭 QualityMobile observability cost control
Sampling, cardinality, and what to keep forever.
🧭 QualityMobile observability: Sentry, Crashlytics, and custom traces
Correlate crashes with performance and releases.
🧭 DeploymentObfuscation, symbols, and secrets in Flutter release builds
Split-debug-info, tree-shake icons, and never ship API keys in Dart.
🧭 NavigationState restoration across process death
RestorationMixin, restorationIds, and why scroll position matters.
🧭 Add-to-AppMultiple Flutter instances in one host app
Memory cost, engines, and when a single engine is enough.
🧭 AIMultimodal AI: camera to structured data in Flutter
Image sizing, privacy, and latency budgets for vision tasks.
🧭 DesktopDesktop multi-window: popups, dialogs, and windowHandle
Experimental windowing APIs accelerate with Canonical as desktop steward.
🧭 AuthMulti-account apps without token soup
Account switchers, scoped storage, and push routing.
🧭 AIModel routing and cascades for mobile AI
Cheap first, escalate on uncertainty, measure quality.
🧭 QAA 20-minute mobile smoke checklist before every release
Login, pay, push, offline, and deep link golden paths.
🧭 StrategyMoving Android XML / UIKit apps to Flutter gradually
Add-to-app first screens and shared navigation contracts.
🧭 StrategyMigrating from React Native to Flutter in 2026
Strangler patterns, design system mapping, and risk.
🧭 MigrationMigrating large apps to Material 3 Expressive
Component themes, regression goldens, and staged rollout.
🧭 PerformanceWhy your device lab needs a mid-tier Android
The phone most users have is not the phone engineers carry.
🧭 PrivacyCamera and microphone permissions with honest UX
When to request, indicators, and background rules.
🧭 UXHaptics and microinteractions that feel native
HapticFeedback, spring curves, and when less is more.
🧭 ToolingMelos monorepos for Flutter apps and packages
Local path overrides, versioning, and CI scripts that scale.
🧭 MediaBackground audio with media_kit and platform media sessions
Lock-screen controls, Bluetooth, and queue persistence.
🧭 DesignMaterial 3 Expressive theming without fighting Flutter
ColorScheme.fromSeed, component themes, and dynamic color on Android.
🧭 PlatformMaps, location, and permission UX in Flutter apps
Foreground vs background location and privacy nutrition labels.
🧭 EnterpriseLogistics tracking UX under poor connectivity
Location batching, offline maps, and ETA honesty.
🧭 i18nPseudolocales and expansion testing before translators
Finding truncation bugs without a full translation set.
🧭 PlatformLocal notifications that do not spam or break on Android 13+
Channels, permissions, and scheduled reliability.
🧭 AIMarketing on-device AI without lying
What "on-device" must mean for privacy claims.
🧭 DesignDesigning for Liquid Glass and Material without dual UIs
Adaptive chrome, materials, and platform-adaptive widgets.
🧭 PerformanceIsolates and compute() without the myths
What actually leaves the UI thread and what does not.
🧭 CareerMobile performance interview questions that matter
How strong candidates reason about jank and memory.
🧭 TestingIntegration tests that survive real devices
patrol, native automation, and CI device farms for Flutter.
🧭 ProcessUser communication during mobile incidents
In-app banners, status pages, and store replies.
🧭 MonetizationSubscription groups, upgrades, and proration explained
How to structure tiers so users do not double-pay.
🧭 MonetizationIn-app purchases with StoreKit 2 and Play Billing in Flutter
Subscription groups, offers, and restore flows that pass review.
🧭 PerformanceImpeller on desktop: SDF text and Metal/Vulkan defaults
Flutter 3.47 makes Impeller the default desktop renderer — what changes for text and jank.
🧭 PerformanceImage caching and decode budgets in Flutter lists
precache, ResizeImage, and avoiding 12MP avatars in chat lists.
🧭 i18nFlutter localization with ARB and gen_l10n that translators like
Untranslated messages, plurals, and gender-aware copy.
🧭 NetworkingHTTP in Flutter: timeouts, retries, and cancellation
dio interceptors that do not hang the UI forever.
🧭 PlatformHome screen widgets with Flutter shells
WidgetKit + Glance patterns and shared storage with Flutter.
🧭 ProcessHiring mobile engineers in a Flutter+native world
Signals that predict ramp time and code quality.
🧭 AnimationHero animations without the glitches
FlightShuttleBuilder, tags that do not collide, and photo galleries.
🧭 EnterpriseHealthcare mobile basics: beyond the buzzword checklist
Minimum security, audit logs, and BAAs.
🧭 PolicyHealth and wellness apps: regulations that bite
Medical device status, HIPAA-ish duties, and store labels.
🧭 AndroidHybrid Composition++: Vulkan-composited platform views
Enable HCPP for WebView and maps without Virtual Display tearing.
🧭 AIPrompt injection defenses for mobile AI features
Input isolation, tool allowlists, and user-visible scopes.
🧭 EnterpriseAccessibility procurement for public-sector mobile apps
VPAT-style docs, WCAG mapping, and audits.
🧭 Navigationgo_router deep links and URL strategies that scale
Path parameters, redirects, and web URL strategies in one router.
🧭 AIGenUI: when agents compose widgets instead of markdown
A2UI and the Flutter GenUI SDK build live UI from structured agent output.
🧭 AIGenkit Dart: full-stack AI flows in one language
Model-agnostic tools, structured output, and observability for Flutter and servers.
🧭 GamesShipping a 2D mini-game inside a Flutter product
Flame overlays, monetization surfaces, and thermal budgets.
🧭 AIOn-device Gemma with flutter_gemma and LiteRT-LM
Local inference across six Flutter platforms with GPU/NPU acceleration.
🧭 MonetizationPaywall UX that converts without dark patterns
Value framing, trials, and regional pricing.
🧭 FormsForm validation that users finish
Field-level UX, async validators, and keyboard actions.
🧭 GraphicsFragment shaders: bind uniforms by name in Flutter
getUniformFloat, toImageSync, and high-bit textures for LUTs.
🧭 DesignShipping custom fonts without license landmines
OFL, embedding rights, and fallback stacks.
🧭 AdaptiveFlutter on foldables and large screens in 2026
Two-pane layouts, hinge awareness, and Material adaptive components.
🧭 GamesParallax backgrounds and camera work in Flame
Layers, velocity ratios, and mobile GPU cost.
🧭 CIFirebase App Distribution for Android/iOS betas
Tester groups, CI upload, and release notes automation.
🧭 AIFirebase AI Logic: Gemini from Flutter without a custom backend
Client-side Gemini calls with App Check, Auth, and Server Prompt Templates.
🧭 EnterpriseFintech mobile compliance realities
KYC flows, audit trails, and regional licensing.
🧭 ProductFeature flags and remote config without a mess
Kill switches, gradual rollout, and default-safe flags.
🧭 ProductFeature flag cleanup sprints that actually happen
Kill dates, owners, and metrics that prove the flag is done.
🧭 AnalyticsReading mobile experiment results without fooling yourself
SRM checks, guardrails, and multi-metric decisions.
🧭 AIEval harnesses for mobile AI features
Golden prompts, regression sets, and release gates.
🧭 MonetizationEU alternative payments and what Flutter teams must change
Core Technology Commission, storefront web distribution, and compliance.
🧭 EnterpriseMDM, managed configuration, and enterprise Flutter apps
App config, kiosk modes, and BYOD realities.
🧭 StrategyDevice profiles that define 2026 mobile UX
Low RAM, high refresh, foldables, and automotive.
🧭 EnterpriseK-12 education apps and student privacy
FERPA-ish duties, parental consent, and ad bans.
🧭 StrategyWhen Flutter is wrong: choosing native iOS or Android
A decision framework for teams that feel FOMO from both ecosystems.
🧭 DataOffline-first Flutter with Drift and background sync
Local source of truth, conflict rules, and WorkManager handoff.
🧭 LanguageDot shorthands in Flutter: cleaner enum and const syntax
Why the new Dart syntax makes Flutter UI code less noisy.
🧭 ProcessMobile docs that stay accurate after ship
ADRs, runbooks, and README ownership.
🧭 ToolingDevTools Network and Memory views you should actually use
Finding leaked images and chatty APIs in ten minutes.
🧭 DesktopWindow management APIs for Flutter desktop apps
Multi-window state, focus fixes, and native handle access.
🧭 DesktopProduct flavors on Windows and Linux for CI matrices
Per-flavor assets and --flavor builds join Android/iOS on desktop.
🧭 DesignDesign tokens across Flutter, iOS, and Android
One source of truth for color, type, and spacing.
🧭 DesignGoverning a multi-platform design system
Contribution model, versioning, and deprecation.
🧭 ProcessDesign reviews that catch mobile-specific failures
Keyboard, safe areas, small screens, and offline states.
🧭 ProcessA dependency update rhythm that avoids upgrade hell
Monthly bumps, changelog triage, and CI bots.
🧭 NavigationUniversal Links and App Links that open the right screen
Host association files, verification, and Flutter routing.
🧭 PrivacyGDPR/CCPA data deletion flows in mobile apps
Account deletion, export, and backend hard-delete SLAs.
🧭 DesignDark mode that does not look inverted
Elevation overlays, contrast ratios, and image treatment.
🧭 DartDart primary constructors in Flutter model code
Less boilerplate for immutable UI models and DTOs.
🧭 UICupertinoMenuAnchor and RawMenuAnchor menus
Native-feeling iOS menus without a plugin stack.
🧭 QualityError boundaries and Crashlytics for Flutter production apps
Zone errors, FlutterError.onError, and meaningful breadcrumbs.
🧭 QualitySymbolication done right for iOS and Android crashes
dSYM, mapping.txt, and CI upload steps that do not skip.
🧭 QualityCrash-free session SLOs for mobile teams
Setting targets by platform and release channel.
🧭 StrategyTrue cost of cross-platform in 2026
When Flutter wins, when native wins, and the hybrid middle.
🧭 Add-to-AppContent-sized Flutter views inside native scrollables
isAutoResizable and content_wrap embed Flutter without fixed heights.
🧭 PolicyUGC moderation stacks for mobile apps
Report flows, block lists, and human review SLAs.
🧭 Performanceconst constructors: the cheapest Flutter performance win
How const rebuilds become free and where teams forget them.
🧭 AndroidHosting Jetpack Compose inside Flutter (and the reverse)
When to embed Compose views and how Hybrid Composition modes affect them.
🧭 DesignWhat a mature Flutter component library includes
A11y, dark mode, goldens, and docs site.
🧭 ProcessRunning a healthy app community on Discord/GitHub
Moderation, issue triage, and feedback loops.
🧭 DartCodegen that pays for itself: freezed and json_serializable
Immutable models, unions, and less hand-written parse code.
🧭 DeploymentCode push, hotfix, and what Apple/Google actually allow
OTAs, feature flags, and server-driven UI as safer alternatives.
🧭 ArchitectureClean architecture in Flutter without ceremony
When layers help and when they are cargo cult.
🧭 CIGitHub Actions for Flutter with sane caches
Faster builds via pub, gradle, and derived data caches.
🧭 PolicyKids apps: COPPA, age gates, and store questionnaires
What changes when your audience includes children.
🧭 ProcessRelease notes users actually read
Changelog tone, forced-upgrade messaging, and store copy.
🧭 SecurityCertificate Transparency and mobile network trust
Why CT matters for API domains and how to monitor.
🧭 ProcessCapacity planning for mobile platform teams
Shared services, review load, and upgrade debt.
🧭 MLOn-device vision with Camera and ML Kit in Flutter
Live barcode scan, face detect, and frame throttling.
🧭 FundamentalsDebug, profile, and release: stop optimizing the wrong mode
Why jank you see in debug may not exist in release.
🧭 ProcessA bug report template that gets mobile issues fixed
Device matrix, build number, and repro videos.
🧭 PolicyAlternative marketplaces: EU DMA and Brazil CADE rules
What changes for distribution and payments.
🧭 DesignBrand refreshes without breaking mobile users
Token stages, co-existing themes, and migration UX.
🧭 SafetyUser safety features: block, mute, and restrict
Graph-level enforcement and push suppression.
🧭 SecurityStep-up authentication with biometrics for sensitive actions
Re-auth for payments, exports, and settings changes.
🧭 PlatformBackground work limits on iOS and Android in 2026
WorkManager, BGTask, and realistic sync intervals.
🧭 EnterpriseSSO for enterprise mobile: OIDC and SAML realities
Browser auth sessions, MDM certs, and logout.
🧭 EnterpriseField-service apps: offline-first B2B patterns
Sync windows, media capture, and battery.
🧭 ArchitectureEscaping setState spaghetti with clear ownership
Local UI state vs app state and where Bloc/Riverpod fit.
🧭 PlatformCarPlay and Android Auto with mobile companion apps
What belongs on the car screen and what does not.
🧭 SecurityCertificate pinning and network security on mobile
When pinning helps and when it breaks you.
🧭 ProcessADRs for mobile architecture decisions
One page per irreversible choice, with context.
🧭 EmergingAR and visionOS companions for mobile products
Where AR belongs and how to keep scope honest.
🧭 DeploymentThe April 2027 SDK deadline for App Store uploads
Why you should upgrade Xcode and Flutter toolchains now.
🧭 DesignApp icon design that survives 2026 store grids
Safe zones, dark mode, and platform templates.
🧭 iOSFlutter and iOS app extensions without a second UI stack
Share extensions, widgets, and shared app groups.
🧭 iOSApp Clips and Instant Apps with Flutter modules
Size limits, invocation URLs, and handoff to full apps.
🧭 SecurityDevice integrity checks without ruining UX
App Attest, Play Integrity, and graceful degradation.
🧭 BackendAPI versioning strategies for mobile clients
Deprecation windows, feature negotiation, and forced upgrades.
🧭 DeploymentAndroid App Bundles, ABI splits, and download size
What Play optimizes for you and what you must still do.
🧭 AndroidPreparing Flutter apps for Android 17
Local network protections, dynamic code loading, and AGP matrix.
🧭 AnalyticsA mobile analytics event schema that survives redesigns
Naming, required properties, and versioning.
🧭 AIFlutter AI Toolkit: production chat UX patterns
Streaming, tool calls, and provider-agnostic chat clients.
🧭 AITracing LLM calls inside mobile apps
Spans, token metrics, and privacy-safe logging.
🧭 AIUnit economics of AI features in mobile apps
Cost per request, free tiers, and routing cheap models first.
🧭 AI ToolingAgentic Hot Reload: closing the prompt-to-pixels loop
MCP-aware coding agents discover your running Flutter app and hot reload after edits.
🧭 AI ToolingPackage skills and Agent Skills for Flutter teams
Ship domain expertise to coding agents without a giant system prompt.
🧭 PolicyAge assurance requirements affecting mobile apps in 2026
Declared Age Range, Time Allowances, and store questionnaires.
🧭 AuthAccount recovery UX that reduces support tickets
Email, device transfer, and identity proofing tradeoffs.
🧭 A11yAccessibility semantics checklist for Flutter forms
Labels, focus order, and contrast that pass audits.
🧭 A11yA practical mobile accessibility audit in one day
TalkBack/VoiceOver, contrast, and touch targets.
🧭 ProductA/B testing mobile UI without wrecking performance
Assignment stability, offline fallback, and metric hygiene.
📚 Deep DiveVenera: custom reader layouts in Flutter
Comic/manga readers demand custom layout engines, caching, and library UX.
🎵 Deep DiveSpotube: 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.
🎛️ Deep Diveshadcn-flutter: porting a design system, not a theme
Tokens, primitives, and composites — how a design-system port stays maintainable.
🛠️ Deep DiveServerpod: full-stack Dart behind Flutter
Generated clients, database, and auth — one language from SQL to widget.
✍️ Deep DiveSaber: handwriting notes and local-first files
Canvas input, highlighter compositing, and optional sync — a Flutter notes stack.
🖥️ Deep DiveRustDesk: Rust core, Flutter shell
How a remote-desktop product splits performance-critical Rust from a Flutter UI.
📔 Deep DiveLotti: journaling with audio, habits, and a serious local DB
Complex local data models in Flutter — beyond todo-app tutorials.
📡 Deep DiveLocalSend: AirDrop-style transfer with zero cloud
A Flutter + Rust LAN protocol on port 53317 — lessons in local-first networking.
🌐 Deep DiveJaspr: server-driven Dart for the web
The Flutter mental model on the server — including the framework that builds Flutter’s own docs site.
📸 Deep DiveImmich: 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.
🔐 Deep DiveHiddify Next: Flutter UI over a tunnel core
A cross-platform proxy client shows how to pair Flutter with a Go/Sing-box style core.
🎧 Deep DiveHarmony Music: offline-first player patterns
Library scan, queue, and audio service separation in a Flutter music app.
🧩 Deep DiveForui: an opinionated Flutter UI system
Structure-first widgets and theming — a Material alternative worth evaluating.
🦌 Deep DiveFlutter Deer: a production-shaped practice project
A Chinese multi-flavor shop template that still teaches clean layering and test discipline.
💬 Deep DiveFluffyChat: Matrix chat in Flutter with real E2EE
How a Matrix client handles rooms, encryption, and multi-platform delivery from Flutter.
🎮 Deep DiveFlame: game loops inside Flutter
Component trees, game loops, and bridge packages — Flame’s place in a Flutter product.
🔐 Deep DiveEnte: end-to-end encrypted photos in Flutter
Crypto UX is a design problem. Ente shows how encrypted galleries stay usable.
💸 Deep DiveCashew: finance UI that stays local
Charts, budgets, and local persistence patterns for a Flutter finance app.
🧱 Deep DiveBloc: the boring architecture that scales
Events in, states out — why bloc remains a default for large Flutter teams.
🔑 Deep DiveWhat a secure Flutter authenticator must get right
TOTP apps treat secrets carefully — lessons even if your codebase is not Aegis itself.
🔍 Deep DiveWidget 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.
🕸️ Deep DiveFlutter 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.
🍎 Deep DiveUIScene 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.
📦 Deep DiveSwift 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.
🧱 Deep DiveStandalone 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.
🗓️ Deep DivePublic 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.
📁 Deep DiveShip only the assets each platform needs
Flutter 3.41 lets pubspec declare platforms per asset — smaller APKs by excluding desktop-only files.
🪟 Deep DiveDesktop 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.
🎨 Deep DiveImpeller 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.
🖼️ Deep DiveHybrid 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.
✨ Deep DiveGenUI 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.
🧠 Deep DiveGenkit 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.
📱 Deep DiveOn-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.
🧬 Deep DiveFragment 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.
🔥 Deep DiveFirebase 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.
🍨 Deep DiveProduct 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.
📋 Deep DiveCupertinoMenuAnchor and modern Flutter menus
RawMenuAnchor powers CupertinoMenuAnchor and animated Material MenuAnchor — native-feeling menus without plugin stacks.
📐 Deep DiveContent-sized Flutter views in native parents
Flutter 3.41 lets embedded views size to content — critical for Flutter inside native scrollables.
🤖 Deep DiveAgentic 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.
🧰 Deep DiveDart 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.
🪟 Deep DiveSlivers, 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.
🔑 Deep DiveKeys 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.
🔗 Guidego_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.
🧭 Deep DiveBuildContext 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.
🎨 GuideMaterial 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.
📝 GuideFlutter 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.
♿ GuideFlutter 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.
🌍 GuideFlutter 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.
📦 GuideShrinking 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.
🚀 Deep DiveFlutter 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.
🧠 Deep DiveFinding 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.
🖼️ Deep DiveThe 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.
📜 Deep DiveWhy 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.
👆 Deep DiveWhy 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.
🎢 Deep DiveCustom 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.
🌈 Deep DiveFragment 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.
⚙️ GuideA 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.
🍦 GuideFlutter 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.
🎯 GuideRetrieval 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.
📐 Deep DiveStop 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.
🚦 GuideShipping 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.
🧊 Deep DivePrompt 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.
🌐 AnalysisFlutter 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.
🖥️ AnalysisRunning 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.
🧪 GuideFlutter 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.
🧩 GuideRiverpod, 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.
🔐 GuideSecrets 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.
🔌 Deep DiveCalling 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.
⏱️ GuideA 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.
🗄️ Deep DiveOffline-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.
🧵 Deep DiveFlutter 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.
🧩 Deep DiveImpeller 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.
🧩 Deep DiveWhen 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.
🎬 GuideThree 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.
🎛️ AnalysisFine-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.
🧮 AnalysisCost 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.
🪟 GuideContext 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.
🔍 GuideAI 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.
🗃️ AnalysisAgent 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.
🌐 TutorialUsing 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.
🚚 AnalysisLovable 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.
🔔 GuidePush 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.
🐦 TutorialWhat 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.
🔬 Deep DiveWhat 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.
🆓 GuideFree 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.
💳 GuideIn-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.
💸 GuideUsing 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.
🧑✈️ GuideThe 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.
🖼️ GuideTwo 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.
⏱️ Deep DiveBackground 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.
🖥️ GuideFlutter 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.
🧩 GuideDependency 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.
🚨 Deep DiveFlutter 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.
🎯 Deep DiveRecords 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.
🧬 Deep DiveExtension 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.
🌊 Deep DiveDart 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.
⚙️ GuideCode 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.
🔍 GuideWriting 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.
🛠️ AnalysisDesigning 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.
🧭 AnalysisChoosing 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.
✂️ AnalysisChunking 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.
🔭 GuideObservability 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.
🛡️ AnalysisPrompt 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.
👁️ GuideVision 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.
🧪 GuideSynthetic 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.
🌊 GuideStreaming 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.
🔀 Deep DiveModel 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.
📱 Deep DiveOn-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.
🎨 TutorialCreating 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.