Skip to content

Supported platforms

crisp_chat supports the following Flutter targets:

PlatformIntegrationNotes
AndroidOfficial Crisp Android SDK (method channel)Push notifications, native chat UI
iOSOfficial Crisp iOS SDK (method channel)Push notifications, modal presentation styles; optional video via CrispWebRTC (setup)
WebOfficial Crisp Web Chat SDK ($crisp via JS)Same Dart API; no mobile push helpers
macOSCrisp Web SDK in a desktop WebView windowRequires WebKit (system)
WindowsWebView2 window, or browser fallbackInstall WebView2 Runtime for embedded chat
LinuxWebKitGTK WebView window, or browser fallbackInstall libwebkit2gtk-4.1-dev (or 4.0) for embedded chat

API availability by platform

APIMobileWebDesktop
openCrispChatYesYesYes (WebView or browser)
resetCrispChatSessionYesYesYes (WebView only)
setSessionString / setSessionIntYesYesYes (WebView only)
setSessionSegmentsYesYesYes (WebView only)
pushSessionEventYesYesYes (WebView only)
getSessionIdentifierYesYesYes (WebView only)
getUnreadMessageCountYesYes*Yes*
markMessagesAsReadYesYes*Yes*
openChatboxFromNotificationAndroid (primarily)No-op (false)No-op (false)
setOnNotificationTappedCallbackAndroidNo-opNo-op
CrispConfig.modalPresentationStyleiOS onlyIgnoredIgnored
CrispConfig.enableNotificationsAndroid/iOS nativeIgnoredIgnored
isVideoCallsSupported()iOS (opt-in WebRTC build)No (upstream)Yes (web widget)

* REST helpers need a session id from getSessionIdentifier(). Do not embed Crisp REST API secrets in client-side web builds; use a backend proxy in production.

Video and audio calls

PlatformNative video/audio callsHow to enable
iOSYes (opt-in)CocoaPods: $CrispChatWebRTC = true in ios/Podfile. SPM: CRISP_CHAT_WEBRTC=true flutter build ios. Adds ~10 MB. See Platform setup — Enable video calls.
AndroidNot yetCrisp Android SDK #181 — no WebRTC variant exists today.
WebVia web chatboxEnable in Crisp dashboard; browser WebRTC handles calls.
DesktopVia web chatboxSame as Web when using embedded WebView.

Use FlutterCrispChat.isVideoCallsSupported() to check whether the current build supports calls (iOS WebRTC variant, or Web/desktop).

Desktop setup

macOS sandbox (required for embedded chat)

If your app uses the App Sandbox, enable Outgoing Connections (Client) so the WebView can load https://client.crisp.chat/l.js:

xml
<key>com.apple.security.network.client</key>
<true/>

Add this to macos/Runner/DebugProfile.entitlements and Release.entitlements. Without it, the chat window stays blank.

The plugin loads embed HTML from a temporary file:// page (not data:), because WKWebView blocks external scripts on data: URLs.

Example app (desktop_webview_window)

If you use embedded chat on desktop, add this to your app main (see the example app):

dart
import 'package:desktop_webview_window/desktop_webview_window.dart';

Future<void> main(List<String> args) async {
  WidgetsFlutterBinding.ensureInitialized();
  if (runWebViewTitleBarWidget(args)) {
    return;
  }
  runApp(const MyApp());
}

Linux system packages

bash
sudo apt install libwebkit2gtk-4.1-dev

Run the example

bash
cd example
flutter pub get

# Web
flutter run -d chrome --dart-define=websiteId=YOUR_WEBSITE_ID

# Desktop (after setup in this guide)
flutter run -d macos --dart-define=websiteId=YOUR_WEBSITE_ID
flutter run -d windows --dart-define=websiteId=YOUR_WEBSITE_ID
flutter run -d linux --dart-define=websiteId=YOUR_WEBSITE_ID

# Mobile (requires Firebase config files — see Contributing)
flutter run --dart-define-from-file=lib/config.json

Web setup

No extra native setup. The plugin loads https://client.crisp.chat/l.js when you call openCrispChat.

If you use a strict Content-Security-Policy, allow scripts and connections to https://client.crisp.chat and https://*.crisp.chat.

Crisp dashboard: domain lock

Lock the chatbox to website domain (and subdomains) is under SettingsWebsite SettingsChatbox & Email SettingsChatbox Security. Behavior by platform:

  • Android / iOS — disable domain lock (native SDK has no browser origin).
  • Web — can stay enabled if your app is served from an allowed domain or subdomain.
  • Desktop — disable domain lock (embedded WebView uses file://; browser fallback opens app.crisp.chat).

Full details: Configuration — Chatbox Security.

Minimum versions

  • Dart SDK: 3.5.0+
  • Flutter: 3.24.0+
  • Android: API 23+ (unchanged)
  • iOS: 13.0+ (unchanged)

Next Steps

  • Quick Start — Open your first chat in 5 minutes
  • Configuration — Customize CrispConfig with user details, tokens, and segments