restart_app
A Flutter plugin to restart or relaunch Flutter apps with platform-specific native behavior.
1.9.1
147K downloads/mo
#967 most downloaded on pub.dev
gabrimatic/restart_app
What this package is like to depend on
Last release 8 days ago
15 Aug 2026
Ships unpredictably
gaps range from 9 days to 1.4 years
Nearly every release is documented
notes for 29 of 30 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
31 releases · first in 2021
15 releases in the last 12 months
see the full history below
Release timeline
31 releases · May 2021 to Aug 2026Releases
latest 31-
1.9.115 Aug 2026Release notes
Open source →Fixes the AGP 9 build failure in 1.9.0. Projects generated by Flutter 3.44 and later use Android Gradle Plugin 9 with
android.builtInKotlin=false, and 1.9.0 left that combination with no Kotlin plugin at all, so evaluation failed withCould not find method kotlin(). Upgrading is enough; no app-side change is needed.- Fixed the Android build failing on AGP 9 with
Could not find method kotlin(), which hit every project generated by Flutter 3.44 and later (#56) - Changed how the plugin decides to apply the Kotlin Gradle Plugin: it now checks whether Kotlin has already been provided instead of reading the AGP major version, so AGP 9 with
android.builtInKotlin=falsegets a Kotlin toolchain like every other combination - Kept the Android
namespaceunconditional now that every supported AGP requires it - Added a CI job that builds a fresh app against AGP 9.0 and AGP 9.1 on their matching Gradle versions
Verified on AGP 8.6, 8.11, 9.0.1, 9.1.0 and 9.3.1, on Flutter 3.44 and 3.47, with built-in Kotlin both off and on.
Release notes
Open source →- Fixed the Android build failing on AGP 9 with
Could not find method kotlin(), which hit every project generated by Flutter 3.44 and later (#56) - Changed how the plugin decides to apply the Kotlin Gradle Plugin: it now checks whether Kotlin has already been provided instead of reading the AGP major version, so AGP 9 with
android.builtInKotlin=falsegets a Kotlin toolchain like every other combination - Kept the Android
namespaceunconditional now that every supported AGP requires it - Added a CI job that builds a fresh app against AGP 9.0 and AGP 9.1 on their matching Gradle versions
- Fixed the Android build failing on AGP 9 with
-
1.9.008 Aug 2026Release notes
Open source →Upgrade notes: Android
minSdkrises from 16 to 21 and the Android toolchain moves to Java 17, AGP 8.1.4 and Kotlin 2.0.21; the iOS CocoaPods minimum rises from 11.0 to 12.0. Apps on older toolchains must update their build setup before upgrading. On web, the default restart now reloads the current page instead of navigating to the site origin root; passwebOriginto keep the previous behavior.- Changed the web default restart to reload the current page, keeping the active route instead of jumping to the origin root;
webOriginstill overrides the target - Fixed Windows so a failed relaunch (for example MSIX/Store-packaged apps) returns a
RESTART_FAILEDerror instead of a false success; the new instance now starts suspended and only resumes after the result is delivered - Made unknown platform response modes fall back to the requested mode instead of silently reporting
platformDefault - Hardened result parsing so non-string
code,message, andreasonvalues can never throw - Added web plugin tests that cover the full method-channel contract, plus a Chrome test step in CI
- Added CI restart proofs that build, run, and verify a real process restart on Linux, Windows, and macOS runners
- Added explicit engine restart, force-kill restart, and
webOriginbuttons to the example app - Fixed the example Android manifest so
url_launcherlink checks pass on Android 11+ (package visibility<queries>) - Removed the redundant Android
finishAffinity()after the relaunch intent, which made ActivityTaskManager log a "Duplicate finish request" on every default restart - Prepared the Android build for Flutter's Built-in Kotlin: the Kotlin Gradle Plugin is now applied only on AGP versions below 9, with modernized Kotlin 2.0 tooling
- Aligned the iOS CocoaPods minimum with Swift Package Manager at iOS 12
- Made the macOS handler hop to the main thread explicitly before touching AppKit
Release notes
Open source →Upgrade notes: Android
minSdkrises from 16 to 21 and the Android toolchain moves to Java 17, AGP 8.1.4 and Kotlin 2.0.21; the iOS CocoaPods minimum rises from 11.0 to 12.0. Apps on older toolchains must update their build setup before upgrading. On web, the default restart now reloads the current page instead of navigating to the site origin root; passwebOriginto keep the previous behavior.- Changed the web default restart to reload the current page, keeping the active route instead of jumping to the origin root;
webOriginstill overrides the target - Fixed Windows so a failed relaunch (for example MSIX/Store-packaged apps) returns a
RESTART_FAILEDerror instead of a false success; the new instance now starts suspended and only resumes after the result is delivered - Made unknown platform response modes fall back to the requested mode instead of silently reporting
platformDefault - Hardened result parsing so non-string
code,message, andreasonvalues can never throw - Added web plugin tests that cover the full method-channel contract, plus a Chrome test step in CI
- Added CI restart proofs that build, run, and verify a real process restart on Linux, Windows, and macOS runners
- Added explicit engine restart, force-kill restart, and
webOriginbuttons to the example app - Fixed the example Android manifest so
url_launcherlink checks pass on Android 11+ (package visibility<queries>) - Removed the redundant Android
finishAffinity()after the relaunch intent, which made ActivityTaskManager log a "Duplicate finish request" on every default restart - Prepared the Android build for Flutter's Built-in Kotlin: the Kotlin Gradle Plugin is now applied only on AGP versions below 9, with modernized Kotlin 2.0 tooling
- Aligned the iOS CocoaPods minimum with Swift Package Manager at iOS 12
- Made the macOS handler hop to the main thread explicitly before touching AppKit
- Changed the web default restart to reload the current page, keeping the active route instead of jumping to the origin root;
-
1.8.302 May 2026Release notes
Open source →1.8.3
- Made
Restart.restartApp(...)the single Dart restart entry point - Changed
Restart.restartApp(...)to returnRestartResult, giving one call withsuccess, resolvedmode,code, andmessage - Kept all restart customization on
Restart.restartApp(...):mode,webOrigin,forceKill,notificationTitle, andnotificationBody - Refined the example so
main.dartshows the restart calls directly, while package survival checks live in focused helper files - Updated README and example docs so the quick start is platform-neutral and iOS details stay in the iOS section
Release notes
Open source →- Made
Restart.restartApp(...)the single Dart restart entry point - Changed
Restart.restartApp(...)to returnRestartResult, giving one call withsuccess, resolvedmode,code, andmessage - Kept all restart customization on
Restart.restartApp(...):mode,webOrigin,forceKill,notificationTitle, andnotificationBody - Refined the example so
main.dartshows the restart calls directly, while package survival checks live in focused helper files - Updated README and example docs so the quick start is platform-neutral and iOS details stay in the iOS section
- Made
-
1.8.202 May 2026Release notes
Open source →- Tightened iOS default behavior:
platformDefaultnow fails cleanly when engine restart is not configured instead of quietly using notification +exit(0) - Kept notification restart as an explicit
RestartMode.notificationFallbackpath for apps that accept the permission prompt, exit, and user-tap tradeoff - Removed the internal implicit-fallback flag from the Dart API and iOS platform-channel payload
- Expanded the example with package checks that exercise common plugin paths after restart
- Clarified README language around iOS engine restart versus unsupported full process restart
- Tightened iOS default behavior:
-
1.8.102 May 2026Release notes
Open source →Patch release focused on restart mode correctness and release stability.
- Fixes structured restart mode handling so unsupported modes fail instead of silently using a platform default.
- Returns resolved structured restart modes from Android, web, Linux, macOS, and Windows.
- Makes Android
RestartMode.processuse the full force-kill restart path automatically. - Runs the iOS
beforeRestarthook before creating the replacementFlutterEngine. - Updates the bundled example Android Gradle project for current Java and Flutter toolchains.
Validated with
flutter analyze, package and example tests, Android/iOS/web example builds, a fresh-template macOS build, native format checks, anddart pub publish --dry-runwith 0 warnings.Release notes
Open source →- Fixed mode handling so unsupported restart modes fail with a clear platform error instead of silently falling back
- Returned the resolved restart mode from Android, web, Linux, macOS, and Windows
- Made Android
RestartMode.processuse the fullforceKillpath automatically - Updated the example Android Gradle project for current Java and Flutter toolchains
- Moved the iOS
beforeRestarthook before replacement engine creation so apps can clean up native resources first
-
1.8.002 May 2026Release notes
Open source →Changes
- Added structured restart API with
Restart.restart(),RestartResult,RestartMode, andRestart.restartCapability(). - Added opt-in iOS Flutter engine restart with fresh
FlutterEnginecreation, Dart re-run, host-owned plugin registration, rootFlutterViewControllerreplacement, and old engine teardown. - Kept the existing iOS notification +
exit(0)behavior as an explicit legacy fallback. - Added restart capability reporting across supported platforms.
- Updated documentation and example integration to distinguish iOS engine restart from unsupported full process restart.
Verification
flutter analyzeflutter testcd example && flutter testdart pub publish --dry-run- iOS no-codesign build
- web build
- Swift/Kotlin/C++ format and lint checks
Note: Android APK build is blocked locally by the existing Gradle 7.6.3 and Java 21 mismatch on this machine.
Release notes
Open source →- Added structured restart types with
RestartResult,RestartMode, andRestart.restartCapability() - Added opt-in iOS Flutter engine restart: fresh
FlutterEngine, Dart entrypoint rerun, host plugin registration, rootFlutterViewControllerreplacement, and old engine teardown - Kept the existing iOS notification +
exit(0)behavior as an explicit legacy fallback - Documented the important iOS boundary: Flutter engine restart is supported, automatic full process restart is not available through public iOS APIs
- Added structured restart API with
-
1.7.308 Mar 2026Release notes
Open source →- Fixed Xcode build failure caused by SPM target path resolving outside the package root (#52)
-
1.7.228 Feb 2026 -
1.7.128 Feb 2026 -
1.7.027 Feb 2026Release notes
Open source →- Added native Linux support. Restarts via
execv, replacing the current process in-place - Added native Windows support. Launches a new instance via
CreateProcessand exits - Added Android TV and Fire TV support via leanback launcher fallback
restartApp()now returnsfalseon native errors instead of throwingPlatformException- Added CI with code quality checks, formatting, and native linting (Kotlin, Swift, C++)
- Added unit tests
- Added native Linux support. Restarts via
-
1.6.027 Feb 2026Release notes
Open source →- Added native macOS support via a Swift plugin. Restarts the app by launching a new instance using
NSWorkspaceand terminating the current process
- Added native macOS support via a Swift plugin. Restarts the app by launching a new instance using
-
1.5.227 Feb 2026Release notes
Open source →- Fixed Android FlutterJNI detached error: all destructive restart operations are now deferred via a short delay so the platform channel result can be delivered to the Dart side before the Flutter engine is torn down
- Lowered minimum Dart SDK requirement from 3.5.1 to 3.4.0 (Flutter 3.22+)
- Improved README: corrected iOS provisioning profile guidance, removed inaccurate CFBundleURLTypes instructions, and added documentation for calling from background isolates
-
1.5.127 Feb 2026Release notes
Open source →- Added
forceKilloption for Android. Fully terminates the process after restart for a clean cold start - Fixed iOS restart not working due to incorrect AppDelegate cast
- Implemented proper iOS restart using local notifications with permission handling
- Breaking (iOS): Returns a
PlatformExceptionwith codeNOTIFICATION_DENIEDif notification permission is denied. Handle this in your code - Removed unused
plugin_platform_interfacedependency - Fixed iOS podspec placeholder metadata
- Fixed nested MaterialApp in example app
- Improved web error handling for unrecognized method calls
- Cleaned up unused imports
- Added
-
1.5.027 Feb 2026Nothing published for this version
-
1.4.0-beta16 Sep 2024 pre-releaseNothing published for this version
-
1.3.327 Feb 2026 -
1.3.212 Sep 2024 -
1.3.110 Sep 2024Release notes
Open source →- Updated JVM and Kotlin versions
- Upgraded Flutter web dependency to more compatible version
- Resolved dependency conflicts with firebase packages and restart_app
-
1.3.005 Sep 2024Release notes
Open source →- Custom notification support added for iOS:
notificationTitleandnotificationBodycan now be customized
- Android improvements:
- Added namespace configuration
- Replaced
.exitmethod with new, safeActivityAwaremethod - Updated Kotlin version
- Web support enhanced:
- Added Wasm support
- General updates:
- Updated dependencies
- Custom notification support added for iOS:
-
1.2.129 May 2023 -
1.2.025 May 2023 -
1.1.319 May 2023 -
1.1.227 Jan 2023 -
1.1.121 Nov 2022 -
1.1.1+112 Dec 2022 -
1.1.021 Sep 2021 -
1.1.0+116 May 2022 -
1.0.318 May 2021 -
1.0.218 May 2021 -
1.0.118 May 2021 -
1.0.018 May 2021