suiss/uim · Block

Chat Conversations

A messages screen with a conversation list that opens into a chat thread, with swipe to delete.

Chat Conversations is an open-source mobile screen from suiss/uim for React Native and Expo, with SwiftUI and Jetpack Compose versions built from the same design tokens. The @esuiss/uim CLI copies its source into your project, so you own the code.

iOS
Chat Conversations on iOS in light mode

Composes Screen, Header, SwipeActions from the interactions, Avatar, Message, Bubble, MessageScroller, InputGroup, Button and BottomBar. Tapping a row opens the thread with a back button, video call and details actions, and a composer. Sending a message shows a typing indicator followed by a sample reply. Swiping a row reveals a Delete action.

Installation

$ pnpm dlx @esuiss/uim@latest add chat-conversations

The CLI also adds what it builds on: Avatar, Bottom Bar, Bubble, Button, Header, Icon, Input Group, Message, Message Scroller, Screen, Swipe Actions, Text.

Manual

  1. Install the dependencies:
npx expo install phosphor-react-native react-native-reanimated react-native-svg react-native-worklets
  1. Add the pieces it builds on: Avatar, Bottom Bar, Bubble, Button, Header, Icon, Input Group, Message, Message Scroller, Screen, Swipe Actions, Text.

  2. Copy the source into components/blocks/chat-conversations.tsx:

uniwind/components/blocks/chat-conversations.tsx
import {
  ArrowUpIcon,
  InfoIcon,
  NotePencilIcon,
  PlusIcon,
  TrashIcon,
  VideoCameraIcon,
} from "phosphor-react-native"
import * as React from "react"
import { Pressable, View } from "react-native"
import {
  cancelAnimation,
  Easing,
  FadeInDown,
  ReduceMotion,
  useAnimatedStyle,
  1. Update the import paths to match your project.

Usage

import { ChatConversations } from "@/components/blocks/chat-conversations"
<ChatConversations />

Replace THREADS and REPLIES with your conversations and drop the canned replies. Wire onSend, onNewMessage, onAttach, onVideoCall, onDetails and onDelete to your messaging backend.