A Flutter plugin for Crisp live chat on Android, iOS, Web, and desktop (macOS, Windows, Linux).
For more info visit this site: Flutter Crisp Chat
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
What's Changed
- release/v2.6.0 by @alamin-karno in #165
- fix: resolve Dependabot security alerts in docsrc build toolchain by @alamin-karno in #166
- docs: update CLAUDE.md version number and document helpdesk methods by @alamin-karno in #168
- fix: resolve remaining Dependabot vite/esbuild alerts in docsrc by @alamin-karno in #167
- fix: upgrade Crisp Android SDK from 2.0.20 to 2.0.23 by @alamin-karno in #170
- docs: clarify docs/ vs docsrc/ and link unread-workaround scripts in CLAUDE.md by @alamin-karno in #171
- feat: add FlutterCrispChat.onCrispEvent native SDK event stream by @alamin-karno in #172
- fix: add missing FlutterFramework SPM dependency to Package.swift by @alamin-karno in #173
- fix(iOS): open chatbox after app becomes active on notification tap by @drorblum45 in #174
- fix(iOS): open chatbox after app becomes active on notification tap by @alamin-karno in #175
- Release 2.7.0: docsrc PageSpeed/SEO/AEO fixes + version bump by @alamin-karno in #176
New Contributors
- @drorblum45 made their first contribution in #174
Full Changelog: v2.6.0...v2.7.0