NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4300 most downloaded on pub.dev
A Flutter plugin that provides a wrapper around the native Klaviyo SDKs for iOS and Android.
Last release 1 months ago
04 Sep 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
5 releases · first in 2026
One column per month.
fix(ios): cascade the forms session-timeout fix — pin klaviyo-swift-sdk 5.4.1 [MAGE-1182] by @Atharva8168 in #136
Full Changelog: 0.3.0...0.3.1
⚠️ This release raises the minimum supported Flutter version to 3.27.0 .
⚠️ This release raises the minimum supported Flutter version to 3.27.0.
See the migration guide for upgrade steps.
Automatic push integration — The SDK can now handle push token registration and push open tracking on your behalf, configured through automatic_push_token_forwarding and automatic_push_open_tracking. The plugin honors both flags for its own token forwarding and open tracking, so enabling them does not produce duplicate registrations or events. See Platform Setup in the README for flag values and setup.
Web URL actions bridged to Dart — Notification taps and push action buttons that open a web URL are now surfaced to your Dart code.
Silent push forwarding on Android — Klaviyo silent pushes are now forwarded to Dart, with a payload shape matching iOS so you can handle both platforms with the same code.
Client subscriptions API — New Dart API for subscribing profiles directly from the SDK.
Logging toggle — New setLoggingEnabled() and isLoggingEnabled() methods to turn native SDK logging on or off at runtime. This is separate from the existing setLogLevel(), which controls Flutter-side logging verbosity.
Swift Package Manager support — The iOS plugin can now be consumed via SPM in addition to CocoaPods.
Native SDK upgrade — Now consuming KlaviyoSwift ~> 5.4.0 and klaviyo-android-sdk 4.5.1, which brings:
The automatic push integration flags described above
Web URL support in push notifications, push action buttons, and in-app forms
Client subscription APIs for subscribing profiles directly from the SDK
Network reliability improvements — retries on all 5xx responses, Retry-After-aware backoff, and revised request-queue eviction
See klaviyo-android-sdk 4.5.1 and klaviyo-swift-sdk 5.4.0 for full native release notes.
flutter.compileSdkVersion instead of pinning its own.Full Changelog: 0.2.0...0.3.0
Full Changelog: 0.2.0...0.3.0
onPushAction stream emits typed KlaviyoPushAction events (OpenWebUrl, ActionButtonTapped) when a user taps a Klaviyo push carrying an Open External URL (open_url) action or an action button. URLs are forwarded verbatim, including special schemes such as mailto:, tel:, and sms:. On iOS both body open_url taps and action-button taps surface; on Android open_url is handled externally by the native SDK, so only deep_link / open_app action-button taps surface.createSubscription method subscribes the current profile to a Klaviyo list and records its consent, with per-channel consent types for email, SMS, and WhatsApp. Use KlaviyoSubscription.allAvailableMarketing to request marketing consent on every channel the profile has an identifier for.automatic_push_token_forwarding flag is now three-valued: the native manifest flag distinguishes leaving it unset (this plugin's existing automatic behavior, unchanged) from explicit true (additionally fetches the token at Klaviyo.initialize()/foreground) or false (disables automatic forwarding entirely). This is non-breaking — the unset default preserves existing behavior, and managing the token yourself via setPushToken(...) or registerForPushNotifications() continues to work alongside it. See the Migration Guide for details. (#115, #132)com.klaviyo.push.automatic_push_open_tracking manifest meta-data key — set it to false to disable it (useful if you need to withhold push data until a profile is identified), or true to hand reporting to the native SDK's own trampoline mechanism instead (this plugin steps aside to avoid a duplicate call). This does not affect the Dart push_notification_opened stream, which never reaches Klaviyo's backend. This is non-breaking — the default is unchanged. The MainActivity.kt manual Klaviyo.handlePush() setup step some integrations carried over is no longer necessary (and now bypasses this opt-out/opt-in if kept) — see the README.klaviyo_automatic_push_token_forwarding Info.plist key — set it to false to disable forwarding entirely (useful if you need to withhold push data until a profile is identified), or true to hand forwarding to the native SDK's own app-delegate swizzler instead. Unset behaves exactly as before. This is non-breaking — the default is unchanged. See the Migration Guide for details.compileSdkVersion: The Android plugin module tracks flutter.compileSdkVersion instead of a hardcoded API 33, so it compiles against whichever SDK level your Flutter version vends (35 on Flutter 3.27–3.34, 36 from 3.35 on). This clears CheckAarMetadata failures for apps on AGP 8.13+, where transitive androidx dependencies of the native Android SDK (notably androidx.webkit) declare minCompileSdk=34. minSdkVersion is unchanged at 23, and the plugin still declares no targetSdk — your app's Play Store target level is unaffected. (#127)flutter extension to plugin projects from 3.27.0 onward. Apps on Flutter 3.24.x–3.26.x should upgrade Flutter before adopting 0.3.0.KlaviyoSwift ~> 5.4.0 and klaviyo-android-sdk 4.5.1, which adds the non-web open_url scheme allowlist (mailto:, tel:, sms:) on Android. See klaviyo-swift-sdk 5.4.0 and klaviyo-android-sdk 4.5.1 for full native release notes.onPushNotification stream on Android as silent_push_received, mirroring the existing iOS handleSilentPush path. Events fire for every Klaviyo silent push, with or without key_value_pairs, and carry the full data payload, with JSON object values (key_value_pairs, _k) decoded to Maps so the payload has the same shape on both platforms. Delivery requires a live Flutter engine: foreground and backgrounded apps both receive events, a terminated one does not, and nothing is persisted or replayed on a later launch — matching both native SDKs. See Silent Push for the terminated-state workarounds. (#87)setLoggingEnabled(bool) / isLoggingEnabled() APIs silence or resume all Klaviyo SDK logging (native and Dart-side) at runtime. setLoggingEnabled can be called before initialize() to suppress startup logs. On iOS this bridges to the native KlaviyoSDK().setLoggingEnabled(_:) (does not affect KlaviyoSwiftExtension); on Android it maps to the native SDK log level (None when disabled, restoring the prior level when re-enabled). (#111)com.google.firebase.MESSAGING_EVENT to exactly one service, and the native SDK registers KlaviyoPushService for it alongside the plugin's KlaviyoFlutterPushService. When the base class won, the subclass never ran: standard push, display and open tracking kept working, but silent pushes were silently dropped. The plugin now removes the base declaration from the merged manifest via tools:node="remove"; the subclass extends it and calls super.onMessageReceived, so no native behavior is lost. (#126)firebase_messaging background handler — FirebaseMessaging.onBackgroundMessage() creates a second FlutterEngine for the background isolate at registration time. That engine auto-registers its own plugin instance, which never subscribes to the event channel, and it claimed the process-wide reference used to deliver silent pushes — stranding them even while the app was in the foreground. Delivery now belongs to whichever engine has a live Dart listener. (#126)Form lifecycle events — New onFormLifecycleEvent stream emits typed FormShown , FormDismissed , and FormCtaClicked events for in-app forms. Use Dart p
Form lifecycle events — New onFormLifecycleEvent stream emits typed FormShown, FormDismissed, and FormCtaClicked events for in-app forms. Use Dart pattern matching for exhaustive handling. (#75)
Native SDK upgrade — Now consuming KlaviyoSwift ~> 5.3.1 and klaviyo-android-sdk 4.4.0, which brings:
onFormLifecycleEvent stream above)See klaviyo-android-sdk 4.4.0 and klaviyo-swift-sdk 5.3.0 for full native release notes. (#88)
onPushNotification now correctly emits push_notification_opened when a user taps a Klaviyo push. Previously the tap event was silently dropped on Android due to a com.klaviyo. namespace prefix mismatch in the intent extras. (#83)KlaviyoSDK().initialize() no longer silently swallows subsequent calls with a different API key, enabling runtime account switching for multi-tenant apps. The apiKey is now updated only after the native call succeeds, so a failed re-init does not corrupt state. (#80)meta dependency constraint from ^1.17.0 to ^1.15.0 so the SDK resolves cleanly against Flutter 3.24.x–3.37.x (these versions pin meta transitively via flutter_test). (#82)onFormLifecycleEvent API.content-available in the iOS AppDelegate, with matching docs in the README's Silent Push section. (#72)PUB_CREDENTIALS secret with the Dart team's reusable workflow). (#71)/ → ~), and pegged the example app's iOS MARKETING_VERSION to the plugin version. (#74, #76, #89)Full Changelog: 0.1.0...0.2.0
Full Changelog: 0.1.0...0.2.0
Form lifecycle events — New onFormLifecycleEvent stream emits typed FormShown, FormDismissed, and FormCtaClicked events for in-app forms. Use Dart pattern matching for exhaustive handling. (#75)
Native SDK upgrade — Now consuming KlaviyoSwift ~> 5.3.1 and klaviyo-android-sdk 4.4.0, which brings:
onFormLifecycleEvent above)See klaviyo-android-sdk 4.4.0 and klaviyo-swift-sdk 5.3.0 for full native release notes. (#88)
onPushNotification now correctly emits push_notification_opened when a user taps a Klaviyo push. Previously the event was silently dropped on Android due to a com.klaviyo. namespace prefix mismatch in the intent extras. (#83)KlaviyoSDK().initialize() no longer silently swallows subsequent calls with a different API key, enabling runtime account switching for multi-tenant apps. (#80)meta dependency constraint from ^1.17.0 to ^1.15.0 so the SDK resolves cleanly against Flutter 3.24.x–3.37.x. (#82)onFormLifecycleEvent API. (#90)This is the initial beta release of our Flutter SDK, containing a few bug fixes from the 0.1.0-alpha.1 version.
This is the initial beta release of our Flutter SDK, containing a few bug fixes from the 0.1.0-alpha.1 version.
This beta contains a backwards-compatibility layer from the klaviyo_flutter community plugin; see the Migration Guide for more details.
configure-sdk.sh for switching native SDK versions by @ab1470 in #55configure-sdk.sh by @ab1470 in #62Full Changelog: 0.1.0-alpha.1...0.1.0
This is the initial alpha release of our Flutter SDK.
This is the initial alpha release of our Flutter SDK.
Initial alpha release of the Klaviyo Flutter SDK.
createEventonPushNotification)onFormEvent). Forms module can be excluded to reduce SDK size.handleUniversalTrackingLink for click tracking and link resolutionYour coding agent can read these notes before it upgrades. Set up the MCP server →