kindly 2.0.3
kindly: ^2.0.3 copied to clipboard
Kindly Chat SDK for Flutter - customer support chat widget for iOS and Android. Successor to the kindly_sdk package.
Changelog #
2.0.3 - 2026-05-02 #
Internal #
- Refresh of bundled iOS xcframework + Android AAR from the latest
kindly-ai/sdk-chat-ios-sourcesandkindly-ai/sdk-chat-android-sourcesreleases. No public API changes.
2.0.2 - 2026-05-02 #
Fixed #
- 2.0.1 was published with a missing iOS xcframework (working-directory
state issue during a manual publish). iOS builds against
kindly: ^2.0.1fail atpod installwith a missing-vendored-framework error. 2.0.2 re-ships the same source with the proper signedKindlySDK.xcframeworkbundled. All users of 2.0.1 should upgrade to 2.0.2.
2.0.1 - 2026-05-02 #
Added #
KindlySDK.setDelegate(...)andKindlySDK.clearDelegate()— host apps can now register the same three callbacks the iOS / Android SDKs expose viaKindlyChatClientDelegate/KindlySDKInteraction:onButtonPressed(button, chatLog)— fired when the user taps a chat button. Fire-and-forget, no return value.shouldHandleLink(url) -> bool— asked before the SDK opens a link tapped inside chat. Returnfalseto take over (e.g. route via host app's deep linker);true(default) lets the SDK handle.shouldHandleNotification(notification) -> bool— asked for every decrypted Kindly silent push. Same return semantics.
- The two synchronous-bool callbacks block the native calling thread on a
DispatchSemaphore(iOS) /CompletableDeferred(Android) with a 5-second timeout. After timeout the SDK falls back to its defaulttrue.
Internal #
bundle-native-sdks.yml: prerequisite path / Xcode / Gradle checks now gated on thebundle_onlyparameter so iOS-only and Android-only CI runs don't fail on missing sibling-repo paths.
2.0.0 - 2026-05-02 #
Renamed #
The package has been renamed from kindly_sdk to kindly. This is the only breaking change in 2.0.0 — the public API surface is identical to what was being prepared as kindly_sdk 1.1.0. To migrate:
dependencies:
- kindly_sdk: ^1.0.1
+ kindly: ^2.0.0
-import 'package:kindly_sdk/kindly_sdk.dart';
+import 'package:kindly/kindly.dart';
Nothing else changes — KindlySDK.start(...), all theme calls, all event handlers continue to work identically.
The legacy kindly_sdk package is now discontinued on pub.dev with a successor pointer to this package; new releases happen here.
Added (carried over from never-published 1.1.0) #
KindlySDK.setLanguage(languageCode)— update language for the current session.KindlySDK.sendMessage(text, newContext: ...)— programmatically send a user message; resolves with the reconciled message map (id,text,created,sender).KindlySDK.kill()— completely tear down the SDK; complementsendChat()which only ends the chat session.KindlySDK.handleUrl(url)— handle Kindly deep-link URLs (kindly://chat/dialogue/{id}).KindlySDK.callHandover(callback)— initiate handover to a human agent and receive a callback when the handover begins. Replaces the misnamedsetHandoverCallback(kept as a deprecated alias).
Fixed (carried over from never-published 1.1.0) #
- iOS:
start()now actually wires theauthTokenCallbackthrough to the native SDK (previously hard-coded tonil). - iOS: every method handler now invokes the real Kindly SDK —
closeChat,endChat,setCustomTheme,setNewContext,clearNewContext,saveAuthToken,setAPNSDeviceToken,handleNotification,isKindlyNotification,triggerDialogue,setVerboseLogging,setCrashReporting,clearCustomTheme,isChatDisplayedwere all stubbed. - iOS:
isChatDisplayednow reflects real state by subscribing toKindlySDK.state. - Android: SDK imports are no longer commented out; placeholder
AuthTokenCallback/CallbackHandoverinterfaces removed in favour of the real ones. - Android: auth callback is now passed into
ChatKindlySDK.start(previously created but discarded). - Android:
triggerDialogue,setVerboseLogging,setCrashReporting,saveNotificationTokenwere reading args from a non-existent map key — now read the bare argument as Dart sends it. - Android:
handleNotification/isKindlyNotificationreconstruct aRemoteMessagefrom the data map so the SDK methods can be invoked. - Android: handover callback signature aligned with the SDK's
CallbackHandover.callHandover()(was(event, data)).
1.1.0 - 2026-05-01 #
Added #
KindlySDK.setLanguage(languageCode)— update language for the current session.KindlySDK.sendMessage(text, newContext: ...)— programmatically send a user message; resolves with the reconciled message map (id,text,created,sender).KindlySDK.kill()— completely tear down the SDK; complementsendChat()which only ends the chat session.KindlySDK.handleUrl(url)— handle Kindly deep-link URLs (kindly://chat/dialogue/{id}).KindlySDK.callHandover(callback)— initiate handover to a human agent and receive a callback when the handover begins. Replaces the misnamedsetHandoverCallback(kept as a deprecated alias).
Fixed #
- iOS:
start()now actually wires theauthTokenCallbackthrough to the native SDK (previously hard-coded tonil). - iOS: every method handler now invokes the real Kindly SDK —
closeChat,endChat,setCustomTheme,setNewContext,clearNewContext,saveAuthToken,setAPNSDeviceToken,handleNotification,isKindlyNotification,triggerDialogue,setVerboseLogging,setCrashReporting,clearCustomTheme,isChatDisplayedwere all stubbed. - iOS:
isChatDisplayednow reflects real state by subscribing toKindlySDK.state. - Android: SDK imports are no longer commented out; placeholder
AuthTokenCallback/CallbackHandoverinterfaces removed in favour of the real ones. - Android:
authcallback is now passed intoChatKindlySDK.start(previously created but discarded). - Android:
triggerDialogue,setVerboseLogging,setCrashReporting,saveNotificationTokenwere reading args from a non-existent map key — now read the bare argument as Dart sends it. - Android:
handleNotification/isKindlyNotificationreconstruct aRemoteMessagefrom the data map so the SDK methods can be invoked. - Android: handover callback signature aligned with the SDK's
CallbackHandover.callHandover()(was(event, data)). - Example app & integration test imports fixed (
package:kindly_sdk/kindly_sdk.dart).
Notes #
eventsandstatestreams from the native EntryPoints (Combine on iOS, Flow on Android) are not yet exposed on the Dart side. Adding them requires a FlutterEventChanneland is tracked for a follow-up release.KindlySDKInteraction(Android button-press / link-intercept / notification delegate) is not yet exposed on the Dart side.
1.0.1 - 2025-07-11 #
Documentation #
- Updated README.md - removed Example and Support sections All notable changes to this project will be documented in this file.
1.0.0 - 2025-07-10 #
Initial Release #
Features
- 🚀 Complete Flutter bridge to native Kindly Chat SDKs (iOS & Android)
- 🎨 Customizable themes with full color control
- 🔐 JWT authentication support with callback mechanism
- 🌍 Multi-language support
- 💬 Real-time chat functionality
- 📱 Native iOS and Android implementations
- 🔔 Push notification support (APNS for iOS, FCM for Android)
- 🎯 Dialogue triggering capabilities
- 📊 Context data support for personalized conversations
- 🐛 Crash reporting and verbose logging options
API Methods
start()- Initialize the SDK with bot key and optional auth callbackdisplayChat()- Show the chat interfacelaunchChat()- Launch chat with optional dialogue triggercloseChat()- Close the chat interfaceendChat()- End the chat session completelysetCustomTheme()- Customize chat appearanceclearCustomTheme()- Reset to default theme (Android only)setNewContext()- Set contextual user dataclearNewContext()- Clear context datasaveAuthToken()- Save authentication tokensetAPNSDeviceToken()- Set iOS push notification tokensaveNotificationToken()- Set Android push notification tokenhandleNotification()- Process incoming notificationsisKindlyNotification()- Check if notification is from KindlytriggerDialogue()- Trigger specific dialogueclearTriggerDialogue()- Clear triggered dialogue (Android only)setHandoverCallback()- Set handover callback (Android only)isChatDisplayed- Check if chat is currently displayedsetVerboseLogging()- Enable/disable verbose loggingsetCrashReporting()- Enable/disable crash reporting
Platform Support
- iOS 12.0+
- Android API Level 21+
- Flutter 2.0.0+
Dependencies
- Native Kindly iOS SDK (via CocoaPods/SPM)
- Native Kindly Android SDK (via JitPack)