
Security News
New React Server Components Vulnerabilities: DoS and Source Code Exposure
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.
react-native-parlant
Advanced tools
A React Native library for integrating Parlant AI agents into your React Native / Expo / React applications.
A React Native library for integrating Parlant AI agents
into your React Native, Expo, and React
applications.
🕹️ Snack playground
•
👀 Watch a demo
🚀 Need help building your agent? Connect with Adrian on X
Yarn:
yarn add react-native-parlant
Npm:
npm install --save react-native-parlant
Expo
npx expo install react-native-parlant
import { SafeAreaView, StyleSheet } from "react-native";
import { useChat } from "react-native-parlant";
import { GiftedChat, IMessage } from "react-native-gifted-chat";
export default function Example() {
const { messages, sendMessage, isTyping, isLoading } = useChat({
agentId: "agent-id",
api: "http://localhost:8800",
});
const onSend = (messages: IMessage[]) => {
const userMessage = messages[0]?.text || "";
sendMessage(userMessage);
};
return (
<SafeAreaView style={styles.container}>
<GiftedChat
messages={messages}
placeholder="Start typing..."
onSend={onSend}
isTyping={isTyping || isLoading}
user={{
_id: 1,
name: "You",
}}
alwaysShowSend
textInputProps={{
style: styles.textInput,
}}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "white",
},
textInput: {
flex: 1,
marginHorizontal: 10,
paddingVertical: 12,
paddingHorizontal: 16,
},
});
useChat(props: Props)The main hook for managing chat sessions with Parlant AI agents.
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
agentId | string | ✅ | - | The ID of the Parlant AI agent |
api | string | ✅ | http://localhost:8800 | The Parlant API endpoint |
initialMessages | IMessage[] | ❌ | [] | Initial messages to populate the chat |
moderation | string | ❌ | "auto" | Moderation setting for messages |
customerId | string | ❌ | "guest" | Unique identifier for the customer |
title | string | ❌ | "New Conversation" | Title for the chat session |
maxRetries | number | ❌ | 3 | Maximum retries for message fetching |
headers | Record<string, string> | ❌ | {} | Custom headers for API requests |
aiAvatar | string | ❌ | "" | Avatar URL for AI agent messages |
| Property | Type | Description |
|---|---|---|
messages | IMessage[] | Array of chat messages |
sendMessage | (message: string) => Promise<MessageEvent> | Function to send a message |
isLoading | boolean | Whether a message is being sent |
isTyping | boolean | Whether the agent is currently typing |
append(currentMessages, newMessages, inverted?)Utility function for appending messages to the chat.
currentMessages (TMessage[]) - Existing messages arraynewMessages (TMessage[]) - New messages to appendinverted (boolean, default: true) - Whether to prepend (true) or append (false) messagesIMessageinterface IMessage {
_id: string | number;
text: string;
createdAt: Date | number;
user: {
_id: string | number;
name?: string;
avatar?: string | number | renderFunction;
};
image?: string;
video?: string;
audio?: string;
system?: boolean;
sent?: boolean;
received?: boolean;
pending?: boolean;
quickReplies?: QuickReplies;
}
MessageEventinterface MessageEvent {
id: string;
source: string;
kind: "message" | "status";
offset: number;
creation_utc: string;
correlation_id: string;
data: {
message: string;
participant: {
id: string;
display_name: string;
};
flagged: boolean;
tags: string[];
status?: "typing" | "ready";
};
deleted: boolean;
}
Sessioninterface Session {
id: string;
agent_id: string;
customer_id: string;
creation_utc: string;
title: string;
mode: string;
consumption_offsets: {
client: number;
};
}
const { messages, sendMessage } = useChat({
agentId: "your-agent-id",
api: "https://your-api.com",
headers: {
Authorization: "Bearer your-token",
"X-Custom-Header": "custom-value",
},
});
const initialMessages: IMessage[] = [
{
_id: 1,
text: "Hello! How can I help you today?",
createdAt: new Date(),
user: {
_id: 2,
name: "AI Assistant",
avatar: "https://example.com/avatar.png",
},
},
];
const { messages, sendMessage } = useChat({
agentId: "your-agent-id",
api: "https://your-api.com",
initialMessages,
});
const handleSendMessage = async (text: string) => {
try {
await sendMessage(text);
} catch (error) {
if (error.message === "Failed to send message") {
// Handle send failure
console.error("Message failed to send");
} else if (error.message === "Failed to create session") {
// Handle session creation failure
console.error("Could not establish chat session");
}
}
};
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
For questions and support, please contact Adrian on X or open an issue on GitHub.
Ready to build AI agents that actually work?
⭐ Star this repo • 💬 Contact Adrian to Build It
Built with ❤️ by Adrian
Keywords: react-native, react, parlant, ai, agent, chat, conversation, typescript, react-native-parlant
FAQs
A React Native library for integrating Parlant AI agents into your React Native / Expo / React applications.
The npm package react-native-parlant receives a total of 50 weekly downloads. As such, react-native-parlant popularity was classified as not popular.
We found that react-native-parlant demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.