app_update 0.0.2
app_update: ^0.0.2 copied to clipboard
App updates with the possibility of deprecation, required updates, various app stores and custom UI
App Update #
Important
This package is in the early API design phase.
Work in progress ๐๏ธ #
To support its development, you can give it a like and a star on GitHub.
Overview #
This package is designed to help handle updates to your application in a more flexible way.
It should also help fix problems and get around some annoying limitations of the Upgrader package.
You can show anything you want - a customizable dialog, a modal sheet or a small card to motivate or compel users to update your app.
The package also supports features such as deprecation for older versions, required updates and rolling back updates.
Setup methods #
There are 2 methods to get information about updates:
- From the stores where the app is available
- From your own update config, which can be hosted, for example, on your public github repository.
The first method is easier to use, but is not flexible and does not support many features.
The second method requires some customization, but works on all platforms, with all stores, and allows for full control and customization of your update process.
We want to support both methods, but for now we're focusing on the second method.
Update Config #
Here is the full config api structure under consideration:
# Description of the api structure
# https://pub.dev/packages/app_update
# Optianal, default settings for releases
release_settings:
title:
# Any text (title, description, releaseNote)
# supports optional localization, interpolation and markdown.
# Also supports short syntax without localization.
en: |-
## New version for ($appName)[https://example.com]
### Version $releaseVersion is available!
es: La versiรณn $releaseVersion estรก disponible!
ru: ะะพัััะฟะฝะฐ ะฝะพะฒะฐั ะฒะตััะธั!
description: |-
A new version of $appName is available!
Version $releaseVersion is now available. You have a $appVersion
# Allows users to skip this specific release until a new one is available
can_skip_release: true
# Allows users to postpone this specific release to a reminder_period_hours
can_postpone_release: true
# Interval at which the update notification will be repeatedly shown to the user
reminder_period_hours: 48
# Delay that must pass after the release before it begins to be shown to all users
release_delay_hours: 48
# Duration over which the release visibility will gradually increase from 0% to 100% of users.
progressive_rollout_hours: 48
unsupported_versions: ['<=4.2.0', 0.3.4]
deprecated_versions: ['<=5.1.0 >=4.2.0', '>5.6.0 <5.6.7']
# Optional, will be set based on the platform and app ID
sources:
- name: googlePlay
url: https://example.com
- name: appStore
url: https://example.com
- name: appGallery
url: https://example.com
# You can also override any params for this source (title, release_delay_hours, deprecated_versions etc.)
title: Title
- name: ruStore
url: https://example.com
# Custom store
- name: gitHub
url: https://example.com
platforms:
- android
- windows
- macos
- linux
releases:
- version: 0.3.7 # Required
# You can also override all release_settings params here (title, release_delay_hours etc.)
# Optional, may not to be displayed.
release_note: |-
# Big update!
[click](https://example.com) - full changelog.
### Short notes
- Added bugs
- Fixed features
# Optional. Time is also optional.
date_utc: '2024-08-24 15:35:00'
# Required. Support custom stores
sources:
# Supports short syntax
- googlePlay
- appStore
- ruStore
# Also supports full syntax if you need to override parametrs
- name: github
# Override source params
url: https://example.com
platforms: [android, windows]
# And override any release params
release_note: Notes
title: Title
- version: 0.3.8
release_note: Minor improvements
# You can add any custom parameters anywhere in the config,
# you can access them from the app using Map.
is_super_ultra_mega_release: true
Shorebird #
If you use Shorebird, the Code Push tool for Flutter, this package also allows you to process and show users information about a new patch with the ability to restart the application.
Information about new patches is provided by shorebird.
Roadmap #
โ Support the release status (required, broken, etc.) โ Finding the latest release woth optimal statis โ Custom stores and platform โ Link releases to release settings and stores โ Parser for UpdateConfig ๐๏ธ Implement UpdateConfigProvider ๐๏ธ Provide UpdateController ๐๏ธ Support reminder period ๐๏ธ Support delayed release ๐๏ธ Getting release data directly from the stores ๐๏ธ Release reference to another releases ๐๏ธ Specifying texts for different languages ๐๏ธ Provide UpdateAlert widget ๐๏ธ Provide UpdateAlertHandler methods ๐ณ Provide UpdateAlertCard widget ๐ณ Support for markdown in texts ๐ณ Specifying texts for specific statuses ๐ณ Release progressively rolls ๐ณ Package for shorebird patch support ๐
Contributors โจ #
Contributions of any kind welcome!