NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2584 most downloaded on pub.dev
Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop.
Last release today
08 Oct 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 37 of 37 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
37 releases · first in 2023
One column per quarter.
Replaced the deprecated CrispSDK.session.segment / segments setters with CrispSDK.session.setSegments(_) for CrispConfig.sessionSegment and FlutterCri…
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
FlutterCrispChat.showMessage(CrispMessageContent content) — shows a message as an operator in the local chatbox only (never sent to the Crisp inbox) on Android, iOS, Web, and desktop. Wraps Crisp.showMessage(Content) (Android), CrispSDK.showMessage(with:) (iOS), and $crisp.push(["do", "message:show", [type, content]]) (Web/desktop). Supports CrispTextContent, CrispPickerContent, CrispFieldContent, CrispCarouselContent, CrispFileContent, CrispAnimationContent, and CrispAudioContent. Throws ArgumentError for an empty text, a picker without choices, or a carousel without targets.CrispConfig.localMessages — local messages shown automatically right after the chat opens, the first time openCrispChat is called in the app's lifetime and again after resetCrispChatSession, so reopening the chat doesn't duplicate them.CrispConfig.localMessages, and a "Show Local Message" button demonstrating showMessage() with an email field.2.13.0 to 3.0.1 — a ground-up rewrite with a lighter footprint. 3.0.1 ties chat sessions to a Crisp-issued token so only the device that started a conversation can reopen it; Crisp will start enforcing this in the coming months, after which 2.x SDKs can no longer reopen conversations. See the 3.0.0 and 3.0.1 release notes. Migration:
13.0) and build with Xcode 16.3+.NSCameraUsageDescription and NSMicrophoneUsageDescription to Info.plist — the 3.x SDK refuses to start the chat without them.$CrispChatWebRTC (Podfile) / CRISP_CHAT_WEBRTC (SPM) if set — they are no longer read.FlutterCrispChat.isVideoCallsSupported() always returns true on iOS. The separate CrispWebRTC SDK variant, the Crisp/CrispWebRTC CocoaPods subspec, and the CRISP_WEBRTC compile flag are gone; the plugin now depends on the single Crisp pod / SPM product.CrispSDK.session.segment / segments setters with CrispSDK.session.setSegments(_:overwrite:) for CrispConfig.sessionSegment and FlutterCrispChat.setSessionSegments() on iOS.Info.plist.Podfile, Pods build phases, and the Pods-Runner xcconfig includes), adopted the UIScene lifecycle (FlutterImplicitEngineDelegate + FlutterSceneDelegate scene manifest), and set version: 1.0.0+1 in its pubspec.yaml — clears the Flutter 3.47 build warnings for UIScene migration, non-standard Podfile, and missing build name/number.pod deintegrate, removed the Podfile and the Pods #includes from Flutter-Debug.xcconfig / Flutter-Release.xcconfig, dropped the Pods project from the workspace, committed the SPM Package.resolved, and raised the deployment target from 10.15 to 12.0 (set by Flutter's SPM migration). Clears Flutter's "your project still has CocoaPods integration" warning and the pod install step on macOS builds.3.47.6 via fvm (.fvmrc) so contributors build with the same Flutter version used to verify the Crisp iOS SDK 3.0.1 upgrade.build/ and the native platform folders from the analyzer in the plugin and example — Flutter 3.47's SPM integration copies third-party plugin Dart sources into build/**/SourcePackages/, which made a bare flutter analyze report ~160 unrelated issues.vue / @vue/server-renderer 3.5.33 → 3.5.43, source-map-js 1.2.1 → 1.2.2).showMessage(), CrispConfig.localMessages, every message type, and platform differences; updated the Configuration, API Documentation, Supported Platforms, and Full Example pages, llms.txt, and the README.Info.plist keys), built-in video calls, and Crisp's CocoaPods deprecation in the README and docs site.Full Changelog: v2.8.0...v3.0.0
…, Kotlin 2.1.0 → 2.2.20 — to clear Flutter's deprecated-version-support warnings, and raised the example's Gradle daemon heap ( org.gradle.jvmargs ) f…
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
FlutterCrispChat.runBotScenario({required String scenarioId}) — runs a Crisp Bot scenario (as configured in the Bot plugin on your Crisp website) on Android, iOS, Web, and desktop. Wraps Crisp.runBotScenario(String) (Android), CrispSDK.session.runBotScenario(id:) (iOS), and $crisp.push(["do", "bot:scenario:run", [scenarioId]]) (Web/desktop). Throws ArgumentError for an empty/whitespace-only scenarioId.8.11.1 → 8.14.5, Android Gradle Plugin 8.9.1 → 8.11.1, Kotlin 2.1.0 → 2.2.20 — to clear Flutter's deprecated-version-support warnings, and raised the example's Gradle daemon heap (org.gradle.jvmargs) from 1536M to 3072M to avoid an out-of-memory failure under the newer AGP.2.0.23 to 2.0.24 — fixes a race condition between the session:joined event and resetChatSession, an NPE on prelude, and both Helpdesk and Chat showing when calling searchHelpdesk before starting the chatbox (the latter directly affects this plugin's openHelpdesk()). Also bumps the transitive androidx.core:core dependency from 1.17.0 to 1.18.0, fixing a crash on insets. See the 2.0.24 release notes.FlutterCrispChatPlugin no longer unconditionally takes over UNUserNotificationCenter.current().delegate. If the existing delegate already conforms to FlutterAppLifeCycleProvider (i.e. FlutterAppDelegate itself, which already broadcasts willPresent/didReceive to every plugin registered via addApplicationDelegate, Crisp included), the plugin leaves it in place instead of replacing it — avoiding a fight over the delegate slot with other plugins. Also fixed a fallback path that silently swallowed non-Crisp foreground notifications (completionHandler([])) when no previous delegate existed; it now presents them with .banner/.alert + .sound like the system default.firebase_messaging) when the app is in the foreground or a delivered notification is tapped (#180) — when Crisp is reached through Flutter's plugin lifecycle fan-out rather than being the direct UNUserNotificationCenter delegate, forwarding a non-Crisp notification to previousNotificationDelegate could loop back into that same fan-out and call Crisp again, recursing until the stack guard page was hit. userNotificationCenter(_:willPresent:withCompletionHandler:) and userNotificationCenter(_:didReceive:withCompletionHandler:) now guard the forward call with a one-shot re-entrancy flag so a cycle falls back to presenting/completing the notification instead of recursing.Full Changelog: v2.7.0...v2.8.0
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
FlutterCrispChat.onCrispEvent — a broadcast Stream<CrispChatEvent> of native Crisp SDK events: sessionLoaded, chatOpened, chatClosed, messageSent, messageReceived, and (Android-only) notificationReceived. Wraps the native SDK's EventsCallback on Android and the Crisp.Callback enum on iOS; the native callback is registered on first .listen() and unregistered once the last listener cancels. Not supported on Web/desktop.FlutterFramework SPM dependency to ios/crisp_chat/Package.swift, as required by Flutter 3.44+'s Swift Package Manager plugin support for plugins that import Flutter directly — silences the "missing a dependency on FlutterFramework" build warning.2.0.20 to 2.0.23 — includes fixes for an occasional crash on chatbox closing, a crash on messages with a preview field but no embedded preview, and rejecting file:// scheme URL opening instead of crashing, plus an additive onNotificationReceived method on the native SDK's EventsCallback, now exposed as CrispEventType.notificationReceived through FlutterCrispChat.onCrispEvent.foregroundInactive, which failed openChat()'s foreground-active scene guard and silently dropped the tap. userNotificationCenter(_:didReceive:) now routes through a new openChatWhenActive() helper that defers opening until a one-shot UIApplication.didBecomeActiveNotification fires if no active scene exists yet (#174).vite@^6.4.3 npm override in docsrc/ to fix four Dependabot alerts left open by the previous vitepress@1.6.4 downgrade — its direct vite@^5.4.14 dependency resolved to 5.4.21, which bundles an unpatched esbuild@0.21.5 and predates fixes only ever backported to the vite 6.4.x line: GHSA-fx2h-pf6j-xcff (server.fs.deny bypass on Windows, high), GHSA-v6wh-96g9-6wx3 (launch-editor NTLMv2 hash disclosure), GHSA-4w7w-66w2-5vf9 (path traversal in optimized deps .map handling), and GHSA-67mh-4wv8-2f99 (esbuild dev server request/response read). The override resolves to vite@6.4.3 + esbuild@0.25.12, both within @vitejs/plugin-vue's supported peer range for vitepress@1.6.4.vitepress@2.0.0-alpha.17 (vite 7.x) to vitepress@1.6.4 (vite 5.x) to resolve two high-severity vite 7.x CVEs (GHSA-859j-r86m-m3mj, GHSA-pc3c-v4xw-v6vq) and one low-severity esbuild CVE (GHSA-67mh-4wv8-2f99) — patched versions (vite 7.3.5, esbuild 0.28.1) are not yet published so a toolchain downgrade to unaffected version ranges was applied. Removed the stale esbuild@^0.28.1 npm override that referenced a non-existent version.graphics/logo.png — it was actually a 2048×2048 JPEG mislabeled with a .png extension at 89.7 KB, displayed at 24–32px everywhere (favicon, nav logo, OG image). Re-saved as a true 256×256 PNG at 12 KB (~87% smaller).graphics/firebase-logo.png (640×640 → 128×128) and graphics/crisp-logo.png (200×200 → 96×96) to match their ~32px display size.graphics/crisp-hero.jpg (1280×720 → 640×360) to match the home hero's max 320px CSS box at 2x retina.docsrc/docs/.vitepress/theme/data/sponsor.json) instead of hotlinking uploads-ssl.webflow.com — the last remaining third-party image hotlink, previously missed when the other logos were localized.width/height to the nav logo (themeConfig.logo), the home hero image (index.md frontmatter), the sponsor card image, and the GitHub avatar — closes the Lighthouse unsized-images audit and drops CLS to 0.loading="lazy" to all below-the-fold images (sponsor logos, "Powered By" logos, author avatar), and fetchpriority="high" plus a homepage-scoped <link rel="preload" as="image"> on the hero image (the LCP candidate).?s=96 instead of the full-resolution image for a 48px display.<link rel="stylesheet"> to a preload + media="print" swap pattern (with a <noscript> fallback) so it no longer render-blocks first paint (~920ms savings) — same fonts, no visual change.FAQPage JSON-LD structured data to reference/faq.md for FAQ rich results and answer-engine extraction.docs/public/llms.txt (per the emerging llms.txt convention) summarizing the project and linking key docs pages for AI answer engines/crawlers.uses-long-cache-ttl (GitHub Pages doesn't support custom Cache-Control headers) and unused-javascript on gtag.js (inherent to Google Analytics; already the lighter alternative to a full GTM container).Full Changelog: v2.6.0...v2.7.0
Fixed high-severity esbuild RCE vulnerability ( GHSA-gv7w-rqvm-qjhr ) in docsrc/ dev tooling — bumped esbuild override from ^0.25.0 to ^0.28.0 ( #159…
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
FlutterCrispChat.openHelpdesk() — opens the Crisp Helpdesk/FAQ search screen directly on all platforms (closes #158). On Android, calls Crisp.searchHelpdesk() then starts ChatActivity. On iOS, calls CrispSDK.searchHelpdesk() then presents ChatViewController. On Web and desktop, pushes $crisp.push(["do", "helpdesk:search"]) via the Crisp Web Chat SDK.FlutterCrispChat.openHelpdeskArticle() — opens a specific helpdesk article by locale and slug, with optional title and category, on all platforms. Native SDK on Android/iOS; $crisp.push(["do", "helpdesk:article:open", [...]]) on Web and desktop.UIKit linker setting to Package.swift (#161)."can not find webview for id: 0" log noise on desktop — added 500 ms startup delay before polling and suppressed the transient initialisation error.docsrc/ dev tooling — bumped esbuild override from ^0.25.0 to ^0.28.0 (#159).docsrc/ dev tooling — bumped esbuild override to ^0.28.1 (#160).crisp_chat) Flutter plugin expansion to Web and desktop.@import for Google Fonts with <link rel="stylesheet"> + <link rel="preconnect"> in the VitePress head config.twitter:card, twitter:site, twitter:title, twitter:description, and twitter:image meta tags to all pages.og:image:width, og:image:height, and og:image:alt to all pages.<link rel="canonical"> to all pages.SoftwareApplication structured data to all pages./graphics/flutter-logo.png, /graphics/firebase-logo.png, /graphics/crisp-logo.png) to eliminate third-party image dependencies and CLS.digitiz.fr) to /graphics/crisp-hero.jpg — served from same origin.width/height attributes to all "Powered By" images to eliminate Cumulative Layout Shift (CLS).alt attribute from <link rel="icon"> tag.preconnect hints for Google Fonts, gstatic, and Google Tag Manager.Full Changelog: v2.5.0...v2.6.0
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
$crisp / client.crisp.chat).desktop_webview_window, with browser fallback when WebView is unavailable.FlutterCrispChat.markMessagesAsRead() — REST PATCH to clear unread.visitor (workaround when the iOS native SDK does not sync read receipts; also usable on Android, Web, and desktop with REST credentials).FlutterCrispChat.isVideoCallsSupported() — returns whether the current build supports Crisp calls (iOS WebRTC variant, or Web/desktop).CrispConfig flag):
$CrispChatWebRTC = true in ios/Podfile → links Crisp/CrispWebRTC instead of Crisp/Crisp (~10 MB larger).CRISP_CHAT_WEBRTC=true before flutter build ios (or Xcode scheme env var); Package.swift selects CrispWebRTC automatically.docs/unread-count-verification.md).openChatboxFromNotification and setOnNotificationTappedCallback are no-ops on Web/desktop.desktop_webview_window, http, url_launcher, web.Full Changelog: v2.4.8...v2.5.0
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
2.4.2 that failed during Xcode package resolution with target 'crisp_chat' in package 'crisp_chat' is outside the package root.crisp-chat (required by Flutter's generated FlutterGeneratedPluginSwiftPackage).ios/Classes/.ios/crisp_chat/Sources/crisp_chat/ for both SPM and CocoaPods.ModalPresentationStyle.popover on iOS (UIModalPresentationStyle.popover) with popoverPresentationController configuration for iPad.FlutterCrispChatPlugin interface (removed redundant ObjC shim; Swift-only registration).Full Changelog: v2.4.7...v2.4.8
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
signature parameter to User for Crisp Identity Verification on Android and iOS.2.0.18 to 2.0.20.
Full Changelog: v2.4.6...v2.4.7
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
modalPresentationStyle parameter to CrispConfig for iOS modal presentation style configuration.ModalPresentationStyle enum with options: fullScreen, pageSheet, formSheet, overFullScreen, overCurrentContext, and popover.fullScreen to prevent touch events from passing through to the underlying Flutter UI.2.0.17 to 2.0.18.
enableNotifications: false in CrispConfig was being ignored on iOS, causing the Crisp SDK to still prompt for push notification permissions after sending the first message.Full Changelog: v2.4.5...v2.4.6
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
2.0.16 to 2.0.17.
Full Changelog: v2.4.4...v2.4.5
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
CrispChatNotificationService — a custom FirebaseMessagingService that handles Crisp push notifications without auto-opening ChatActivity. This allows the app to open first, then programmatically open the chatbox.openChatboxFromNotification() method to open the Crisp chatbox from a notification intent after the app has launched.setOnNotificationTappedCallback() method to listen for Crisp notification taps while the app is in the background.firebase-messaging as a compileOnly dependency in the SDK's build.gradle.2.12.0 to 2.13.0.FlutterCrispChatPlugin.java to implement NewIntentListener for detecting notification taps via onNewIntent.README.md with two notification handling approaches: Option A (auto-open ChatActivity) and Option B (open app first, then chatbox).Full Changelog: v2.4.3...v2.4.4
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
The latest package is on Crisp Chat - pub.dev
getSessionIdentifier() returns null after closing chat, preventing unread message checksFull Changelog: v2.4.2...v2.4.3
A flutter plugin package for using crisp chat natively on Android & iOS.
A flutter plugin package for using crisp chat natively on Android & iOS.
The latest package is on Crisp Chat - pub.dev
getUnreadMessageCount to get unread message count,2.0.13 to 2.0.16.minSdkVersion from 21 to 23.compileSdkVersion from 35 to 36.8.6.1 to 8.9.1.8.7 to 8.11.1,2.8.2 to 2.12.0,9.0 to 13.0.Full Changelog: crisp_chat_v2.4.1...crisp_chat_v2.4.2
Package now supported Google Play's 16KB page size requirement.
2.0.12 to 2.0.13.8.6 to 8.7.8.4.1 to 8.6.1.example project Kotlin from 1.7.10 to 2.1.0.Added new function pushSessionEvent to sends a custom event to the Crisp session with name and color.
pushSessionEvent to sends a custom event to the Crisp session with name and color.>=2.12.0 to >=2.15.0.New section in README.md detailing supported native Crisp SDK versions (Android & iOS).
README.md detailing supported native Crisp SDK versions (Android & iOS).README.md, including detailed CrispConfig setup with User and Company objects.{@category} tags to Dart classes and methods for improved generated documentation.resetCrispChatSession and clearer calling sequences in README.md.README.md.2.0.11 to 2.0.12.compileSdk and targetSdk to 35AGP from 8.1.1 to 8.3.0Gradle from 8.2 to 8.4getSessionIdentifier method.Exception to ArgumentError for input validation with more descriptive messages.Update Crisp Android SDK 2.0.10 to 2.0.11.
2.0.10 to 2.0.11.Update Crisp Android SDK 2.0.9 to 2.0.10.
2.0.9 to 2.0.10.2.8.1 to 2.8.2.enableNotifications flag in CrispConfig to enable/disable notifications for your site.enableNotifications flag.setSessionSegments method to support clients using multiple segments with Crisp.Update Crisp Android SDK 2.0.8 to 2.0.9.
2.0.8 to 2.0.9.Added Specific Crisp iOS SDK 2.8.1
Added proper documentation for notification sending via crisp
Update Crisp Android SDK 2.0.5 to 2.0.8.
Fixed #21 unable to open chat for specific domain email
isEmail and isUrl helper validation fixedFixed #20 reset chat session exception on iOS
getSessionIdentifier feature for iOSUpdate Crisp Android SDK 2.0.4 to 2.0.5. This fixed camera app crash on take photo feature on some devices
2.0.4 to 2.0.5. This fixed camera app crash on take photo feature on some devices1.6.10 to 1.7.10Added getSessionIdentifier to get current session for Android only
getSessionIdentifier to get current session for Android only2.0.3beta4 to 2.0.4im.crisp.client package are now under im.crisp.client.external one!Update Crisp Android SDK 2.0.1beta2 to 2.0.3beta4
2.0.1beta2 to 2.0.3beta4Updated AGP from 7.4.0 to 8.6.0
7.4.0 to 8.6.0Added setSessionString method to set string session data.
FlutterCrispChat.setSessionString(key: "a_string", value: "string_value");FlutterCrispChat.setSessionInt(key: "a_number", value: 12345);sync compose, text area, operator, scroll and wait for reply and new messages alerts.
CAMERA permission. If user denied it, next taps on this feature will show a dialog redirecting him to the app permission setting,SecurityException crashes on link touch due to file:// schemes or 3rd-party installed app set to open any link but not exporting their Activity... So added a Unable to open link. Check if an app, except you browser, is configured to open any link. toast when touched link cannot be opened,8.2.2 to 8.3.2.If your app declares a FileProvider in its AndroidManifest.xml, please add Crisp authority and path to it as follows as it is required for the file upload feature.
AndroidManifest.xml
<provider android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider;${applicationId}.im.crisp.client.uploadfileprovider"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"
tools:replace="android:resource" />
</provider>
res/xml/file_paths.xml
<files-path name="crisp_sdk_attachments" path="im.crisp.client/attachments/" />
Added option to reset chat session
* Added session segment support
updated UI to match Web & iOS chat boxes
searchHelpDesk: opens help desk search, right away if the ChatActivity is running, on its next start otherwise,openHelpDeskArticle: views helpDesk article, right away if the ChatActivity is running, on its next start otherwise.action support for picker message type,field & picker message types,SHIFT+ENTER inserts a line break, ENTER only sends the message),flexbox now for picker message type, should fix choices list cutted,glide now for media loading, should fix NPE on GIF parsing,user messages sent outside of the Android chat box,read status message duplicates,updated android crisp version 1.0.16 to 1.0.18
1.0.16 to 1.0.18com.google.android.material:material from 1.9.0 to 1.10.0,androidx.media3:media3-exoplayer from 1.1.0 to 1.1.1.33 to 34.added user configuration option in crisp configuration
1.0.14 to 1.0.16* change readme file
crisp chat add for native platform
crisp Chat add for native platform
Your coding agent can read these notes before it upgrades. Set up the MCP server →