Changelog
All notable changes to the crisp_chat package are documented here. For the full changelog, see CHANGELOG.md on GitHub.
3.0.0
Added
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. Supports text, picker, field, carousel, file, animation, and audio content. See Local Messages.CrispConfig.localMessages— local messages shown automatically right after the chat opens, once per app lifetime and again afterresetCrispChatSession.
Changed
- Breaking (iOS): Upgraded Crisp iOS SDK from
2.13.0to3.0.1. Migration:- Raise your iOS deployment target to 14.0 and build with Xcode 16.3+.
- Add
NSCameraUsageDescriptionandNSMicrophoneUsageDescriptiontoInfo.plist— the 3.x SDK refuses to start the chat without them. - Remove
$CrispChatWebRTC(Podfile) /CRISP_CHAT_WEBRTC(SPM) if set — they are no longer read.
- Video/audio calls are now included in every iOS build;
FlutterCrispChat.isVideoCallsSupported()always returnstrueon iOS. - Replaced the deprecated iOS
segment/segmentssetters withCrispSDK.session.setSegments(_:overwrite:). - Migrated the example iOS and macOS apps to Swift Package Manager only, and adopted the UIScene lifecycle on iOS.
Documentation
- Added the Local Messages page and documented the Crisp iOS SDK 3.x requirements, built-in video calls, and Crisp's CocoaPods deprecation.
2.8.0
Added
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. ThrowsArgumentErrorfor an empty/whitespace-onlyscenarioId.
Changed
- Bumped the example app's Android build tooling — Gradle, Android Gradle Plugin, and Kotlin — to clear Flutter's deprecated-version-support warnings.
- Upgraded Crisp Android SDK from
2.0.23to2.0.24— fixes a race condition between thesession:joinedevent andresetChatSession, an NPE onprelude, and both Helpdesk and Chat showing when callingsearchHelpdeskbefore starting the chatbox.
Fixed
- Fixed iOS Crisp blocking non-Crisp foreground notifications (#78, #179).
- Fixed an iOS stack-overflow crash on non-Crisp notifications (#180) caused by a re-entrant notification-delegate forwarding loop.
2.7.0
Added
FlutterCrispChat.onCrispEvent— a broadcastStream<CrispChatEvent>of native Crisp SDK events:sessionLoaded,chatOpened,chatClosed,messageSent,messageReceived, and (Android-only)notificationReceived. See Chat Events. Not supported on Web/desktop.
Changed
- Added the
FlutterFrameworkSPM dependency toios/crisp_chat/Package.swift, required by Flutter 3.44+'s Swift Package Manager plugin support for plugins thatimport Flutterdirectly. - Upgraded Crisp Android SDK from
2.0.20to2.0.23— crash fixes plus an additiveonNotificationReceivedmethod, now exposed asCrispEventType.notificationReceived.
Fixed
- Fixed iOS notification tap never opening the chatbox on cold start or background resume (#169).
Security
- Resolved four Dependabot alerts in
docsrc/via avite@^6.4.3npm override (GHSA-fx2h-pf6j-xcff, GHSA-v6wh-96g9-6wx3, GHSA-4w7w-66w2-5vf9, GHSA-67mh-4wv8-2f99). - Downgraded docsrc build toolchain from
vitepress@2.0.0-alpha.17tovitepress@1.6.4to resolve two high-severity vite 7.x CVEs.
Documentation
- docsrc PageSpeed / SEO / AEO improvements (Lighthouse mobile performance 69 → 72+, CLS now 0):
- Re-encoded
logo.png(was a 2048×2048 JPEG mislabeled.png, 89.7 KB) to a true 256×256 PNG at 12 KB; resizedfirebase-logo.pngandcrisp-logo.pngto their display size. - Resized the home hero image to match its max display size at 2x retina.
- Self-hosted the "Crisp" sponsor logo instead of hotlinking Webflow's CDN.
- Added explicit
width/heightto all images (closes Lighthouse'sunsized-imagesaudit),loading="lazy"on below-the-fold images, andfetchpriority="high"+ a preload hint on the hero image. - Converted the Google Fonts stylesheet to a non-render-blocking preload + swap pattern.
- Added
FAQPageJSON-LD structured data to the FAQ page, and allms.txtfile summarizing the project for AI answer engines.
- Re-encoded
2.6.0
Added
FlutterCrispChat.openHelpdesk()— opens the Crisp Helpdesk/FAQ search screen directly on all platforms (closes #158). Android/iOS use the native SDK; Web and desktop push$crisp.push(["do", "helpdesk:search"])via the Crisp Web Chat SDK.FlutterCrispChat.openHelpdeskArticle()— opens a specific helpdesk article bylocaleandslug, with optionaltitleandcategory, on all platforms. Android/iOS use the native SDK; Web and desktop push$crisp.push(["do", "helpdesk:article:open", [...]]). See Helpdesk / FAQ for full details.
Fixed
- Fixed iOS Swift Package Manager build error — added explicit
UIKitlinker setting toPackage.swift(#161). - Fixed spurious
"can not find webview for id: 0"log noise on desktop — added startup delay before polling and suppressed transient initialisation error.
Security
- Fixed high-severity esbuild RCE vulnerability (GHSA-gv7w-rqvm-qjhr) in
docsrc/dev tooling — bumped esbuild override to^0.28.0(#159). - Fixed low-severity esbuild path traversal vulnerability (GHSA-g7r4-m6w7-qqqr) in
docsrc/dev tooling — bumped esbuild override to^0.28.1(#160).
Documentation
- Added blog post covering the multi-platform
crisp_chatFlutter plugin expansion to Web and desktop. - Added Helpdesk / FAQ documentation page with full usage examples for all platforms.
- docsrc PageSpeed / SEO improvements: local asset hosting, non-render-blocking font loading, Open Graph / Twitter Card meta, canonical links, JSON-LD structured data, and CLS fixes.
2.5.0
Added
- Web support (Crisp Web Chat SDK via
client.crisp.chat). - Desktop support for macOS, Windows, and Linux (
desktop_webview_window+ browser fallback). FlutterCrispChat.markMessagesAsRead()— RESTPATCHto clearunread.visitor(iOS read-receipt workaround; also on Android/Web/desktop with REST credentials).FlutterCrispChat.isVideoCallsSupported()— check whether the current build supports Crisp calls (iOS WebRTC variant, or Web/desktop).- Optional iOS video/audio calls (build-time opt-in):
- CocoaPods:
$CrispChatWebRTC = trueinios/Podfile(Crisp/CrispWebRTC, ~10 MB larger). - SPM:
CRISP_CHAT_WEBRTC=truebefore build;Package.swiftselectsCrispWebRTCautomatically. - Android native video not supported yet (Crisp Android SDK #181).
- CocoaPods:
- Documentation: Supported platforms guide; Crisp dashboard domain lock guidance (#148); iOS unread-count limitation (troubleshooting and unread messages).
Changed
- Minimum Dart SDK 3.5.0 and Flutter 3.24.0.
openChatboxFromNotificationandsetOnNotificationTappedCallbackare no-ops on Web/desktop.- Example app extended with linux, macos, and windows runners.
- GitHub Actions CI (analyze + test on Ubuntu).
Breaking
- Apps on Flutter < 3.24 or Dart < 3.5 must stay on 2.4.8 for mobile-only usage.
- New dependencies:
desktop_webview_window,http,url_launcher,web.
2.4.8
Fixed
- Fixed iOS Swift Package Manager integration (broken since
2.4.2): package resolution, product namecrisp-chat, and Swift-only SPM target. - Consolidated iOS Swift sources under
ios/crisp_chat/Sources/crisp_chat/for SPM and CocoaPods. - Restored
ModalPresentationStyle.popovermapping toUIModalPresentationStyle.popoverwith iPad popover anchor configuration.
2.4.7
Added
- Added
signatureparameter toUserfor Crisp Identity Verification on Android and iOS.
Changed
- Upgraded Crisp Android SDK from
2.0.18to2.0.20.- Added mobile SDK specific strings localization.
- #232 Added missing mobile SDK specific strings localization.
Fixed
- Fixed issue: #132 - [iOS] Black screen after closing chat (fullScreen) / tap-through when open (overFullScreen)
2.4.6
Added
modalPresentationStyleparameter toCrispConfigfor iOS modal presentation style configurationModalPresentationStyleenum with options:fullScreen,pageSheet,formSheet,overFullScreen,overCurrentContext, andpopover- Default modal presentation style is set to
fullScreento prevent touch events from passing through to the underlying Flutter UI
Changed
- Upgraded Crisp Android SDK from
2.0.17to2.0.18- Fixed crash on message deserialization when origin is null
Fixed
- Fixed issue where
enableNotifications: falseinCrispConfigwas being ignored on iOS, causing the Crisp SDK to still prompt for push notification permissions after sending the first message
2.4.5
Changed
- Upgraded Crisp Android SDK from
2.0.16to2.0.17- Scroll to last message after visitor sent it
- Updated smileys sorting according to Web dashboard
2.4.4
Added
CrispChatNotificationService— a customFirebaseMessagingServicethat handles Crisp push notifications without auto-openingChatActivityopenChatboxFromNotification()method to open the Crisp chatbox from a notification intentsetOnNotificationTappedCallback()method to listen for notification taps while the app is in the backgroundfirebase-messagingas acompileOnlydependency in the SDK'sbuild.gradle
Changed
- Upgraded Crisp iOS SDK from
2.12.0to2.13.0 - Updated
FlutterCrispChatPlugin.javato implementNewIntentListenerfor detecting notification taps - Updated
README.mdwith two notification handling approaches: Option A (auto-open) and Option B (app-first)
Fixed
- #79 — Crisp notification tap directly opens ChatActivity instead of the app's main screen on terminated state
2.4.3
Fixed
- #98 —
getSessionIdentifier()returns null after closing chat, preventing unread message checks
2.4.2
Added
getUnreadMessageCountto get unread message count- Swift Package Manager support for iOS
- Validation for websiteID on iOS & Android SDK level
Changed
- Upgraded Crisp Android SDK from
2.0.13to2.0.16 - Increased
minSdkVersionfrom21to23 - Updated
compileSdkVersionfrom35to36 - Upgraded AGP from
8.6.1to8.9.1 - Upgraded Gradle from
8.7to8.11.1 - Upgraded Crisp iOS SDK from
2.8.2to2.12.0 - Increased minimum iOS deployment target from
9.0to13.0
2.4.1
Added
- Google Play's 16KB page size requirement support
Changed
- Updated Crisp Android SDK
2.0.12to2.0.13 - Updated AGP from
8.6to8.7 - Updated Gradle from
8.4.1to8.6.1 - Updated example project Kotlin from
1.7.10to2.1.0
2.4.0
Added
pushSessionEvent— sends a custom event to the Crisp session withnameandcolor
Changed
- Increased minimum Dart SDK constraint from
>=2.12.0to>=2.15.0
2.3.0
Added
- Comprehensive usage examples in README
{@category}tags for improved documentation- Supported native SDK versions section in README
Changed
- Updated Crisp Android SDK
2.0.11to2.0.12 - Upgraded
compileSdkandtargetSdkto35 - Enhanced error handling for
getSessionIdentifier - Switched from
ExceptiontoArgumentErrorfor input validation
Fixed
- #57 — Android mailto: links fail to launch email app on some devices
2.2.5
- Updated Crisp Android SDK
2.0.10to2.0.11 - Fixed #45: Push view up when keyboard is open
- Added remote notification registration for iOS
2.2.4
- Updated Crisp Android SDK
2.0.9to2.0.10 - Updated Crisp iOS SDK
2.8.1to2.8.2 - Added
enableNotificationsflag inCrispConfig - Added
setSessionSegmentsmethod
2.2.0
- Updated Crisp Android SDK
2.0.5to2.0.8 - Added notification support for missing messages
- Fixed #10, #17, #24
2.0.4
- Added
setSessionStringandsetSessionIntmethods
2.0.0
- Major UI update to match Web & iOS chat boxes
- Take photo support, carousel messages, HelpDesk APIs
- Fixed #4: Build fail due to dependency
1.0.0
- Added Markdown support
- Updated Android Crisp SDK
1.0.16to1.0.18
0.0.1
- Initial release — Crisp Chat for native Android & iOS platforms
Next Steps
- Common Issues — Troubleshooting guide