Skip to main content

Installation

📋 Requirements​

React NativeReactiOSAndroidExpoTypeScript
>= 0.82.0>= 19>= 15.1API 24+ (7.0)SDK 55+>= 5.0 (optional)

The floor comes from react-native-gesture-handler 3, which the library is built on (3.0+ is required; it supports React Native 0.82 and newer). The example app runs Expo SDK 58 with React Native 0.88.


📦 Installation​

Expo Projects​

npx expo install @kesha-antonov/react-native-chat react-native-reanimated react-native-gesture-handler react-native-safe-area-context react-native-keyboard-controller

Bare React Native Projects​

Three steps

1. Install the packages. Reanimated 4 also needs react-native-worklets; leave it out on Reanimated 3:

yarn add @kesha-antonov/react-native-chat react-native-reanimated react-native-worklets react-native-gesture-handler react-native-safe-area-context react-native-keyboard-controller
npm install --save @kesha-antonov/react-native-chat react-native-reanimated react-native-worklets react-native-gesture-handler react-native-safe-area-context react-native-keyboard-controller

2. Add the worklets Babel plugin as the last entry in babel.config.js - react-native-worklets/plugin on Reanimated 4, react-native-reanimated/plugin on Reanimated 3 - following the react-native-reanimated installation guide.

3. Install iOS pods, then rebuild the native app (npx react-native run-ios / run-android) and restart Metro with --reset-cache. every peer above ships native code, so reloading the JS bundle alone is not enough:

npx pod-install

Optional peers​

Every feature below turns itself on when its package is installed and stays hidden when it is not - there is nothing to configure. getChatCapabilities() reports what the current install can do, e.g. to build UI that matches the chat's. In development, a feature that was asked for but cannot work (say audioRecording={{ isEnabled: true }} without expo-audio) logs one hint.

PackageFeaturegetChatCapabilities() key
expo-clipboard or @react-native-clipboard/clipboard"Copy" in the long-press menuclipboard
expo-hapticsHaptic ticks (long-press, swipe-to-reply, recording)haptics
expo-blurBlurred backdrop behind the menu and the round video recorderblur
react-native-svgLucide icons and vector ringssvg
expo-audioVoice playback and hold-to-record voice notesaudioPlayback, voiceRecording
react-native-audio-apiVoice waveforms, resume and trimwaveform
expo-videoInline video and round video notesvideoPlayback
react-native-vision-camera 5In-chat round video captureroundVideoCapture
expo-image-pickerSystem camera fallback for video notesvideoRecording
react-native-streamdownRich streaming markdownmarkdown
@lodev09/react-native-true-sheetNative attachment sheetnativeSheet
expo-media-libraryThe attachment menu's photo gridmediaLibrary
expo-image-pickerThe attachment menu's system photo picker and cameraimagePicker
expo-document-pickerThe attachment menu's File tabdocumentPicker
expo-locationThe attachment menu's Location tablocation
expo-sharingOpening a received file in the share sheet (otherwise Linking)sharing
@react-native-async-storage/async-storageEmoji recents and skin tones kept across launchespersistentEmojiRecents
expo-imageGallery thumbnails straight from the photo library-