Monorepo restructure, plus two API removals. The SwiftUI renderer is now a
standalone Swift package that native iOS apps can install straight from GitHub,
and the Flutter plugin lives beside it in the same repo, consuming it by
relative path. protocolVersion stays 1 — the two sides remain wire
compatible in both directions; the Dart API loses the long-deprecated legacy
facade and one parameter that never did anything.
-
Standalone
LiquidToastsSwift package — the iOS renderer ships on its
own, installable in any iOS app from
https://github.com/SimplifyJobs/liquid-toasts.git(Xcode's package picker or
from: "0.8.0"), with a new nativeLiquidToastfacade that mirrors the
Dart API (LiquidToast.success("Saved"), live handles,promise, app-wide
config) — see
the native README.
Both packages ship from the samevX.Y.Ztag, and the plugin's iOS side is a
bridge (channels + wire decoding) over that package, so the renderer exists
exactly once with no vendored copy to drift. -
BREAKING — CocoaPods support dropped. There is no podspec any more; the
iOS side is Swift Package Manager only. Enable Flutter's SwiftPM mode once per
machine, or an iOS build fails with a missing-podspec error:flutter config --enable-swift-package-manager
-
BREAKING — install is now a pubspec git dependency with a
path, since
the plugin lives in a subdirectory of the monorepo:dependencies: liquid_toasts: git: url: https://github.com/SimplifyJobs/liquid-toasts.git ref: v0.8.0 path: liquid_toasts
-
BREAKING — the deprecated
LiquidToastsfacade is removed, along with
LoadingToastandshowLoading. Every member has a one-line equivalent on
the globaltoast, which has always driven the same engine:
LiquidToasts.success('Hi')→toast.success('Hi')(the handle comes back
synchronously now, so drop theawait),LiquidToasts.show(Toast(...))→
toast.raw(Toast(...)),LiquidToasts.showLoading(f, config: LoadingToast(...))→toast.promise(f, loading:, success:, error:); and
dismiss,dismissAll,setDefaults,queryGeometry,
errorMessageResolver,activeCountandactiveIdsread the same on
toast. -
BREAKING —
useDynamicIslandOriginis removed fromToast, every
toast.*method,ToastHandle.update, and the nativeLiquidToastfacade.
No renderer on either platform ever consulted it, so dropping the argument
changes nothing you can see. Its wire key is gone too — both decoders already
defaulted when it was absent, soprotocolVersionstays1. The device
geometry / cutout snapshot (toast.queryGeometry()) still reports the
cutout (hasDynamicIsland,cutoutType,exclusionRect), but its
supportsDynamicIslandOriginkey is gone with the feature. -
Fixed: sibling jank when a multiline toast enters the stack. The wrap
decision is now pre-measured synchronously (a UIKit twin of the off-screen
probe, including the action button's real label width), so a tall toast's
very first layout is already at its final height.
Previously it entered at single-line height and grew a frame later when the
probe landed — an unanimated re-layout that made the already-visible toasts
jump a few pixels mid-push before the spring caught up. The rare case where
the live layout disagrees with the pre-measurement now animates instead of
snapping. -
The checkout-folder rename caveat is gone — the plugin folder inside the
repo is already namedliquid_toasts, so Flutter's SwiftPM integration
derives the right package identity in every install mode (git, path, or a
local clone of theliquid-toastsrepo). Nothing to rename after cloning.
Install
Flutter (iOS needs Swift Package Manager mode:
flutter config --enable-swift-package-manager):
dependencies:
liquid_toasts:
git:
url: https://github.com/SimplifyJobs/liquid-toasts.git
ref: v0.8.0
path: liquid_toastsNative iOS — Swift Package Manager:
.package(url: "https://github.com/SimplifyJobs/liquid-toasts.git", from: "0.8.0")