ejenix_flutter 0.2.0
ejenix_flutter: ^0.2.0 copied to clipboard
Official Ejenix Flutter SDK: LiveOps remote config, feature flags, signed server-driven UI, asset verification, and code-push status wrappers.
Changelog #
All notable changes to ejenix_flutter are documented here. This project
follows Semantic Versioning.
0.2.0 #
Removed #
-
EjenixCodePush.nextDeltaLinkPlanPath,validateNextDeltaLinkPlanandmaterializeNextDeltaLinkPlan. These named an internal step of how a patch is prepared, on the class an app talks to, and an app has no use for any of them — nothing outside this package's own tests ever called them. A public API should say what you can do, not how the thing works underneath.The same methods remain on
EjenixUpdaterRuntime, which is the extension point for a host that drives the updater itself, so nothing that genuinely needed them has lost anything.A MINOR bump because under Dart's versioning that is the breaking one for a
0.xpackage. If you were calling these — you were not — use the runtime.
0.1.1 #
Fixed #
Ejenix.initializeno longer fails when the native updater cannot start. It awaited the platform's owninitializewith nothing around it, so a build whose native side was absent or mismatched threw out of the bootstrap and took remote config, feature flags, server-driven UI and asset verification with it. All four are pure Dart and need no updater, and this package's README says they keep working — on a device that was not true. The failure is now recorded inEjenixCodePush.nativeSkipReason, the same place a missing option is reported, and the rest of the SDK carries on.
0.1.0 #
First release of the Ejenix Flutter SDK.
Added #
Ejenix.initialize(...)bootstrap that fetches a signed LiveOps payload and falls back to a last-known-good cache when the backend is unreachable.- Remote config (
Ejenix.config) and feature flags (Ejenix.flags) with typed getters and synchronous fallbacks. - Analytics/event ingestion via
Ejenix.events. - Live widgets:
LiveText(i18n),RemoteConfigBuilder,FeatureFlagBuilder,LiveImage, andLiveScreenRendererfor server-driven UI. - Signature verification of payloads (
EjenixHmacSha256Verifier,EjenixSignatureVerifier) so unsigned or tampered config is rejected. - Pluggable cache stores (
EjenixMemoryCacheStore,EjenixFileCacheStore). - Code-push status wrappers over the native updater
(
EjenixUpdaterRuntime,EjenixMethodChannelUpdaterRuntime) with boot-loop hooks (markLaunchStart/markLaunchSuccess/markLaunchFailure) and rollback (rollbackToBase). - Android and iOS plugin platforms, which are the two the native updater bridge is available on. macOS, Web, Windows and Linux have no native bridge; the pure-Dart features run there regardless.
- Background patch checks. Once code push is configured the SDK asks the
platform to check periodically — WorkManager on Android,
BGTaskScheduleron iOS — in addition to the checks on launch and on return to the foreground. Both platforms treat the interval as a floor and decide whether to run it; iOS gives no guarantee and also needsUIBackgroundModes, whichejenix initdoes not add for you. See the README. EjenixCodePush.nativeSkipReason, which names why the native updater did not start, or is null when it did. Both of its required options default to null, so an integration that sets neither has no updater — and because the pure-Dart features work without one, nothing throws and nothing logs. Check this afterinitialize: the control plane reports a patch as delivered once the device fetches it, and a device with no updater never applies what it fetched.