crisp_chat 2.7.0
crisp_chat: ^2.7.0 copied to clipboard
Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop.
2.7.0 #
Added #
FlutterCrispChat.onCrispEvent— a broadcastStream<CrispChatEvent>of native Crisp SDK events:sessionLoaded,chatOpened,chatClosed,messageSent,messageReceived, and (Android-only)notificationReceived. Wraps the native SDK'sEventsCallbackon Android and theCrisp.Callbackenum on iOS; the native callback is registered on first.listen()and unregistered once the last listener cancels. Not supported on Web/desktop.
Changed #
- Added the
FlutterFrameworkSPM dependency toios/crisp_chat/Package.swift, as required by Flutter 3.44+'s Swift Package Manager plugin support for plugins thatimport Flutterdirectly — silences the "missing a dependency on FlutterFramework" build warning. - Upgraded Crisp Android SDK from
2.0.20to2.0.23— includes fixes for an occasional crash on chatbox closing, a crash on messages with apreviewfield but no embedded preview, and rejectingfile://scheme URL opening instead of crashing, plus an additiveonNotificationReceivedmethod on the native SDK'sEventsCallback, now exposed asCrispEventType.notificationReceivedthroughFlutterCrispChat.onCrispEvent.
Fixed #
- Fixed iOS notification tap never opening the chatbox on cold start or background resume (#169) — the tap is delivered while the scene is still
foregroundInactive, which failedopenChat()'s foreground-active scene guard and silently dropped the tap.userNotificationCenter(_:didReceive:)now routes through a newopenChatWhenActive()helper that defers opening until a one-shotUIApplication.didBecomeActiveNotificationfires if no active scene exists yet (#174).
Security #
- Added a
vite@^6.4.3npm override indocsrc/to fix four Dependabot alerts left open by the previousvitepress@1.6.4downgrade — its directvite@^5.4.14dependency resolved to5.4.21, which bundles an unpatchedesbuild@0.21.5and predates fixes only ever backported to the vite6.4.xline: GHSA-fx2h-pf6j-xcff (server.fs.denybypass on Windows, high), GHSA-v6wh-96g9-6wx3 (launch-editor NTLMv2 hash disclosure), GHSA-4w7w-66w2-5vf9 (path traversal in optimized deps.maphandling), and GHSA-67mh-4wv8-2f99 (esbuild dev server request/response read). The override resolves tovite@6.4.3+esbuild@0.25.12, both within@vitejs/plugin-vue's supported peer range forvitepress@1.6.4. - Downgraded docsrc build toolchain from
vitepress@2.0.0-alpha.17(vite 7.x) tovitepress@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 staleesbuild@^0.28.1npm override that referenced a non-existent version.
Documentation #
- docsrc PageSpeed / SEO / AEO improvements (Lighthouse mobile performance 69 → 72+ locally, LCP/FCP/CLS all improved, CLS now a perfect 0):
- Re-encoded
graphics/logo.png— it was actually a 2048×2048 JPEG mislabeled with a.pngextension 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). - Resized
graphics/firebase-logo.png(640×640 → 128×128) andgraphics/crisp-logo.png(200×200 → 96×96) to match their ~32px display size. - Resized
graphics/crisp-hero.jpg(1280×720 → 640×360) to match the home hero's max 320px CSS box at 2x retina. - Self-hosted the "Crisp" sponsor logo (
docsrc/docs/.vitepress/theme/data/sponsor.json) instead of hotlinkinguploads-ssl.webflow.com— the last remaining third-party image hotlink, previously missed when the other logos were localized. - Added explicit
width/heightto the nav logo (themeConfig.logo), the home hero image (index.mdfrontmatter), the sponsor card image, and the GitHub avatar — closes the Lighthouseunsized-imagesaudit and drops CLS to 0. - Added
loading="lazy"to all below-the-fold images (sponsor logos, "Powered By" logos, author avatar), andfetchpriority="high"plus a homepage-scoped<link rel="preload" as="image">on the hero image (the LCP candidate). - Requested a downsized GitHub avatar via
?s=96instead of the full-resolution image for a 48px display. - Converted the Google Fonts
<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. - Added
FAQPageJSON-LD structured data toreference/faq.mdfor FAQ rich results and answer-engine extraction. - Added
docs/public/llms.txt(per the emergingllms.txtconvention) summarizing the project and linking key docs pages for AI answer engines/crawlers. - Known, unaddressed Lighthouse findings:
uses-long-cache-ttl(GitHub Pages doesn't support customCache-Controlheaders) andunused-javascriptongtag.js(inherent to Google Analytics; already the lighter alternative to a full GTM container).
- Re-encoded
2.6.0 #
Added #
FlutterCrispChat.openHelpdesk()— opens the Crisp Helpdesk/FAQ search screen directly on all platforms (closes #158). On Android, callsCrisp.searchHelpdesk()then startsChatActivity. On iOS, callsCrispSDK.searchHelpdesk()then presentsChatViewController. On Web and desktop, pushes$crisp.push(["do", "helpdesk:search"])via the Crisp Web Chat SDK.FlutterCrispChat.openHelpdeskArticle()— opens a specific helpdesk article bylocaleandslug, with optionaltitleandcategory, on all platforms. Native SDK on Android/iOS;$crisp.push(["do", "helpdesk:article:open", [...]])on Web and desktop.
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 500 ms startup delay before polling and suppressed the transient initialisation error.
Security #
- Fixed high-severity esbuild RCE vulnerability (GHSA-gv7w-rqvm-qjhr) in
docsrc/dev tooling — bumped esbuild override from^0.25.0to^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. - docsrc PageSpeed / SEO improvements:
- Replaced render-blocking CSS
@importfor Google Fonts with<link rel="stylesheet">+<link rel="preconnect">in the VitePressheadconfig. - Added missing
twitter:card,twitter:site,twitter:title,twitter:description, andtwitter:imagemeta tags to all pages. - Added
og:image:width,og:image:height, andog:image:altto all pages. - Added
<link rel="canonical">to all pages. - Added JSON-LD
SoftwareApplicationstructured data to all pages. - Replaced Bing-hotlinked Flutter and Firebase logos with locally-hosted copies (
/graphics/flutter-logo.png,/graphics/firebase-logo.png,/graphics/crisp-logo.png) to eliminate third-party image dependencies and CLS. - Downloaded hero image from external CDN (
digitiz.fr) to/graphics/crisp-hero.jpg— served from same origin. - Added explicit
width/heightattributes to all "Powered By" images to eliminate Cumulative Layout Shift (CLS). - Removed invalid
altattribute from<link rel="icon">tag. - Added
preconnecthints for Google Fonts, gstatic, and Google Tag Manager. - Added Helpdesk / FAQ documentation page.
- Replaced render-blocking CSS
2.5.0 #
Added #
- Web support via the official Crisp Web Chat SDK (
$crisp/client.crisp.chat). - Desktop support for macOS, Windows, and Linux using
desktop_webview_window, with browser fallback when WebView is unavailable. FlutterCrispChat.markMessagesAsRead()— RESTPATCHto clearunread.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).- Optional iOS video/audio calls (build-time opt-in, not a runtime
CrispConfigflag):- CocoaPods:
$CrispChatWebRTC = trueinios/Podfile→ linksCrisp/CrispWebRTCinstead ofCrisp/Crisp(~10 MB larger). - SPM:
CRISP_CHAT_WEBRTC=truebeforeflutter build ios(or Xcode scheme env var);Package.swiftselectsCrispWebRTCautomatically. - Android native video is not supported yet (upstream #181); Web/desktop use the web chatbox when enabled in the Crisp dashboard.
- CocoaPods:
- Documentation: Supported platforms guide and platform API matrix; Crisp dashboard domain lock guidance (#148); iOS unread-count limitation and verification (
docs/unread-count-verification.md).
Changed #
- Minimum Dart SDK 3.5.0 and Flutter 3.24.0 (required by desktop WebView dependency).
openChatboxFromNotificationandsetOnNotificationTappedCallbackare no-ops on Web/desktop.- Example app extended with linux, macos, and windows runners for multi-platform testing.
- GitHub Actions CI workflow (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 introduced in
2.4.2that failed during Xcode package resolution withtarget 'crisp_chat' in package 'crisp_chat' is outside the package root. - Fixed SPM product name to
crisp-chat(required by Flutter's generatedFlutterGeneratedPluginSwiftPackage). - Fixed SPM target to be Swift-only; CocoaPods continues to use a thin Objective-C registration shim in
ios/Classes/.
Changed #
- Consolidated iOS Swift sources under
ios/crisp_chat/Sources/crisp_chat/for both SPM and CocoaPods. - Restored
ModalPresentationStyle.popoveron iOS (UIModalPresentationStyle.popover) withpopoverPresentationControllerconfiguration for iPad. - Fixed CocoaPods duplicate
FlutterCrispChatPlugininterface (removed redundant ObjC shim; Swift-only registration).
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 #
- Added
modalPresentationStyleparameter toCrispConfigfor iOS modal presentation style configuration. - Added
ModalPresentationStyleenum 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 #
- Added
CrispChatNotificationService— a customFirebaseMessagingServicethat handles Crisp push notifications without auto-openingChatActivity. This allows the app to open first, then programmatically open the chatbox. - Added
openChatboxFromNotification()method to open the Crisp chatbox from a notification intent after the app has launched. - Added
setOnNotificationTappedCallback()method to listen for Crisp notification taps while the app is in the background. - Added
firebase-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 viaonNewIntent. - Updated
README.mdwith two notification handling approaches: Option A (auto-open ChatActivity) and Option B (open app first, then chatbox).
Fixed #
- Fixed issue: #79 — Crisp notification tap directly opens ChatActivity instead of the app's main screen on terminated state.
2.4.3 #
2.4.2 #
Added #
- Added
getUnreadMessageCountto get unread message count, - Added Swift Package Manager support for iOS,
- Add validation for websiteID on iOS & Android SDK Level.
Changed #
- Upgraded Crisp Android SDK from
2.0.13to2.0.16. - Increased
minSdkVersionfrom21to23. - Updated
compileSdkVersionfrom35to36. - Upgraded Android Gradle Plugin (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 the minimum iOS deployment target from
9.0to13.0,
2.4.1 #
2.4.0 #
2.3.0 #
Added #
- New section in
README.mddetailing supported native Crisp SDK versions (Android & iOS). - More comprehensive usage examples in
README.md, including detailedCrispConfigsetup withUserandCompanyobjects. {@category}tags to Dart classes and methods for improved generated documentation.- Guidance on using
resetCrispChatSessionand clearer calling sequences inREADME.md. - Notes on testing push notifications for both iOS and Android in
README.md.
Changed #
- Update Crisp Android SDK
2.0.11to2.0.12. - Upgraded
compileSdkandtargetSdkto35 - Upgraded
AGPfrom8.1.1to8.3.0 - Upgraded
Gradlefrom8.2to8.4 - Enhanced error handling for
getSessionIdentifiermethod. - Improved documentation for public APIs for better clarity.
- Switched from generic
ExceptiontoArgumentErrorfor input validation with more descriptive messages.
Fixed #
- Fixed issue: #46 Android mailto: links in chat fail to launch email app on some devices (e.g., Xiaomi/Redmi, Android 12+)
2.2.5 #
- Update Crisp Android SDK
2.0.10to2.0.11. - Fixed Issue: #45: Push view up when the keyboard is open
- Added remote notification registration in application launch for iOS
2.2.4 #
- Update Crisp Android SDK
2.0.9to2.0.10. - Update Crisp iOS SDK
2.8.1to2.8.2. - Added
enableNotificationsflag inCrispConfigto enable/disable notifications for your site. - Improved JSON parsing and type safety for
enableNotificationsflag. - Added
setSessionSegmentsmethod to support clients using multiple segments with Crisp.
2.2.3 #
- Update Crisp Android SDK
2.0.8to2.0.9.
2.2.1 #
2.2.0 #
2.1.0 #
- Fixed #21 unable to open chat for specific domain email
isEmailandisUrlhelper validation fixed
2.0.8 #
- Update Crisp Android SDK
2.0.4to2.0.5. This fixed camera app crash on take photo feature on some devices - Update Crisp Android (Example App) Kotlin Version
1.6.10to1.7.10
2.0.7 #
- Added
getSessionIdentifierto get current session for Android only - Update Crisp Android SDK
2.0.3beta4to2.0.4 - Public APIs which were previously under
im.crisp.clientpackage are now underim.crisp.client.externalone!
2.0.6 #
- Update Crisp Android SDK
2.0.1beta2to2.0.3beta4
2.0.5 #
- Updated iOS deprecated code
- Change iOS code style
- Updated AGP from
7.4.0to8.6.0
2.0.4 #
- Added setSessionString method to set string session data.
- Added setSessionInt method to set integer session data.
Testing #
FlutterCrispChat.setSessionString(key: "a_string", value: "string_value");FlutterCrispChat.setSessionInt(key: "a_number", value: 12345);
2.0.3 #
Features #
- added video game suggestion,
- added new messages alerts,
- sync compose, text area, operator, scroll and wait for reply and new messages alerts.
Fixes #
- added missing markdown proguard rules,
- fixed #173 crash by asking permission on photo taking when embedding app declares using
CAMERApermission. If user denied it, next taps on this feature will show a dialog redirecting him to the app permission setting, - fixed attachment & loading dialogs color in Dark mode,
- fixed
SecurityExceptioncrashes on link touch due tofile://schemes or 3rd-party installed app set to open any link but not exporting their Activity... So added aUnable to open link. Check if an app, except you browser, is configured to open any link.toast when touched link cannot be opened, - fixed a markdown parsing crash when it is too complex (huge regex or obfuscated code) by simply not applying markdown on this case,
- fixed smileys horizontal alignment and ripple color on touch,
- fixed picker choice icon alpha when disabled,
- fixed a random audio player crash when released.
Dependencies #
- updated AGP from
8.2.2to8.3.2.
Installation update #
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/" />
2.0.2 #
- Added option to reset chat session
2.0.1 #
- Added session segment support
2.0.0 #
- updated UI to match Web & iOS chat boxes
- added Take photo support
- added Customization plugin support
- added HelpDesk public APIs:
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.
- added carousel message type support,
- added chat box behaviors:
- Operator privacy mode,
- MagicType,
- HelpDesk link & HelpDesk-only mode.
- added Request feedback,
- added
actionsupport forpickermessage type, - added required support for
field&pickermessage types, - added De-branding plugin support,
- added hardware keyboard support (
SHIFT+ENTERinserts a line break,ENTERonly sends the message), - updated localization.
- using
flexboxnow forpickermessage type, should fix choices list cutted, - using
glidenow for media loading, should fix NPE on GIF parsing, - synced
usermessages sent outside of the Android chat box, - fixed possibility to send empty messages/field value & trim sent ones,
- fixed
readstatus message duplicates, - fixed various not yet reported bugs & crashes.
- #4: Build fail due to crisp_chat dependency fixed.
1.0.0 #
- Added Markdown support
- updated android crisp version
1.0.16to1.0.18 - Updated dependencies:
com.google.android.material:materialfrom1.9.0to1.10.0,androidx.media3:media3-exoplayerfrom1.1.0to1.1.1.
- Update Android SDK from API
33to34.
0.0.4 #
- added user configuration option in crisp configuration
- updated android crisp version
1.0.14to1.0.16
0.0.3 #
- change readme file
0.0.2 #
- crisp chat add for native platform
- fixed iOS dependency not found
- fixed calling method
0.0.1 #
- crisp Chat add for native platform