Skip to content

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 after resetCrispChatSession.

Changed ​

  • Breaking (iOS): Upgraded Crisp iOS SDK from 2.13.0 to 3.0.1. Migration:
    • Raise your iOS deployment target to 14.0 and build with Xcode 16.3+.
    • Add NSCameraUsageDescription and NSMicrophoneUsageDescription to Info.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 returns true on iOS.
  • Replaced the deprecated iOS segment / segments setters with CrispSDK.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. Throws ArgumentError for an empty/whitespace-only scenarioId.

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.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.

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 broadcast Stream<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 FlutterFramework SPM dependency to ios/crisp_chat/Package.swift, required by Flutter 3.44+'s Swift Package Manager plugin support for plugins that import Flutter directly.
  • Upgraded Crisp Android SDK from 2.0.20 to 2.0.23 — crash fixes plus an additive onNotificationReceived method, now exposed as CrispEventType.notificationReceived.

Fixed ​

  • Fixed iOS notification tap never opening the chatbox on cold start or background resume (#169).

Security ​

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; resized firebase-logo.png and crisp-logo.png to 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/height to all images (closes Lighthouse's unsized-images audit), loading="lazy" on below-the-fold images, and fetchpriority="high" + a preload hint on the hero image.
    • Converted the Google Fonts stylesheet to a non-render-blocking preload + swap pattern.
    • Added FAQPage JSON-LD structured data to the FAQ page, and a llms.txt file summarizing the project for AI answer engines.

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 by locale and slug, with optional title and category, 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 UIKit linker setting to Package.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_chat Flutter 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() — REST PATCH to clear unread.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 = true in ios/Podfile (Crisp/CrispWebRTC, ~10 MB larger).
    • SPM: CRISP_CHAT_WEBRTC=true before build; Package.swift selects CrispWebRTC automatically.
    • Android native video not supported yet (Crisp Android SDK #181).
  • 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.
  • openChatboxFromNotification and setOnNotificationTappedCallback are 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 name crisp-chat, and Swift-only SPM target.
  • Consolidated iOS Swift sources under ios/crisp_chat/Sources/crisp_chat/ for SPM and CocoaPods.
  • Restored ModalPresentationStyle.popover mapping to UIModalPresentationStyle.popover with iPad popover anchor configuration.

2.4.7 ​

Added ​

  • Added signature parameter to User for Crisp Identity Verification on Android and iOS.

Changed ​

  • Upgraded Crisp Android SDK from 2.0.18 to 2.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 ​

  • modalPresentationStyle parameter to CrispConfig for iOS modal presentation style configuration
  • ModalPresentationStyle enum with options: fullScreen, pageSheet, formSheet, overFullScreen, overCurrentContext, and popover
  • Default modal presentation style is set to fullScreen to prevent touch events from passing through to the underlying Flutter UI

Changed ​

  • Upgraded Crisp Android SDK from 2.0.17 to 2.0.18
    • Fixed crash on message deserialization when origin is null

Fixed ​

  • Fixed issue where 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

2.4.5 ​

Changed ​

  • Upgraded Crisp Android SDK from 2.0.16 to 2.0.17
    • Scroll to last message after visitor sent it
    • Updated smileys sorting according to Web dashboard

2.4.4 ​

Added ​

  • CrispChatNotificationService — a custom FirebaseMessagingService that handles Crisp push notifications without auto-opening ChatActivity
  • openChatboxFromNotification() method to open the Crisp chatbox from a notification intent
  • setOnNotificationTappedCallback() method to listen for notification taps while the app is in the background
  • firebase-messaging as a compileOnly dependency in the SDK's build.gradle

Changed ​

  • Upgraded Crisp iOS SDK from 2.12.0 to 2.13.0
  • Updated FlutterCrispChatPlugin.java to implement NewIntentListener for detecting notification taps
  • Updated README.md with 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 ​

  • getUnreadMessageCount to 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.13 to 2.0.16
  • Increased minSdkVersion from 21 to 23
  • Updated compileSdkVersion from 35 to 36
  • Upgraded AGP from 8.6.1 to 8.9.1
  • Upgraded Gradle from 8.7 to 8.11.1
  • Upgraded Crisp iOS SDK from 2.8.2 to 2.12.0
  • Increased minimum iOS deployment target from 9.0 to 13.0

2.4.1 ​

Added ​

  • Google Play's 16KB page size requirement support

Changed ​

  • Updated Crisp Android SDK 2.0.12 to 2.0.13
  • Updated AGP from 8.6 to 8.7
  • Updated Gradle from 8.4.1 to 8.6.1
  • Updated example project Kotlin from 1.7.10 to 2.1.0

2.4.0 ​

Added ​

  • pushSessionEvent — sends a custom event to the Crisp session with name and color

Changed ​

  • Increased minimum Dart SDK constraint from >=2.12.0 to >=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.11 to 2.0.12
  • Upgraded compileSdk and targetSdk to 35
  • Enhanced error handling for getSessionIdentifier
  • Switched from Exception to ArgumentError for input validation

Fixed ​

  • #57 — Android mailto: links fail to launch email app on some devices

2.2.5 ​

  • Updated Crisp Android SDK 2.0.10 to 2.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.9 to 2.0.10
  • Updated Crisp iOS SDK 2.8.1 to 2.8.2
  • Added enableNotifications flag in CrispConfig
  • Added setSessionSegments method

2.2.0 ​

  • Updated Crisp Android SDK 2.0.5 to 2.0.8
  • Added notification support for missing messages
  • Fixed #10, #17, #24

2.0.4 ​

  • Added setSessionString and setSessionInt methods

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.16 to 1.0.18

0.0.1 ​

  • Initial release — Crisp Chat for native Android & iOS platforms

Next Steps ​