app_update_pilot 1.0.6 copy "app_update_pilot: ^1.0.6" to clipboard
app_update_pilot: ^1.0.6 copied to clipboard

Complete app update lifecycle manager for Flutter. Store version checks, force update walls, A/B rollout, rich changelogs, skip with cooldown, analytics hooks, maintenance mode, and remote config from [...]

1.0.6 #

Bug Fixes #

  • Dialog disappears / new screen comes through — when check() is called in a screen that also navigates away (e.g. pushReplacement, pushAndRemoveUntil), the dialog was dismissed by the in-flight navigation. Fixed by yielding to the event loop after checkForUpdate completes so any pending navigation settles before the dialog is pushed onto the root navigator.
  • UpdatePilotGuard timing — deferred _performCheck() to addPostFrameCallback so the widget is fully settled in the navigator tree before showing any UI.

1.0.2 #

Bug Fixes #

  • "Update Now" does nothing on Android — store URL now uses market:// scheme which opens the Play Store app directly instead of a browser. Falls back to https://play.google.com/... if Play Store is not installed.
  • Android 11+ intent visibility — added <queries> block to the plugin's AndroidManifest.xml declaring market:// and https://play.google.com intent filters. Without this, launchUrl silently fails on Android 11+ due to package visibility restrictions.

1.0.1 #

Bug Fixes #

  • "Update Now" button — fixed silent failure when using UpdateConfig.fromUrl(). The button now calls launchUrl directly (no longer gated behind canLaunchUrl, which silently returns false on Android if the https scheme isn't declared in <queries>). Store opens before the dialog dismisses.
  • Root navigator usage — showForceUpdateWall, showMaintenanceWall, and showUpdatePrompt now use rootNavigator: true. This prevents the force/maintenance wall from being popped or dismissed when called from a splash screen that navigates away while the async update check is in flight.
  • clearStack option — showForceUpdateWall and showMaintenanceWall accept an optional clearStack parameter (default true) for cases where clearing the route stack is not desired.

1.0.0 #

Stable release of app_update_pilot.

Breaking Changes #

  • Removed UpdateConfig.firebase() — replaced with UpdateConfig.fromMap() which works with Firebase Remote Config, Supabase, or any key-value source without requiring a Firebase dependency.
  • Removed UpdateConfig.isFirebase — replaced with isFromMap.

New Features #

  • Native Android in-app updates — flexible (background download) and immediate (full-screen) modes using Google Play In-App Updates API via platform channels.
  • UpdateConfig.fromMap() — create config from any Map<String, dynamic>, perfect for Firebase Remote Config, Supabase, or custom backends.
  • Error resilience — checkForUpdate() now catches all errors, fires onCheckFailed analytics callback, and returns safe "up to date" status so the app never crashes.
  • iOS store URL auto-generation — iOS now auto-generates App Store URLs from the bundle ID, matching Android's behavior.

Improvements #

  • Full /// doc comments on all public API members for pub.flutter-io.cn documentation score.
  • Comprehensive README with comparison table, usage examples, and API reference.
  • Example app with demos for every feature including native in-app updates.

0.1.0 #

Initial release of app_update_pilot.

Core Features #

  • Native Android in-app updates — flexible (background download) and immediate (full-screen) modes using Google Play In-App Updates API. No need to leave the app.
  • Store version checking — automatic Play Store (HTML scraping) and App Store (iTunes Lookup API) detection.
  • Remote config — fetch update rules from any JSON API endpoint with custom headers.
  • Firebase Remote Config — ready-to-use UpdateConfig.firebase() factory.
  • Force update wall — non-dismissible full-screen UI when current version is below minimum required.
  • Maintenance mode wall — block app usage during server downtime with custom messaging.
  • Version comparison — robust semantic version parsing and comparison (1.2.3, v1.2.3, 1.2).

Update Prompts #

  • Optional update prompt — Material 3 dialog with changelog, skip, and remind-later actions.
  • Changelog bottom sheet — draggable sheet with markdown rendering via flutter_markdown.
  • Update banner — non-intrusive notification bar with dismiss and update actions.
  • UpdatePilotGuard — wrapper widget that auto-checks on app start and shows appropriate UI.

Advanced Features #

  • A/B rollout — show updates to a percentage of users with stable per-device hashing.
  • Per-platform minimum version — separate Android/iOS force-update thresholds.
  • Skip version with cooldown — persist user's skip choice with configurable re-prompt timer.
  • Remind me later — re-prompt after configurable delay (default 24 hours).
  • Staged urgency — optional, recommended, and critical levels.

Customization #

  • Full UI override — customBuilder on every widget to replace the entire screen.
  • Granular overrides — icon, title, description, button text on all widgets.
  • Footer builder — inject custom widgets below action buttons (e.g. update size, support links).
  • Custom themes — all widgets use ColorScheme for automatic dark mode support.

Analytics #

  • UpdateAnalytics — structured callbacks: onPromptShown, onUpdateAccepted, onUpdateSkipped, onRemindLater, onForceUpdateShown, onMaintenanceShown, onCheckFailed.
  • AppUpdatePilot.configure() — set analytics globally once at app start.
  • Automatic event firing from AppUpdatePilot.check().

Public API #

  • AppUpdatePilot.check() — one-line setup with auto UI.
  • AppUpdatePilot.checkForUpdate() — headless check returning UpdateStatus.
  • AppUpdatePilot.showForceUpdateWall() / showUpdatePrompt() / showMaintenanceWall() — manual UI display.
  • AppUpdatePilot.showChangelog() — standalone changelog bottom sheet.
  • AppUpdatePilot.openStore() — open platform store listing.
  • AppUpdatePilot.skipVersion() / remindLater() / isVersionSkipped() — programmatic skip/remind control.
  • AppUpdatePilot.isInRolloutGroup() — check rollout eligibility.
  • AppUpdatePilot.checkNativeUpdate() / startNativeUpdate() / completeNativeUpdate() — native Android in-app update flow.
  • AppUpdatePilot.clearPersistedState() — reset all skip/remind state.
0
likes
130
points
66
downloads

Documentation

API reference

Publisher

verified publisherramprasadsreerama.co.in

Weekly Downloads

Complete app update lifecycle manager for Flutter. Store version checks, force update walls, A/B rollout, rich changelogs, skip with cooldown, analytics hooks, maintenance mode, and remote config from any JSON API.

Repository (GitHub)
View/report issues

Topics

#update #in-app-update #force-update #version-check #remote-config

License

MIT (license)

Dependencies

flutter, flutter_markdown, http, package_info_plus, shared_preferences, url_launcher

More

Packages that depend on app_update_pilot

Packages that implement app_update_pilot