RealTimeX
Sign inStart for free
RealTimeXMobile Package
Introduction5-minute overviewFeaturesHow the package worksGlossary
Requirements & dependenciesBackend credentialsInstallation step by stepTutorial — your first chat appProject config fileApp entry — index.jsQuick start — minimum working chatComplete ChatScreen example
Native configuration (iOS & Android)Firebase, APNs & backend setup
Navigation — embedding the chatSession, auth & Socket.IOPermissions & access controlAudio & video callingPush notificationsMentions viewRich-text messages (WebView editor)Total unread count
Customization — four waysDefault component fallback (important)Which slots are wiredCustomization examples (Case 1–4)UI feature flags & copy (ui)Chat info (group + DM)Style overrides (ui.styles)Render props (ChatProvider)Theme, fonts & appearance
ChatProvider props referenceconfigureChat options referenceHooks & storeCallbacks referenceAPI query paramsAll exports
Production integration pattern (Fieldr)Host app integration — providers, toasts, tab bars & navigationEnvironment variablesLocal package / monorepo (Metro)
TroubleshootingSetup checklistArchitectureDocumentation & file mapPackage development (maintainers)License
Mobile packageTroubleshooting & Reference

Architecture

High level, for bug reports and contributions. Not public API — it can change between versions.

code
1src/2├── index.ts                Public export surface — everything in this guide is re-exported here3├── config/                 configureChat runtime (runtime.config.ts), UI defaults/merge (ui.config.ts), env (chat.config.ts)4├── components/             ChatProvider, chat UI (bubbles, composer, header, sheets, RichMessageText, MentionRow)5├── screen/                 Chat screens (list, room, info, groups, search, mentions, notification settings)6├── navigation/             ChatNavigator (+ demo RootNavigator), route param types7├── store/                  Zustand stores (auth, chat, socket, theme) — internal8├── services/               REST client + query params, Socket.IO service, chat session, session end, error codes9├── hooks/                  Public hooks (useChat*, useConversations, useMessages, gates, theme)10├── domain/                 Pure logic (permissions, group roles, settings, composer, mentions, rich messages)11├── richEditor/             WebView rich-text editor (RN side) + generated editor HTML12├── calling/                Call store, signaling, VideoSDK screens, PiP, screen share, ring feedback13├── canvas/                 Canvas list / editor14├── notifications/          Push registration, handlers, router, banner, iOS VoIP15├── theme/                  Colors / accents, appearance, spacing, typography16└── types/                  Public types (chats, customization, settings)17 18rich-editor/                Lexical editor source → yarn build:rich-editor → src/richEditor/editorHtml.generated.ts19android-screenshare/        Autolinked Android library (permissions, FGS, CallPipModule, RtxNotifications, RtxCallPushReceiver)20RealtimexLiveChat.podspec   Autolinked iOS pod (CallPipModule, VideosdkRPK, RealtimexVoip) from ios/RealTimeXChat/21RealtimexLiveChatBroadcast.podspec  Screen-share extension pod from ios/RealtimexBroadcast/22host-setup/                 Native checklist, snippets, patches23react-native.config.js      Autolinking for the pod and the Android library

Non-negotiable invariants, if you're contributing:

  • Every slot falls back. An omitted ui.components slot or render prop must render the built-in — see Default component fallback.
  • Optional peers stay optional. Notifee, CallKeep and VoIP push are required inside try; never import them statically.
  • No secrets in the app. Calls and recordings only use short-lived, backend-signed tokens.
PreviousSetup checklistNextDocumentation & file map