Everything you need, nothing you don't
upgrader handles version detection, dialog display, and user preferences automatically. No backend, no polling logic, no platform channels to write.
Zero configuration
Android and iOS detect the latest version from the store automatically. No API keys, no server setup.
All 7 platforms
Desktop and web platforms use an Appcast RSS feed — the same open standard used by macOS apps for decades.
Forced upgrades
Set minAppVersion to remove the Later and Ignore buttons and make upgrading mandatory for old builds.
39 languages
All dialog strings are pre-translated. RTL support for Arabic, Hebrew, Persian, and Urdu is built in.
Native store detection on mobile, Appcast everywhere else
The package automatically picks the right version source for each platform. The table below shows which mechanism is used — compiled from the pub.dev package page (v13.7.0, September 2026).
Three steps to your first upgrade prompt
No platform-specific setup for Android or iOS. Just add the dependency and wrap your scaffold.
dependencies: upgrader: ^13.7.0
flutter pub get
import 'package:upgrader/upgrader.dart'; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: UpgradeAlert( // that's it child: Scaffold(...), ), ); } }
UpgradeAlert vs UpgradeCard
Pick the widget that fits your UX. UpgradeAlert blocks the screen with a modal — best for critical upgrades. UpgradeCard renders a dismissible card inline — better for settings pages.
// UpgradeCard: non-blocking, zero height when no update available Column( children: [ UpgradeCard(), const Expanded(child: MyContent()), ], ) // Force upgrade below version 3.0.0 UpgradeAlert( upgrader: Upgrader( minAppVersion: '3.0.0', durationUntilAlertAgain: const Duration(days: 1), ), child: Scaffold(...), )
Every parameter with its default value
All values below are from the pub.dev package page for v13.7.0 (checked September 2026). Parameters marked with a default of true are active out of the box.
| Parameter | Class | Default | Effect |
|---|---|---|---|
| checkOnResume | Upgrader | true | Version check fires again when the app resumes from the background |
| durationUntilAlertAgain | Upgrader | 3 days | Cooldown before the dialog repeats after a "Later" tap |
| minAppVersion | Upgrader | null | Versions below this string trigger a mandatory upgrade (no Later/Ignore) |
| debugDisplayAlways | Upgrader | false | Always show the dialog during development regardless of version |
| debugLogging | Upgrader | false | Logs version-check output to the Flutter console |
| showIgnore | UpgradeAlert | true | Show the "Ignore this version" button |
| showLater | UpgradeAlert | true | Show the "Later" dismiss button |
| showReleaseNotes | UpgradeAlert | true | Pulls and displays the store release notes inside the dialog |
| barrierDismissible | UpgradeAlert | false | Tapping outside the dialog does not close it |
| dialogStyle | UpgradeAlert | material | Switch to cupertino for iOS-native styling |
39 built-in languages
Pass UpgraderMessages(code: 'fr') to override the detected locale. RTL layouts for Arabic, Hebrew, Persian, and Urdu are automatic.
Common questions
What is the upgrader Flutter package?
Which platforms does upgrader support?
Can I force users to upgrade without a dismiss option?
minAppVersion: '3.0.0' on the Upgrader class. Any user running a build below that version will see the dialog without a Later or Ignore button, making the upgrade mandatory before they can continue.