diff --git a/docusaurus/reactnative-docusaurus-dontent-docs.plugin.js b/docusaurus/reactnative-docusaurus-dontent-docs.plugin.js
index 024979badf..068d07b14f 100644
--- a/docusaurus/reactnative-docusaurus-dontent-docs.plugin.js
+++ b/docusaurus/reactnative-docusaurus-dontent-docs.plugin.js
@@ -3,23 +3,27 @@ module.exports = {
[
'@docusaurus/plugin-content-docs',
{
- lastVersion: 'current',
+ lastVersion: '5.x.x',
versions: {
current: {
+ label: 'v6',
+ path: 'v6',
+ },
+ '5.x.x': {
label: 'v5',
},
'4.x.x': {
label: 'v4',
path: 'v4',
- banner: 'unmaintained'
+ banner: 'unmaintained',
},
'3.x.x': {
label: 'v3',
path: 'v3',
- banner: 'unmaintained'
- }
- }
- }
- ]
- ]
-}
+ banner: 'unmaintained',
+ },
+ },
+ },
+ ],
+ ],
+};
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/libraries.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/libraries.mdx
new file mode 100644
index 0000000000..9b111349be
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/libraries.mdx
@@ -0,0 +1,34 @@
+---
+id: libraries
+sidebar_position: 2
+title: Libraries
+---
+
+### [React Navigation Docs](https://reactnavigation.org/docs/getting-started/)
+
+Our tutorials, guides and sample apps are all using React Navigation. We recommend using it in
+order to provide better support for all the use cases displayed.
+
+### [Gesture Handler Docs](https://docs.swmansion.com/react-native-gesture-handler/docs/)
+
+React Native Gesture Handler is used inside of our SDK on our channels and messages lists. Also used
+on our gallery, chat buttons, and reactions overlay.
+
+### [Markdown Lib Docs](https://github.com/andangrd/react-native-markdown-package)
+
+React Native Markdown Package is used to render markdown on our messages.
+
+### [Reanimated Lib Docs](https://docs.swmansion.com/react-native-reanimated/docs)
+
+React Native Reanimated is used to create our own beautiful custom animations in our gallery, attachment picker,
+message actions/reactions and loading indicators/skeletons.
+
+### [Day.js Docs](https://day.js.org/docs/en/installation/installation)
+
+We are using Day.js to manipulate, customize, parse and display dates through the app.
+You may want to use it when creating you own custom components.
+
+### [React Native SVG](https://github.com/react-native-svg/react-native-svg)
+
+React Native SVG is one of our peer dependencies. We use it to render icons and a couple of small indicators
+through the app.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/stream.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/stream.mdx
new file mode 100644
index 0000000000..0c95c0db5d
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/stream.mdx
@@ -0,0 +1,44 @@
+---
+id: stream-additional-resources
+sidebar_position: 1
+title: Stream Additional Resources
+---
+
+### [Demos](https://github.com/GetStream/react-native-samples)
+
+Stream Chat for React Native has multiple examples in the repository.
+In addition we have "cloned" some popular UIs to help demonstrate the flexibility of the SDK.
+
+### [JavaScript Client](https://getstream.io/chat/docs/javascript/?language=javascript)
+
+Stream Chat for React Native uses the Stream Chat JS client under the hood for most interactions with the backend.
+The client documentation covers a wide range of interactions that can be performed, not all of these are used within
+the Stream Chat for React Native SDK but can be integrated within your own app as required.
+
+### [API Tutorial](https://getstream.io/chat/get_started/)
+
+To help you get acquainted with the Stream Chat JS client we have an easy to follow tutorial on our website.
+This is a great primer for using the client directly and can also help you understand how the Stream Chat for
+React Native SDK if functioning under the hood.
+
+### [Stream Chat JS Basic Guide](https://github.com/GetStream/javascript-beginner-guide)
+
+> ### Internal Articles
+
+- [Stream Chat Glossary](https://getstream.zendesk.com/hc/en-us/articles/1500007212082-Stream-Chat-Glossary)
+
+- [Stream Chat Success Checklist](https://getstream.zendesk.com/hc/en-us/articles/1500007673721-Stream-Chat-Success-Checklist)
+
+- [React - Customizing Message Actions](https://getstream.zendesk.com/hc/en-us/articles/1500008025241--Customizing-Message-Actions-in-React-Chat)
+
+- [Stream Webhooks](https://getstream.zendesk.com/hc/en-us/articles/1500006478421-How-can-I-use-the-Stream-Webhook-to-send-customers-emails-based-on-Chat-events-)
+
+- [Stream Rate limits](https://getstream.zendesk.com/hc/en-us/articles/360056792833-Rate-limits-and-HTTP-429-Errors)
+
+- [Stream API → Client → Server](https://getstream.zendesk.com/hc/en-us/articles/360061669873-How-do-the-Chat-Client-Server-Stream-API-communicate-with-each-other-)
+
+- [Stream Chat Moderation](https://getstream.zendesk.com/hc/en-us/articles/360041455753)
+
+- [Stream User Roles and Permissions](https://getstream.zendesk.com/hc/en-us/articles/360053064274-User-Roles-and-Permission-Policies-Chat)
+
+- [Stream `queryChannels` filters](https://getstream.zendesk.com/hc/en-us/articles/360057461213-Filters-for-queryChannels-Chat)
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/technologies_and_techniques.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/technologies_and_techniques.mdx
new file mode 100644
index 0000000000..d5262bcf21
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/additional-resources/technologies_and_techniques.mdx
@@ -0,0 +1,21 @@
+---
+id: technologies-and-techniques
+sidebar_position: 3
+title: Technologies & Techniques
+---
+
+### [Typescript Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html)
+
+Our SDK is written in Typescript and heavily uses generics in order to allow users to use custom data and
+still have decent typing support.
+
+### [React Context](https://reactjs.org/docs/context.html)
+
+We rely on multiple contexts in our SDK to access components, functions, and data.
+Context also allows you as a developer to override our defaults for many of these throughout the SDK.
+Understanding how to draw upon values in context is important to customizing the SDK for your own needs.
+
+### [React Hooks](https://reactjs.org/docs/hooks-intro.html)
+
+We use/expose a bunch of our component's hooks so users can use them in order to replicate some behaviour/data
+parsing when creating custom components. Understanding how to work with hooks can come in very handy.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/channel_list.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/channel_list.png
new file mode 100644
index 0000000000..48f357ee70
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/channel_list.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_input.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_input.png
new file mode 100644
index 0000000000..6abb430200
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_input.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_list.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_list.png
new file mode 100644
index 0000000000..bf1468aeb0
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/message_list.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/summary.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/summary.png
new file mode 100644
index 0000000000..787c36a5ad
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/summary.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/thread.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/thread.png
new file mode 100644
index 0000000000..a9ba6b8ae4
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/hello-stream-chat/thread.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_1.png
new file mode 100644
index 0000000000..44917f352e
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_2.png
new file mode 100644
index 0000000000..a85680b3e9
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_3.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_3.png
new file mode 100644
index 0000000000..4cef17ecbe
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_after_3.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_1.png
new file mode 100644
index 0000000000..da0a3f7030
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_2.png
new file mode 100644
index 0000000000..2d8b3ad4d0
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_3.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_3.png
new file mode 100644
index 0000000000..65fca944e2
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/gallery_before_3.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pin_message_action.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pin_message_action.png
new file mode 100644
index 0000000000..bd2432a79b
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pin_message_action.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pinned_message.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pinned_message.png
new file mode 100644
index 0000000000..bb80f51969
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/pinned_message.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/scroll_view_warning.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/scroll_view_warning.png
new file mode 100644
index 0000000000..3343d98c8f
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/scroll_view_warning.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/slow_mode.gif b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/slow_mode.gif
new file mode 100644
index 0000000000..44bb7759a4
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/basics/upgrading-from-v3/slow_mode.gif differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/date_header.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/date_header.png
new file mode 100644
index 0000000000..c0c96f8f6a
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/date_header.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/name_date_header.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/name_date_header.png
new file mode 100644
index 0000000000..698cefdec6
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/name_date_header.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/new_date_header.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/new_date_header.png
new file mode 100644
index 0000000000..23c892550d
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/new_date_header.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/no_date_header.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/no_date_header.png
new file mode 100644
index 0000000000..c1d2655d55
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/custom-components/no_date_header.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/explicit_types.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/explicit_types.png
new file mode 100644
index 0000000000..86cddca96f
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/explicit_types.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/inference.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/inference.png
new file mode 100644
index 0000000000..0e39545284
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/customization/typescript/inference.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment-upload-preview.jpg b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment-upload-preview.jpg
new file mode 100644
index 0000000000..e413b986d2
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment-upload-preview.jpg differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment.jpg b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment.jpg
new file mode 100644
index 0000000000..241a7f67e3
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-attachment.jpg differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recorder-lock-button.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recorder-lock-button.png
new file mode 100644
index 0000000000..b25bb6ee9b
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recorder-lock-button.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-in-progress.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-in-progress.png
new file mode 100644
index 0000000000..74b0528128
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-in-progress.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-preview.jpg b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-preview.jpg
new file mode 100644
index 0000000000..8cdcbf458a
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/audio-recording-preview.jpg differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/start-recording.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/start-recording.png
new file mode 100644
index 0000000000..d0889fde51
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/audio-support/start-recording.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/blocking-users/blocked-users-list.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/blocking-users/blocked-users-list.png
new file mode 100644
index 0000000000..e58a48d243
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/blocking-users/blocked-users-list.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-channel-list/load_more_button.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-channel-list/load_more_button.png
new file mode 100644
index 0000000000..38b1c04a05
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-channel-list/load_more_button.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/message_actions.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/message_actions.png
new file mode 100644
index 0000000000..5629323e2c
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/message_actions.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/my_message_actions.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/my_message_actions.png
new file mode 100644
index 0000000000..b45cb0d218
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-actions/my_message_actions.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_1.png
new file mode 100644
index 0000000000..02737531f0
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_2.png
new file mode 100644
index 0000000000..977c1cb408
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-message-input/native_attachment_picker_step_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-1.png
new file mode 100644
index 0000000000..3b1f5b5271
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-2.png
new file mode 100644
index 0000000000..5ab05ebf3e
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-3.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-3.png
new file mode 100644
index 0000000000..0b8f992959
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-3.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-4.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-4.png
new file mode 100644
index 0000000000..1c1607ad86
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/custom-thread-list/custom-thread-list-step-4.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_desktop_guide.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_desktop_guide.png
new file mode 100644
index 0000000000..ee4ae95631
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_desktop_guide.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_stream_chat_react_native_banner.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_stream_chat_react_native_banner.png
new file mode 100644
index 0000000000..76193de190
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/debug-using-flipper-plugin/flipper_stream_chat_react_native_banner.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-info-url-types.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-info-url-types.png
new file mode 100644
index 0000000000..2f0ad2e275
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-info-url-types.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-signing-capabilitites.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-signing-capabilitites.png
new file mode 100644
index 0000000000..2dd6c0bf85
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/deeplinking/xcode-signing-capabilitites.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/chat-screen.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/chat-screen.png
new file mode 100644
index 0000000000..7448b91fde
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/chat-screen.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/detail-screen.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/detail-screen.png
new file mode 100644
index 0000000000..b4fe186670
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/live-location-sharing/detail-screen.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message-action.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message-action.png
new file mode 100644
index 0000000000..c33d3f1e1b
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message-action.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message.png
new file mode 100644
index 0000000000..cf80581799
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/bounced-message.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/moderation-dashboard.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/moderation-dashboard.png
new file mode 100644
index 0000000000..e522547097
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/moderation/moderation-dashboard.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/native-image-picker/options.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/native-image-picker/options.png
new file mode 100644
index 0000000000..4ffb6726ad
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/native-image-picker/options.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/performance/channel_settings.jpeg b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/performance/channel_settings.jpeg
new file mode 100644
index 0000000000..8dd27ccf42
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/performance/channel_settings.jpeg differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/chat_overview_page.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/chat_overview_page.png
new file mode 100644
index 0000000000..9e92437dbf
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/chat_overview_page.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/firebase_notifications_toggle.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/firebase_notifications_toggle.png
new file mode 100644
index 0000000000..c5670d0dc2
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/guides/push-notifications/v2/firebase_notifications_toggle.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/loading_indicator.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/loading_indicator.png
new file mode 100644
index 0000000000..3e7a36fd34
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/loading_indicator.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_1.png
new file mode 100644
index 0000000000..1a04d87bcb
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_2.png
new file mode 100644
index 0000000000..f24e82df4b
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel-list/visual_guide_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_1.png
new file mode 100644
index 0000000000..6ad712098e
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_2.png
new file mode 100644
index 0000000000..0dc993276c
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_3.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_3.png
new file mode 100644
index 0000000000..5ad7dbca4d
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_3.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_4.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_4.png
new file mode 100644
index 0000000000..8e75fa494b
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel/visual_guide_4.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger.png
new file mode 100644
index 0000000000..8b65929b46
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger_2.png
new file mode 100644
index 0000000000..4788875bbb
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/channel_preview_messenger_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_1.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_1.png
new file mode 100644
index 0000000000..4e34222f36
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_1.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_2.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_2.png
new file mode 100644
index 0000000000..18e38a95e0
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_2.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_3.png b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_3.png
new file mode 100644
index 0000000000..a38272ef27
Binary files /dev/null and b/docusaurus/reactnative_versioned_docs/version-5.x.x/assets/ui-components/overlay-provider/visual_guide_3.png differ
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/client.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/client.mdx
new file mode 100644
index 0000000000..68bc6254f7
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/client.mdx
@@ -0,0 +1,222 @@
+---
+id: client
+sidebar_position: 5
+title: Client
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+Stream Chat for React Native uses the [Stream Chat client](https://github.com/GetStream/stream-chat-js) to connect to and communicate with the Stream API.
+
+The full [JavaScript client docs](https://getstream.io/chat/docs/javascript/?language=javascript) should be referenced for detailed information on directly using the client.
+
+## Setup
+
+To interact with the Stream Chat API you must create a client instance and connect to the API, usually as an authenticated user.
+
+### Instantiation
+
+The Stream Chat client, `StreamChat` is a dependency of `stream-chat-react-native` and can be imported from `stream-chat`.
+To create a client instance you can call `getInstance` on the client and provide and API key.
+
+```ts
+import { StreamChat } from 'stream-chat';
+
+const client = StreamChat.getInstance('api_key');
+```
+
+:::caution
+
+**Usage of `StreamChat.getInstance()` available since stream-chat@2.12.0.**
+
+
+This new Singleton pattern allows you to instantiate a unique StreamChat client, i.e create a StreamChat instance and
+retrieve it wherever you need it on your app to perform API calls. After calling it once, any following
+ getInstance
+ call will return the initial StreamChat instance. This will prevent you from accidentally creating multiple
+StreamChat instances, opening multiple WebSockets, and driving up your concurrent connections unnecessarily.
+
+
+
+Stream Chat is backward compatible. Users can continue using new StreamChat() if desired.
+
+
+
+```ts
+const client = new StreamChat('api_key');
+```
+
+Calling new StreamChat() repeatedly will create new copies of the client and in turn new WebSocket connections when connectUser is called.
+If you are using new StreamChat() you need to be vigilant about your use to ensure you are not creating multiple WebSocket connections unnecessarily.
+
+:::
+
+### Connecting a User
+
+To connect a user a the `connectUser` function should be called and provided with the user object and `user_token`.
+The `user_token` is typically sent from your back end when a user is authenticated.
+
+```ts
+await client.connectUser(
+ {
+ id: 'testUser',
+ name: 'Test User',
+ },
+ 'user_token',
+);
+```
+
+It is recommended to not repeatedly call `connectUser` unnecessarily, multiple calls to `connectUser` will result in warnings, and attempting to call `connectUser` before disconnecting a current user will throw an Error.
+
+## UI Components
+
+The Stream Chat for React Native UI components handle most interactions with the client for you after connecting with an authenticated user.
+
+### Providing the Client to the UI
+
+To provide the client to the UI components you simply provide the client instance as the prop `client` to the `Chat` component.
+
+```tsx
+import { StreamChat } from 'stream-chat';
+import { Chat } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const Screen = () => {/** App components */};
+```
+
+The Stream Chat for React Native UI components then handle interacting with the client internally by accessing the client via [`context`](https://reactjs.org/docs/context.html).
+
+:::note
+
+If you are customizing certain components or functionality you may have to interact with the client as well.
+You can access the client provided to the `Chat` component internally via the `useChatContext`.
+
+
+
+```ts
+import { useChatContext } from 'stream-chat-react-native';
+
+const { client } = useChatContext();
+```
+
+:::
+
+### Using UI Functions
+
+The UI provides a number of functions that interact with the client while keeping the UI state in sync using `context`.
+The [contexts section](../contexts/attachment-picker-context.mdx) details what functions are accessible.
+When customizing your application you should ensure you are utilizing the correct functions to keep the UI state up to date.
+
+The `sendMessage` function for instance, provided by `useMessageInputContext`, is not the same as the `sendMessage` function found directly on a `channel` in the client.
+Therefore calling `channel.sendMessage(messageData)` will not result in a message optimistically showing in the UI, or a failed send state, instead the message will not show until it is returned by the server.
+
+:::caution
+
+You should not assume any function directly called on the client will result in a UI update.
+The UI state is managed internally by the components and `context`, most client interactions require an event returned by the server to update the UI.
+
+:::
+
+## Accessing the Client Instance
+
+There are multiple ways to access the client instance throughout your application.
+[As mentioned](#providing-the-client-to-the-ui) you can access the `client` via `useChatContext` when inside the `Chat` component.
+This works well if you can wrap your entire application in a single `Chat` component and have the `StreamChat` instance provided throughout your app via the internal `context`.
+But if you have multiple screens that contain `Chat` components where a client instance is necessary you will need to access the shared instance in other ways.
+
+You can store the client in a [`context`](https://reactjs.org/docs/context.html) you create yourself.
+Create your own custom class that provides it.
+Or using the Singleton structure you can call `getInstance` when required to always be returned the current instance if one exists, or create a new one otherwise.
+
+:::warning
+
+Do not create and connect multiple instances using `new StreamChat()`, this will result in multiple `StreamChat` instances and opening multiple WebSocket connections.
+
+:::
+
+## Direct Interaction
+
+There may be some direct interaction with the client that is required for your application.
+Referring to the [full documentation](https://getstream.io/chat/docs/javascript/?language=javascript) is suggested for detailed information on client functionality.
+Common interactions with the client used in conjunction with the Stream Chat for React Native components have been included for convenience.
+
+### Creating a Channel
+
+A channel must be initialized with either an `id` or a list of members for the channel.
+If you provide a list of members an `id` will be auto-generated on backend for the channel.
+
+:::note
+
+You can't add or remove members from channel created using a list of members.
+
+:::
+
+
+
+
+```ts
+/**
+ * Channel created using a channel id
+ */
+const channel = client.channel(channel_type, 'channel_id', {
+ name: 'My New Channel',
+});
+```
+
+
+
+
+```ts
+/**
+ * Channel created using a members list
+ */
+const channel = client.channel(channel_type, {
+ members: ['userOne', 'userTwo']
+ name: 'My New Channel',
+});
+```
+
+
+
+
+To create a channel on the server you must call `create` or `watch` on a new channel instance.
+`create` will create the channel while `watch` will both create the channel and subscribe the client to updates on the channel.
+
+
+
+
+```ts
+await channel.watch();
+```
+
+
+
+
+```ts
+await channel.create();
+```
+
+
+
+
+### Disconnecting a User
+
+To disconnect a user you can call `disconnect` on the client.
+
+```ts
+await client.disconnectUser();
+```
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/hello_stream_chat.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/hello_stream_chat.mdx
new file mode 100644
index 0000000000..59b53c2601
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/hello_stream_chat.mdx
@@ -0,0 +1,548 @@
+---
+id: hello_stream_chat
+sidebar_position: 2
+title: Hello Stream Chat
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+import channelList from '../assets/basics/hello-stream-chat/channel_list.png';
+import messageInput from '../assets/basics/hello-stream-chat/message_input.png';
+import messageList from '../assets/basics/hello-stream-chat/message_list.png';
+import summary from '../assets/basics/hello-stream-chat/summary.png';
+import thread from '../assets/basics/hello-stream-chat/thread.png';
+
+Adding feature rich chat to a React Native application can be quite challenging when starting from scratch.
+There are many considerations, states, and edge cases that need accounting for, styling, message grouping, read states, context menus, etc. all add to the complexity of the challenge.
+Stream Chat for React Native provides an easy to implement flexible solution.
+
+Stream Chat for React Native provides a way to add chat to an existing or new application with very little code.
+The library was built with flexibility and customization in mind, starting with the out of the box form and function one would expect from a chat app you can modify the UI and UX as desired.
+
+Before starting make sure you have installed `stream-chat-react-native` as directed in the [getting started](/chat/docs/sdk/reactnative) guide.
+
+## Creating a Chat Client
+
+Stream Chat for React Native uses [`stream-chat`](https://github.com/GetStream/stream-chat-js), Stream's JavaScript client, to interact with Stream's chat services.
+`stream-chat` is a dependency of Stream Chat for React Native so it is can be used once `stream-chat-react-native` is installed.
+
+To start, you can sign up for a [Free subscription](https://getstream.io/chat/pricing/) and then get your API key.
+
+```ts
+import { StreamChat } from 'stream-chat';
+
+const client = StreamChat.getInstance('api_key');
+```
+
+There are multiple ways to access the client throughout your application. You can store the client in a [`context`](https://reactjs.org/docs/context.html).
+Create your own class. Or using the Singleton structure you can call `getInstance` when required.
+
+## Connecting a User
+
+Tokens are used to authenticate a user.
+Typically, you send this token from your backend to the client when a user registers or logs in.
+See the [Tokens & Authentication](https://getstream.io/chat/docs/javascript/tokens_and_authentication/) documentation to learn more about creating tokens.
+You can use a [developer token](https://getstream.io/chat/docs/javascript/tokens_and_authentication/?language=javascript#developer-tokens) if desired, but for the purpose of this guide it will be assumed you have created and retrieved a `user_token`.
+
+To connect a user the `connectUser` function should be called and provided with the user object and `user_token`.
+Connecting a user could be done in the login flow or elsewhere in the application after the client is instantiated.
+
+```ts
+await client.connectUser(
+ {
+ id: 'jlahey',
+ name: 'Jim Lahey',
+ image: 'https://i.imgur.com/fR9Jz14.png',
+ },
+ 'user_token',
+);
+```
+
+It is recommended to not repeatedly call `connectUser` unnecessarily, multiple calls to `connectUser` will result in warnings, and attempting to call `connectUser` before disconnecting a current user will throw an Error.
+
+To disconnect a user you can call `disconnectUser` on the client.
+
+```ts
+await client.disconnectUser();
+```
+
+## Creating a Channel
+
+Channels are at the core of Stream Chat, they are where messages are contained, sent, and interacted with.
+Before delving into the UI components a channel is needed that can be displayed.
+Let’s start by initializing one.
+
+A [channel type](https://getstream.io/chat/docs/javascript/creating_channels#channel-data) is required for creating a channel and controls the settings for a given channel.
+There are 5 default types of channels.
+
+- `commerce`
+- `gaming`
+- `livestream`
+- `messaging`
+- `team`
+
+These five options provide you with sensible defaults for the named use cases.
+You can also define custom channel types if Stream Chat defaults don’t work for your use case.
+
+A channel must be initialized with either an `id` or a list of members for the channel.
+If you provide a list of members an `id` will be auto-generated on backend for the channel.
+
+:::note
+
+You can't add or remove members from channel created using a list of members.
+
+:::
+
+You can also add additional custom data to a channel.
+You can add as many custom fields as you desire as long as the total size of the custom fields object is _less than 5KB_.
+
+For the purpose of this guide you should create a `channel` as you see fit utilizing either a members list that includes your user's `id`, or a channel `id`.
+**This can be done once, then the code removed** as this guide will not be covering on the fly channel creation.
+
+
+
+
+```ts
+/**
+ * Channel created using a channel id
+ */
+const channel = client.channel('messaging', 'the_park', {
+ name: 'The Park',
+});
+```
+
+
+
+
+```ts
+/**
+ * Channel created using a members list
+ */
+const channel = client.channel('messaging', {
+ members: ['jlahey', 'rlafleur'],
+ name: 'The Park',
+});
+```
+
+
+
+
+To create this channel on the server you must call `create` on the new channel instance.
+
+```ts
+await channel.create();
+```
+
+:::note
+
+For on the fly channel creation you would instead call the `watch` function on the channel as this both creates the channel and subscribes the client to channel updates.
+
+:::
+
+## Configuring UI Components
+
+Now that you have a `client` instance, a user set, and a channel created on the server you can setup your project to use the UI components.
+
+All major `stream-chat-react-native` components rely on `contexts` to function properly.
+The UI and functionality are heavily controlled by a number of components that contain [`Providers`](https://reactjs.org/docs/context.html#contextprovider) to give access to these `contexts`.
+
+### Overlay Provider
+
+The `OverlayProvider` is the highest level of the Stream Chat components.
+The `OverlayProvider` allows users to interact with messages on long press above the underlying views, use the full screen image viewer, and use the `AttachmentPicker` as a keyboard-esk view.
+
+The `OverlayProvider` can be used with no props provided but there are a plethora of props for customizing the components in the overlay.
+
+For additional information on the `OverlayProvider` check the [OverlayProvider docs](../core-components/overlay-provider.mdx) for detailed usage instructions, including how to properly use the `OverlyProvider` with [React Navigation](https://reactnavigation.org/).
+
+```tsx
+import { OverlayProvider } from 'stream-chat-react-native';
+
+export const Screen = () => {/** App components */};
+```
+
+### Chat
+
+`Chat` is the next level down of context component from `OverlyProvider` that is required for `stream-chat-react-native` to function as designed.
+You can choose to wrap your entire application in `Chat` similar to what is required for the `OverlayProvider` or you can implement `Chat` at the screen level.
+`Chat` has one required prop, `client`, which is the instance of `StreamChat` [you created](#creating-a-chat-client).
+
+For additional information on the `Chat` component check the [Chat component docs](../core-components/chat.mdx) for detailed usage instructions, including how to provide theming and translations to the app.
+
+
+
+
+```tsx {8-10}
+import { StreamChat } from 'stream-chat';
+import { Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => (
+
+ {/** App components */}
+
+);
+```
+
+
+
+
+```tsx
+import { StreamChat } from 'stream-chat';
+import { Chat } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const Screen = () => {/** App components */};
+```
+
+```tsx {6}
+import { OverlayProvider } from 'stream-chat-react-native';
+import { Screen } from './Screen';
+
+export const App = () => (
+
+
+
+);
+```
+
+
+
+
+## Channel List
+
+
+
+
+Stream Chat for React Native provides a `ChannelList` component out of the box for displaying a list of channels.
+`ChannelList` can be used with no props and will return all of the channels the set user has access to.
+To functionally use the `ChannelList` an `onSelect` prop should be provided.
+The `onSelect` function is called with the selected `Channel` instance and can then be used to react to the user interaction, for example to store the `Channel` in state and navigate to the appropriate channel screen.
+
+For additional information on the `ChannelList` component check the [ChannelList component docs](../core-components/channel-list.mdx), these include instructions on how to filter and sort the `ChannelList`.
+
+The `ChannelList` should be implemented inside of the UI components [previously configured](#configuring-ui-components) to provide the appropriate `contexts`.
+For the purpose of this guide the example implementation will continue to be given in a single component with the assumption that the client has already been instantiated, a user connected, and a channel the user has access to exists.
+
+
+
+
+
+```tsx {9}
+import { StreamChat } from 'stream-chat';
+import { ChannelList, Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => (
+
+
+
+
+
+);
+```
+
+These three components in conjunction will provide a [`FlatList`](https://reactnative.dev/docs/flatlist) of all channels available to the connected user.
+
+## Channel
+
+When creating a chat screen it is required that the `Channel` component wrap the `stream-chat-react-native` components being used.
+`Channel` provides multiple `contexts` to the enclosed components and allows for modification and replacement of many of the components.
+Channel is the major entry point for modifying the look and feel of your chat application.
+
+For additional information on the `Channel` component, how to modify various features, adjusting for keyboard offsets, and more, check the [Channel component docs.](../core-components/channel.mdx)
+
+The `Channel` component does not require any props, but will not function as desired without the `channel` prop being provided.
+The `channel` prop expects a `StreamChat` `Channel` instance.
+This can be created [as you did previously](#creating-a-channel), pulled directly from the `client.activeChannels`, or conveniently stored when a channel is selected from the `ChannelList`.
+
+```tsx {8,13-19}
+import React, { useState } from 'react';
+import { Channel as ChannelType, StreamChat } from 'stream-chat';
+import { ChannelList, Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => {
+ const [channel, setChannel] = useState();
+
+ return (
+
+
+ {channel ? {/** App components */} : }
+
+
+ );
+};
+```
+
+### Message List
+
+
+
+
+The `Channel` component on it's own will not provide any UI.
+For this additional components are required, most notably the `MessageList` component.
+`MessageList` has no required props, and when used in concert with the `Channel` component should function properly out of the box.
+
+For additional information on the `MessageList` component, how to pass props to the underlying [`FlatList`](https://reactnative.dev/docs/flatlist), or use the `MessageList` for threads, check the [MessageList component docs.](../ui-components/message-list.mdx)
+
+
+
+A chat app needs to be able to send messages, and for this Stream Chat for React Native provides a `MessageInput` component.
+Similar to the `MessageList` component `MessageInput` has no required props.
+Adding it to the app is as simple as rendering it below the `MessageList`.
+
+Be sure to set the `keyboardVerticalOffset` on `Channel` to the appropriate height based off any header spacing.
+As there is currently no header the `keyboardVerticalOffset` can be set to `0`.
+
+For additional information on the `MessageInput` component, how to modify it using `context`, or designate it for thread use via the `threadList` prop, check the [MessageInput component docs.](../ui-components/message-input.mdx)
+
+
+
+
+
+```tsx {14,16}
+import React, { useState } from 'react';
+import { Channel as ChannelType, StreamChat } from 'stream-chat';
+import { ChannelList, Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => {
+ const [channel, setChannel] = useState();
+
+ return (
+
+
+ {channel ? (
+
+
+
+
+ ) : (
+
+ )}
+
+
+ );
+};
+```
+
+This small code snippet is enough to render a list of channels and swap them out for a functional and feature rich message list and input when one is selected.
+
+### Thread
+
+
+
+
+There is one more high level component that Stream Chat for React Native provides out of the box, and that is `Thread`.
+Stream Chat supports threaded messages, and the `MessageList` supplies a UI for threads out of the box.
+But as a thread on a mobile messaging app generally exists in a separate screen it is up to you to handle thread selection and subsequent navigation in your implementation.
+`Thread` has no required props as it relies heavily on `context` to function.
+The simple code snippet can be extended to include `Thread` and keep track of a `thread` state similarly to `channel` by utilizing the `onThreadSelect` prop on the `MessageList`.
+The code snippet now has a fully functional `ChannelList`, `MessageList`, and `threadList`, although currently it provides no way to _back_ out of the sudo-navigation.
+
+For additional information on the `Thread` component, such as how to use `onThreadDismount` to manage your `thread` state, check the [Thread component docs.](../ui-components/thread.mdx)
+
+
+
+
+
+```tsx {9,15-24}
+import React, { useState } from 'react';
+import { Channel as ChannelType, StreamChat } from 'stream-chat';
+import { ChannelList, Chat, MessageType, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => {
+ const [channel, setChannel] = useState();
+ const [thread, setThread] = useState();
+
+ return (
+
+
+ {channel ? (
+
+ {thread ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
+
+ ) : (
+
+ )}
+
+
+ );
+};
+```
+
+## Summary
+
+- You need a `client` that is an instance of `StreamChat` to provide to the UI components so they function correctly.
+
+- You need to connect a user via the `connectUser` call to interact with the backend properly.
+ To do this you need to create tokens as per the [Tokens & Authentication](https://getstream.io/chat/docs/javascript/tokens_and_authentication/) docs.
+
+- You need to surround your app with the `OverlayProvider` for the UI to function properly, and your app or chat screen with the `Chat` component to provide data to the UI components.
+
+- `ChannelList` provides access to the list of available channels in the UI, and using props, can be queried, filtered, and sorted as desired.
+ `ChannelList` also provides convenient functionality for implementing navigation to a selected `Channel`.
+
+- The `Channel` component is the functional wrapper of the `MessageList`, `MessageInput`, and `Thread` components.
+ It is the access point for the majority of the customization of the SDK, and controls much of the functionality.
+
+### Hello Stream Chat
+
+
+
+
+Putting everything covered together into a single functional component most of the Stream Chat for React Native SDK can be tested with a few additional setup.
+
+The final sample code:
+
+- Adds a `useEffect` to connect the user on mount and render the UI when ready.
+- Adds a `back` button for sudo-navigation by resetting the states of `thread` and `channel` when appropriate.
+- Adds a `View` around the `Chat` component with style `flex: 1` to allow `Chat` to adjust for the `back` button height, and an empty `Thread` component to layout properly.
+- Adjusts the `topInset` and `keyboardVerticalOffset` to account for the `back` button height.
+
+These additions result in a small but functional chat sample app.
+
+
+
+
+
+```tsx
+import React, { useEffect, useState } from 'react';
+import { View, TouchableOpacity, Text } from 'react-native';
+import { Channel as ChannelType, StreamChat } from 'stream-chat';
+import {
+ Channel,
+ ChannelList,
+ Chat,
+ MessageInput,
+ MessageList,
+ MessageType,
+ OverlayProvider,
+ Thread,
+} from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+
+export const App = () => {
+ const [channel, setChannel] = useState();
+ const [clientReady, setClientReady] = useState(false);
+ const [thread, setThread] = useState();
+
+ useEffect(() => {
+ const setupClient = async () => {
+ try {
+ await client.connectUser(
+ {
+ id: 'jlahey',
+ name: 'Jim Lahey',
+ image: 'https://i.imgur.com/fR9Jz14.png',
+ },
+ 'user_token',
+ );
+ setClientReady(true);
+ } catch (e) {
+ console.log(e);
+ }
+ };
+
+ setupClient();
+ }, []);
+
+ const onBackPress = () => {
+ if (thread) {
+ setThread(undefined);
+ } else if (channel) {
+ setChannel(undefined);
+ }
+ };
+
+ if (!clientReady) return null;
+
+ return (
+
+
+ {channel && Back}
+
+
+
+ {channel ? (
+
+ {thread ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
+
+ ) : (
+
+ )}
+
+
+
+ );
+};
+```
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/installation.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/installation.mdx
new file mode 100644
index 0000000000..3fab594bdd
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/installation.mdx
@@ -0,0 +1,350 @@
+---
+id: installation
+title: Installation
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+Installation and usage of our Stream Chat React Native SDK is simple and involves the following steps:
+
+### Prerequisites
+
+First things first, make sure you have set up the development environment for React Native. You can find the official guide [here](https://reactnative.dev/docs/environment-setup).
+
+For Expo, you can follow [this guide](https://docs.expo.dev/get-started/installation/).
+
+### Add Stream's Chat SDK and its peer dependencies
+
+In order to install the Stream Chat React Native SDK, run the following command in your terminal of choice:
+
+
+
+
+```bash title="Terminal"
+yarn add stream-chat-react-native
+```
+
+
+
+
+```bash title="Terminal"
+npx expo install stream-chat-expo
+```
+
+
+
+
+
+Stream Chat React Native SDK requires installing some peer dependencies to provide you with a great chat experience. You can run the following command to install them:
+
+
+
+
+```bash title="Terminal"
+yarn add @react-native-community/netinfo @stream-io/flat-list-mvcp react-native-fs react-native-gesture-handler react-native-image-resizer react-native-reanimated react-native-svg
+```
+
+
+
+
+
+```bash title="Terminal"
+npx expo install @stream-io/flat-list-mvcp @react-native-community/netinfo expo-file-system expo-image-manipulator react-native-gesture-handler react-native-reanimated react-native-svg
+```
+
+
+
+
+So what did we install precisely?
+
+
+
+
+- [`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo) for accessing device gallery.
+- [`@stream-io/flat-list-mvcp`](https://github.com/GetStream/flat-list-mvcp) for bi-directional FlatList support.
+- [`react-native-fs`](https://github.com/itinance/react-native-fs) to perform file operations like save, delete, etc.
+- [`react-native-gesture-handler`](https://github.com/software-mansion/react-native-gesture-handler) to handle gestures within the SDK.
+- [`react-native-image-resizer`](https://github.com/bamlab/react-native-image-resizer) to compress image uploads.
+- [`react-native-reanimated`](https://github.com/software-mansion/react-native-reanimated) to compress image uploads.
+- [`react-native-svg`](https://github.com/react-native-svg/react-native-svg) for SVG support.
+
+
+
+
+- [`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo) for accessing device gallery.
+- [`@stream-io/flat-list-mvcp`](https://github.com/GetStream/flat-list-mvcp) for bi-directional FlatList support.
+- [`expo-file-system`](https://docs.expo.dev/versions/latest/sdk/filesystem/) to perform file operations like save, delete, etc.
+- [`react-native-gesture-handler`](https://github.com/software-mansion/react-native-gesture-handler) to handle gestures within the SDK.
+- [`expo-image-manipulator`](https://docs.expo.dev/versions/latest/sdk/imagemanipulator/) to compress image uploads.
+- [`react-native-reanimated`](https://github.com/software-mansion/react-native-reanimated) to compress image uploads.
+- [`react-native-svg`](https://docs.expo.dev/versions/latest/sdk/svg/) for SVG support.
+
+
+
+
+### Optional Dependencies
+
+:::note
+Starting from `v5.35.0` the `react-native-image-crop-picker` and `expo-image-picker` is no longer a required dependency. You can use it if you want to capture images to attach them in the message else feel free to uninstall it.
+:::
+
+There are a few optional dependencies that can be added to have more features within the SDK.
+
+
+
+
+- [`@react-native-camera-roll/camera-roll`](https://github.com/react-native-cameraroll/react-native-cameraroll) for accessing device gallery.
+- [`react-native-image-crop-picker`](https://github.com/ivpusic/react-native-image-crop-picker) to capture images to attach them in the message.
+- [`react-native-video`](https://github.com/react-native-video/react-native-video) for Video and Audio playback support.
+- [`react-native-audio-recorder-player`](https://github.com/hyochan/react-native-audio-recorder-player) for Audio recording and async audio messages support.
+- [`react-native-share`](https://github.com/react-native-share/react-native-share) for Attachment sharing support.
+- [`react-native-haptic-feedback`](https://github.com/junina-de/react-native-haptic-feedback) for user haptics feedback.
+- [`@react-native-clipboard/clipboard`](https://github.com/react-native-clipboard/clipboard) for Copy message support.
+- [`react-native-document-picker`](https://github.com/rnmods/react-native-document-picker) to access device media files.
+- [`react-native-quick-sqlite`](https://github.com/margelo/react-native-quick-sqlite) to enable Offline support in the app.
+- [`react-native-image-picker`](https://github.com/react-native-image-picker/react-native-image-picker) to use native photo picker.
+
+
+
+
+- [`expo-av`](https://docs.expo.dev/versions/latest/sdk/av/) for Video and Audio playback, recording and async audio messages support.
+- [`expo-media-library`](https://docs.expo.dev/versions/latest/sdk/media-library/) for accessing device gallery.
+- [`expo-image-picker`](https://docs.expo.dev/versions/latest/sdk/imagepicker/) to capture images to attach them in the message.
+- [`expo-sharing`](https://docs.expo.dev/versions/latest/sdk/sharing/) for Attachments sharing support.
+- [`expo-haptics`](https://docs.expo.dev/versions/latest/sdk/haptics/) for user haptics support.
+- [`expo-clipboard`](https://docs.expo.dev/versions/latest/sdk/clipboard/) for Copy message support.
+- [`expo-document-picker`](https://docs.expo.dev/versions/latest/sdk/document-picker/) to access device media files.
+- [`react-native-quick-sqlite`](https://github.com/margelo/react-native-quick-sqlite) to enable Offline support in the app.
+
+
+
+
+:::note
+Please follow along the linked documentation of each optional dependencies so as to support them correctly in your application.
+:::
+
+### Configuring permissions
+
+Some dependencies(if you are using them on your application), require you to add additional permissions to the `Info.plist` file in iOS and `AndroidManifest.xml` file in Android. Please follow the steps mentioned in the links below for corresponding dependencies:
+
+
+
+
+- [`@react-native-camera-roll/camera-roll`](https://github.com/react-native-cameraroll/react-native-cameraroll?tab=readme-ov-file#permissions) for gallery/photo library access.
+- [`react-native-image-crop-picker`](https://github.com/ivpusic/react-native-image-crop-picker?tab=readme-ov-file#step-3) for camera access.
+- [`react-native-audio-recorder-player`](https://github.com/hyochan/react-native-audio-recorder-player?tab=readme-ov-file#post-installation) for microphone access for voice recording.
+
+An example `AndroidManifest.xml` would look like this with permissions:
+
+```xml
+
+
+
+
+
+
+```
+
+An example `Info.plist` would look like this with permissions:
+
+```xml
+NSPhotoLibraryUsageDescription
+$(PRODUCT_NAME) would like access to your photo gallery to share image in a message.
+NSPhotoLibraryAddUsageDescription
+$(PRODUCT_NAME) would like to save photos to your photo gallery after downloading from a message.
+NSCameraUsageDescription
+$(PRODUCT_NAME) would like to use your camera to share image in a message.
+NSMicrophoneUsageDescription
+$(PRODUCT_NAME) would like to use your microphone for voice recording.
+```
+
+
+
+
+- [`expo-media-library`](https://docs.expo.dev/versions/latest/sdk/media-library/#configurable-properties) for gallery/photo library access.
+- [`expo-image-picker`](https://docs.expo.dev/versions/latest/sdk/imagepicker/#configuration-in-appjsonappconfigjs) for camera access.
+- [`expo-av`](https://docs.expo.dev/versions/latest/sdk/av/#configuration-in-appjsonappconfigjs) for microphone access for voice recording.
+
+An example `app.json` config for expo would look like this to add permissions to the `Info.plist` on iOS, using the config plugins:
+
+```json
+{
+ "expo": {
+ "plugins": [
+ [
+ "expo-media-library",
+ {
+ "photosPermission": "$(PRODUCT_NAME) would like access to your photo gallery to share image in a message.",
+ "savePhotosPermission": "$(PRODUCT_NAME) would like to save photos to your photo gallery after downloading from a message."
+ }
+ ],
+ [
+ "expo-image-picker",
+ {
+ "cameraPermission": "$(PRODUCT_NAME) would like to use your camera to share image in a message."
+ }
+ ],
+ [
+ "expo-av",
+ {
+ "microphonePermission": "$(PRODUCT_NAME) would like to use your microphone for voice recording."
+ }
+ ]
+ ]
+ }
+}
+```
+
+For Android on Expo, most of the most permissions are added automatically by libraries that you use in your app either with config plugins or with a package-level `AndroidManifest.xml`. Read more [here](https://docs.expo.dev/guides/permissions/#android).
+
+
+
+
+### Additional Steps
+
+Some dependencies require us to make changes to our application for all functionalities to be available.
+
+The most important steps to get started are:
+
+- Add the Babel plugin for [`react-native-reanimated`](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation#babel-plugin) to your `babel.config.js` file in your application folder:
+
+```js
+module.exports = {
+ presets: [
+ ... // don't add it here :)
+ ],
+ plugins: [
+ ...
+ // highlight-next-line
+ 'react-native-reanimated/plugin',
+ ],
+};
+```
+
+:::caution
+`react-native-reanimated/plugin` has to be listed last.
+:::
+
+- After installation, wrap your entry point with `` or `gestureHandlerRootHOC`:
+
+```js
+import { GestureHandlerRootView } from 'react-native-gesture-handler';
+
+export default function App() {
+ return {/* content */};
+}
+```
+
+:::note
+The entry point of your app exists usually either in `index.js` or `App.tsx` file. In case of navigation with Expo Router v3.x, the entry point is inside `app/_layout.js`.
+:::
+
+Please also follow the steps mentioned in the links below for corresponding dependencies:
+
+- `react-native` - [additional installation steps](https://reactnative.dev/docs/image#gif-and-webp-support-on-android)
+- `react-native-image-crop-picker` - [additional installation steps](https://github.com/ivpusic/react-native-image-crop-picker#step-3)
+- `@react-native-camera-roll/camera-roll` - [additional installation steps](https://github.com/react-native-cameraroll/react-native-cameraroll#permissions)
+
+Now you should be able to run the app on simulator by running following command:
+
+
+
+
+
+
+
+```bash title="Terminal"
+npx pod-install
+yarn ios
+```
+
+
+
+
+
+```bash title="Terminal"
+yarn android
+```
+
+
+
+
+
+
+
+
+
+
+```bash title="Terminal"
+yarn ios
+```
+
+
+
+
+
+```bash title="Terminal"
+yarn android
+```
+
+
+
+
+
+
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/internationalization.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/internationalization.mdx
new file mode 100644
index 0000000000..0f3d41b192
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/internationalization.mdx
@@ -0,0 +1,429 @@
+---
+id: translations
+title: Internationalization
+---
+
+# Adding Internationalization (i18n)
+
+If you deploy your app to users who speak another language, you'll need to internationalize it. Stream’s Chat Client provides the option to translate the user-created contents of messages in addition to the UI. The React Native SDK's UI Components are available in multiple languages out-of-the-box. At the moment we support the following languages (and more will be added in the future):
+
+- [English (en)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/en.json)
+- [Spanish (es)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/es.json)
+- [French (fr)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/fr.json)
+- [Hebrew (he)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/he.json)
+- [Hindi (hi)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/hi.json)
+- [Italian (it)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/it.json)
+- [Japanese (ja)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/ja.json)
+- [Korean (ko)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/ko.json)
+- [Dutch (nl)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/nl.json)
+- [Russian (ru)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/ru.json)
+- [Turkish (tr)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/tr.json)
+- [Brazilian Portuguese (pt-BR)](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/pt-BR.json)
+
+## Usage
+
+The `Streami18n` provides static translations for React Native components from the Stream Chat SDK. `Streami18n` is a class that uses a configuration of [i18next](https://www.i18next.com/) with a subset of the functionality exposed. `Streami18n` is provided by `stream-chat-react-native` and can be imported from the library.
+
+The only step you need to start using `Streami18n` is to create an instance of the class.
+
+```tsx
+const streami18n = new Streami18n();
+```
+
+`Streami18n` will default to English (en). If you choose to use the default English settings with Day.js you do not need to deal directly with an instance of `Streami18n`, this is taken care of for you.
+
+If you choose to change the language, translation, or date handling, you will need to provide your modified instance of `Streami18n` to the component library. Two components require your custom instance of `Streami18n` to properly pass your translation and time-date functions to the component library, `OverlayProvider` and `Chat`. Both components accept an instance of `Streami18n` via the prop `i18nInstance`. Providing this prop will provide your instance of `Streami18n` to all of the components via [`context`](https://react.dev/reference/react/createContext) instead of the default instance.
+
+```tsx
+import { StreamChat }from 'stream-chat';
+import { Chat, OverlayProvider, Streami18n }from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+const streami18n =new Streami18n();
+
+exportconst App = () => (
+
+
+ {/** App components */}
+
+
+);
+```
+
+### Setting language for components
+
+Stream provides built in translations for some languages out-of-the-box. `Streami18n` accepts two optional parameters when being instantiated, [`options`](#options) and [`i18nextConfig`](#i18nextconfig). These parameters allow you to modify the `Streami18n` instance to your preferences.
+
+As an example, let's say we need to localize the UI of the application for a Dutch audience:
+
+```tsx
+const streami18n = new Streami18n({ language: 'nl' }); // Instantiate Streami18n with Dutch strings.
+```
+
+Alternatively, you can also use [`setLanguage`](https://getstream.io/chat/docs/sdk/reactnative/basics/translations/#setlanguage) method on `Streami18n` class. This is useful especially if you want to build language toggle functionality within your app.
+
+For example, let's say an application needs to default to English but support French:
+
+```tsx
+const streami18n = new Streami18n();
+
+...
+// Logic for how a user can change the language
+...
+
+streami18n.setLanguage('fr');// The UI will change to French.
+```
+
+### Adding a new language
+
+Let's see how you can add support for additional languages in the SDK. As an example, we'll implement a custom Polish language translation:
+
+```tsx
+const streami18n = new Streami18n();
+streami18n.registerTranslation('pl', {
+ 'Copy Message': 'Kopiuj wiadomość',
+ 'Delete Message': 'Usuń wiadomość',
+ '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} i {{ secondUser }} piszą...',
+});
+```
+
+Please take a look at all the available texts [here](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/i18n/en.json).
+
+### Overriding existing languages
+
+You can also make line item changes to the strings for existing UI components. This is useful if you want to tweak an existing language to use regional spelling variants (American English vs. UK English, for example) same process as [Adding a new language](#adding-a-new-language). As an example, we'll override the translations for Dutch language:
+
+```tsx
+const streami18n = new Streami18n();
+
+streami18n.registerTranslation('nl', {
+ 'Delete Message': 'Verwijder bericht',
+});
+```
+
+### Using device locale to set language
+
+[`react-native-localize`](https://github.com/zoontek/react-native-localize#-react-native-localize) package provides a toolbox for React Native app localization. You can use this package to access user preferred locale, and use it to set language for chat components:
+
+```tsx
+import * as RNLocalize from 'react-native-localize';
+const streami18n = new Streami18n();
+
+const userPreferredLocales = RNLocalize.getLocales();
+
+streami18n.setLanguage(userPreferredLocales[0].languageCode);
+```
+
+### Overriding DateTime format
+
+React Native SDK uses [Day.js](https://day.js.org/en/) internally by default to format DateTime stamp. Day.js is a lightweight alternative to Moment.js with the same modern API and has [locale support](https://day.js.org/docs/en/i18n/i18n) as well.
+
+Day.js provides locale config for plenty of languages, you can check the whole list of locale configs [here](https://github.com/iamkun/dayjs/tree/dev/src/locale).
+
+You can either provide the Day.js locale config while registering language with `Streami18n` (either via constructor or `registerTranslation()`) or you can provide your own Day.js or Moment.js instance to Streami18n constructor, which will be then used internally (using the language locale) in components.
+
+```tsx
+const i18n =new Streami18n({
+ language: 'nl',
+ dayjsLocaleConfigForLanguage: {
+ months: [...],
+ monthsShort: [...],
+ calendar: {
+ sameDay: '...'
+ }
+ }
+});
+```
+
+You can add locale config for moment while registering translation via `registerTranslation` function:
+
+```tsx
+const i18n =new Streami18n();
+
+i18n.registerTranslation(
+ 'mr',
+ {
+ 'Nothing yet...': 'काहीही नाही ...',
+ '{{ firstUser }} and {{ secondUser }} are typing...':
+ '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',
+ },
+ {
+ months: [...],
+ monthsShort: [...],
+ calendar: {
+ sameDay: '...'
+ }
+ }
+);
+```
+
+Alternatively, you can use a utility library to handle DateTime by providing your own [`Moment`](https://momentjs.com/) object:
+
+```tsx
+import 'moment/locale/nl';
+import 'moment/locale/it';
+// or if you want to include all locales
+import 'moment/min/locales';
+
+import Moment from moment;
+
+const i18n =new Streami18n({
+ language: 'nl',
+ DateTimeParser: Moment,
+});
+```
+
+Or by providing your own [Day.js](https://day.js.org/docs/en/installation/installation) object:
+
+```tsx
+import Dayjs from 'dayjs';
+
+import 'dayjs/locale/nl';
+import 'dayjs/locale/it';
+// or if you want to include all locales
+import 'dayjs/min/locales';
+
+const i18n = new Streami18n({
+ language: 'nl',
+ DateTimeParser: Dayjs,
+});
+```
+
+If you would like to stick with English language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.
+
+### Translating messages
+
+If your application has a user-base that speaks more than one language, Stream's Chat Client provides the option to automatically translate messages. For more information on using automatic machine translation for messages, see the [Chat Client Guide on Translation](https://getstream.io/chat/docs/react-native/translation/?language=javascript).
+
+### Timezone location
+
+To display date and time in different than machine's local timezone, you can provide the timezone parameter to the `Streami18n` constructor. The timezone value has to be a valid [timezone identifier string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If no timezone parameter is provided, then the machine's local timezone is applied.
+
+:::note
+On our React Native SDK, the timezone is only supported through `moment-timezone` and not through the default `Dayjs`. This is because of the [following issue](https://github.com/iamkun/dayjs/issues/1377).
+
+So, to ensure this please pass the `moment-timezone` object to the `DateTimeParser` key of the `Streami18n` constructor.
+:::
+
+```tsx
+import { Streami18n } from 'stream-chat-react';
+import momentTimezone from 'moment-timezone';
+
+const streami18n = new Streami18n({
+ DateTimeParser: momentTimezone,
+ timezone: 'Europe/Budapest',
+});
+```
+
+Moment Timezone will automatically load and extend the moment module, then return the modified instance. This will also prevent multiple versions of moment being installed in a project.
+
+## Options
+
+`options` are the first optional parameter passed to `Streami18n`, it is an object with all keys being optional.
+
+### DateTimeParser
+
+Used for translating dates and times into the desired local format. Either [Day.js](https://day.js.org/) or [Moment](https://momentjs.com/) can be used. Day.js is a dependency of the repository and used by default.
+
+| TYPE | DEFAULT |
+| ------ | ------- | ----- |
+| Dayjs | Moment | Dayjs |
+
+### dayjsLocaleConfigForLanguage
+
+You can [customize and create](https://day.js.org/docs/en/customization/customization) new locales using Day.js. To allow accessibility to this option when using the default Day.js instance you can pass these customizations via the `dayjsLocaleConfigForLanguage` key.
+
+| Type |
+| ------ |
+| Object |
+
+### debug
+
+Enable [debug mode](https://www.i18next.com/overview/configuration-options#logging) in internal i18next instance.
+
+| TYPE | DEFAULT |
+| ------- | ------- |
+| Boolean | false |
+
+### disableDateTimeTranslations
+
+Use the default English language date-times instead of those dictated by the language set.
+
+| TYPE | DEFAULT |
+| ------- | ------- |
+| Boolean | false |
+
+### language
+
+Language code for language to be used. The following options are available:
+
+- English (`en`)
+- Spanish (`es`)
+- French (`fr`)
+- Hebrew (`he`)
+- Hindi (`hi`)
+- Italian (`it`)
+- Japanese (`ja`)
+- Korean (`ko`)
+- Dutch (`nl`)
+- Russian (`ru`)
+- Turkish (`tr`)
+
+| TYPE | DEFAULT |
+| ------ | ------- |
+| String | `en` |
+
+### logger
+
+Function to log warnings & errors from `Streami18n`.
+
+| TYPE | DEFAULT |
+| ---------------------- | ------------ |
+| (msg?: string) => void | console.warn |
+
+### translationsForLanguage
+
+Allows you to override the provided translations for given keys.
+
+```
+const streami18n =new Streami18n({
+ language: 'nl',
+ translationsForLanguage: {
+ 'Nothing yet...': 'Nog Niet...',
+ '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',
+ },
+});
+```
+
+| Type |
+| ------ |
+| Object |
+
+## I18NextConfig
+
+`i18NextConfig` is the second optional parameter passed to `Streami18n`, it is an object with all keys being optional. `i18nextConfig` is used in the instantiation of the i18next instance and mostly aligns with the [i18next options](https://www.i18next.com/translation-function/essentials#overview-options).
+
+### debug
+
+Enable [debug mode](https://www.i18next.com/overview/configuration-options#logging) in internal i18next instance. This overrides the [`debug key on options`](https://getstream.io/chat/docs/sdk/reactnative/basics/translations/#debug) if provided.
+
+| Type |
+| ------- |
+| Boolean |
+
+### `fallbackLng`
+
+Fallback language setting for i18next.
+
+| Type |
+| --------------------------------------------------------------------- |
+| [`FallbackLng`](https://www.i18next.com/principles/fallback#fallback) |
+
+### `interpolation`
+
+i18next interpolation setting for integrating dynamic values into translations.
+
+| TYPE | DEFAULT |
+| ---------------------------------------------------------------------------------- | ------------------------ |
+| [Object](https://www.i18next.com/translation-function/interpolation#interpolation) | `{ escapeValue: false }` |
+
+### `keySeparator`
+
+Override character to separate keys.
+
+| TYPE | DEFAULT |
+| ----------------- | ------- |
+| String \| Boolean | false |
+
+### `lng`
+
+Override language to use.
+
+| Type |
+| ------ |
+| String |
+
+### `nsSeparator`
+
+Override character to split namespace from key.
+
+| TYPE | DEFAULT |
+| ----------------- | ------- |
+| String \| boolean | false |
+
+### `parseMissingKeyHandler`
+
+Function to handle keys missing translations for the selected language.
+
+| TYPE | DEFAULT |
+| ------------------------- | ------------ |
+| `(key: string) => string` | (key) => key |
+
+## Methods
+
+### `getAvailableLanguages`
+
+Returns an array of language code strings corresponding to available languages.
+
+```
+const availableLanguages = streami18n.getAvailableLanguages();
+```
+
+### `geti18Instance`
+
+Returns instance of i18next used within the `Streami18n` instance.
+
+```
+const i18n = streami18n.geti18Instance();
+```
+
+### `getTranslations`
+
+Returns the current translations dictionaries for all languages.
+
+```
+const translations = streami18n.getTranslations();
+```
+
+### `getTranslators`
+
+Asynchronous function that returns the current translator functions.
+
+```
+const { t, tDateTimeParser } =await streami18n.getTranslators();
+```
+
+### `registerTranslation`
+
+Allows you to register a custom translation, this will override a translation if one already exists for the given language code. The third parameter, which is optional, is a Day.js locale, which is structured the same as [dayjsLocaleConfigForLanguage](#dayjslocaleconfigforlanguage).
+
+It is suggested you look at the [`enTranslations.json file`](https://github.com/GetStream/stream-chat-react/blob/master/src/i18n/en.json) exported from `stream-chat-react-native` for a current list of used translation keys.
+
+```
+streami18n.registerTranslation('mr', {
+ 'Nothing yet...': 'काहीही नाही ...',
+ '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत',
+});
+```
+
+#### Parameters
+
+| NAME | TYPE | REQUIRED |
+| ------------------- | ------ | -------- |
+| `language` | String | ✔️ |
+| `translation` | Object | ✔️ |
+| `customDayjsLocale` | Object | |
+
+### `setLanguage`
+
+Asynchronous function that changes the current language and returns the new translation function. If not initialized `undefined` will be returned. If the language fails to update the current translation function will be returned.
+
+```
+const t = await streami18n.setLanguage('nl');
+```
+
+#### Parameters
+
+| NAME | TYPE | REQUIRED |
+| ---------- | ------ | -------- |
+| `language` | String | ✔️ |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/limitations.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/limitations.mdx
new file mode 100644
index 0000000000..81a829c205
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/limitations.mdx
@@ -0,0 +1,31 @@
+---
+id: limitations
+sidebar_position: 7
+title: Limitations
+---
+
+Stream Chat for React Native allows for a vast a amount of customization.
+The theme, components, and functionality can almost all be modified or replaced.
+But it is important to remember **not all use cases are supported out of the box**.
+
+## Customizations
+
+For some use cases you will have to replace our components with ones you create yourself.
+Custom UI components are mostly provided as props on the `Channel` component and propagated throughout the UI via context.
+Some many need to be provided to other components such as `OverlayProvider` or `MessageList`, but `Channel` is the most common entry point for customizations.
+
+Most components when rendered receive very few props, instead the components operate independently of props by utilizing contexts themselves.
+When creating a custom component we strongly suggest you look at the source code on GitHub for the component you are replacing.
+This will not only give you a better idea of what contexts we are using to achieve the current UI, but also insight into any internal logic that may be taking place in the component that you may want to maintain.
+
+We use custom memoization equality checks on many components to limit unnecessary re-renders, replicating these memoization checks to fit the needs of your custom component will help in maintaining performance.
+This is particularly important inside of messages as many are rendered in a single message list, a change that triggers a re-render across all messages will be computationally expensive.
+
+## Platforms
+
+It is important to remember that when using React Native that there may be platform specific differences as the platform specific SDKs are being utilized.
+If you are using [Expo](https://expo.io/) there may be even more differences.
+We highly suggest you test on both platforms to ensure you are seeing consistent results.
+
+Libraries such as [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/), which we make use of, often function slightly differently on iOS and Android.
+If you are creating customizations that may overlap with React Native Gesture Handler usage you should once again look at the source code on GitHub for the component you are replacing to see if you need platform specific code.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/migrating-from-4.x-to-5.x.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/migrating-from-4.x-to-5.x.mdx
new file mode 100644
index 0000000000..24d27831b5
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/migrating-from-4.x-to-5.x.mdx
@@ -0,0 +1,38 @@
+---
+id: upgrading-from-v4
+title: Migration from 4.x to 5.x
+---
+
+This guide highlights the changes introduced from v4 to v5.
+
+## Prop or Context Changes
+
+The following values in [`ImageGalleryContext`](https://getstream.io/chat/docs/sdk/reactnative/contexts/image-gallery-context/#value) have been renamed:
+
+- `image` -> `selectedMessage`
+- `setImage` -> `setSelectedMessage`
+- `images` -> `messages`
+- `setImages` -> `setMessages`
+
+## Remove stream-chat dependency (when applicable)
+
+If you have installed `stream-chat` dependency explicitly on your application, then please make sure you remove it. Our Chat SDK (`stream-chat-react-native`) has `stream-chat` as a dependency (not peer dependency). Therefore, having `stream-chat` in your app's package.json is discouraged and will probably cause random issues that will disturb the chat functionalities.
+
+```bash
+yarn remove stream-chat
+```
+
+- Replace [`@react-native-community/cameraroll`](https://github.com/react-native-cameraroll/react-native-cameraroll) dependency with [`@react-native-camera-roll/camera-roll`](https://www.npmjs.com/package/@react-native-camera-roll/camera-roll):
+
+```bash
+yarn remove @react-native-community/cameraroll
+yarn add @react-native-camera-roll/camera-roll
+```
+
+## Unique Chat Component Instance
+
+Until v4, you could provide a separate `Chat` component for each usage of `Channel` component or `ChannelList` component. But from v5, you must provide only one instance of the `Chat` component within your application. This component needs to be a parent for all the chat-related components such as `ChannelList`, `Channel` or `Thread`.
+
+## Enable Offline Support
+
+To enable offline support please check the [Offline Support](../basics/migrating-from-4.x-to-5.x.mdx) guide.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/navigation.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/navigation.mdx
new file mode 100644
index 0000000000..2afba8ce58
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/navigation.mdx
@@ -0,0 +1,221 @@
+---
+id: stream_chat_with_navigation
+title: Navigation
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+Stream Chat for React Native provides many features out of the box that require positioning the components on the screen in a certain manner to get the desired UI.
+
+The `AttachmentPicker`, `ImageGallery`, and `MessageOverlay`, all need to be rendered in front of other components to have the desired effect. All of these elements are controlled by the `OverlayProvider`. When used together with navigation, certain steps are needed to be taken to make these components appear fluently.
+
+The guidance provided makes the assumption you are using [React Navigation](https://reactnavigation.org/) in your app in conjunction with [`createStackNavigator`](https://reactnavigation.org/docs/stack-navigator/).
+
+:::note
+**If you are using another navigation solution, or utilizing [`createNativeStackNavigator`](https://reactnavigation.org/docs/native-stack-navigator/), other considerations will need to be taken depending on your navigation arrangement.**
+
+The `createNativeStackNavigator` uses the native APIs `UINavigationController` on iOS and `Fragment` on Android. The `OverlayProvider` needs to exist in a view that can render content in front of the chat screen. Therefore, using a `fullScreenModal` with `createNativeStackNavigator`, which uses `UIModalPresentationFullScreen` on iOS and `modal` on Android, to render your chat screen will leave the `OverlayProvider` rendered behind the chat. If you are having issues, we suggest you get in touch with support, and we can find a solution to your specific navigation arrangement.
+:::
+
+## Navigation Container
+
+The [`NavigationContainer`](https://reactnavigation.org/docs/navigation-container/) manages the apps state in React Navigation. Nested navigators and screens all exist within the container. To ensure the `OverlayProvider` can render content above all of these screens, headers, tab-bars, etc. the `OverlayProvider` must be rendered around them.
+
+The `Chat` component should ideally surround the entire application. You can choose whatever suits your needs best, theming, connection handling, and translations are all handled out of the box in the `Chat` component; and this may be a consideration in where in the app you want this component to be rendered.
+
+:::note
+Having it higher in the *stack* helps to ensure it is not unmounted at times when a connection is present. If `Chat` is unmounted with a connection present you may have to implement some connection handling functions yourself to ensure you reconnect when the app is, for instance, reopened from the background. The WebSocket connection closes on it's own approximately 15 seconds after the app is put into background. Not handling the connection on [`appState`](https://reactnative.dev/docs/appstate) changes will also affect **[how Stream Chat handles Push Notifications](https://getstream.io/chat/docs/sdk/reactnative/guides/push-notifications-v2/)**.
+:::
+
+```tsx
+import React from 'react';
+import { NavigationContainer } from '@react-navigation/native';
+import { createStackNavigator } from '@react-navigation/stack';
+import { Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+const Stack = createStackNavigator<{ home: undefined }>();
+
+export const App = () =>
+
+
+ // highlight-next-line
+
+
+ {/** App components */})} name='home' />
+
+ // highlight-next-line
+
+
+ ;
+```
+
+## Keyboard
+
+The `Channel` component contains a `KeyboardCompatibleView` that, like [the standard React Native `KeyboardAvoidingView`](https://reactnative.dev/docs/keyboardavoidingview), needs a `keyboardVerticalOffset` to account for distance between the top of the user screen and the react native view. This height in most cases with React Navigation in conjunction with Stream Chat is the header height of React Navigation. This can be accessed from React Navigation using the `useHeaderHeight` hook from `@react-navigation/stack`, and given as a prop to `Channel`.
+
+```tsx
+const headerHeight = useHeaderHeight();
+
+const App = () => {
+ return {/* other components inside */};
+};
+```
+
+## Attachment Picker
+
+The `AttachmentPicker` is a keyboard-esk view that allows a user to attach photos and files. Part of the construction of the `AttachmentPicker` is a bottom-sheet provided by the `OverlayProvider`. This bottom-sheet provides a grid of images in a scroll-able list that can be lifted up to make selecting images easier. The placement of the `AttachmentPicker` is dependent on two values, the `bottomInset` and the `topInset`.
+
+### Top Inset
+
+The `topInset` is used to determine how high the scroll-able bottom-sheet can go when opened. `topInset` defaults to 0 and covers the entire screen, or it can be set to the [top safe area inset](https://reactnavigation.org/docs/handling-safe-area/#use-the-hook-for-more-control) if desired. The most common choice when using React Navigation is to get the header height using the `useHeaderHeight` hook from `@react-navigation/stack` and set the top inset to the given height for a nice visual result where the picker opens to the header.
+
+```tsx
+const headerHeight = useHeaderHeight();
+const { setTopInset } = useAttachmentPickerContext();
+
+useEffect(() => {
+ setTopInset(headerHeight);
+}, [headerHeight]);
+```
+
+:::note
+The `topInset` can be set via props on the `OverlayProvider`, or set via the `setTopInset` function provided by the `useAttachmentPickerContext` hook.
+:::
+
+### Bottom Inset
+
+The `bottomInset` is used to adjust the height of the `AttachmentPicker` menu to align properly with the bottom-sheet when open. This is the height between the bottom of the `MessageInput` container and the bottom of the screen. If you are displaying the chat screen without a tab-bar it is most likely the bottom inset is the [bottom safe area inset](https://reactnavigation.org/docs/handling-safe-area/#use-the-hook-for-more-control). If you are using a bottom tab-bar you can utilize the `useBottomTabBarHeight` hook from `@react-navigation/bottom-tabs` to get the appropriate height to use.
+
+```tsx
+import React from 'react';
+import { NavigationContainer } from '@react-navigation/native';
+import { createStackNavigator } from '@react-navigation/stack';
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import { Chat, OverlayProvider } from 'stream-chat-react-native';
+
+const client = StreamChat.getInstance('api_key');
+const Stack = createStackNavigator<{ home: undefined }>();
+
+export const Nav = () => {
+ // highlight-next-line
+ const { bottom } = useSafeAreaInsets();
+
+ return (
+
+ // highlight-next-line
+
+
+
+ {/** App components */})} name='home' />
+
+
+ // highlight-next-line
+
+
+ );
+};
+```
+
+```tsx
+import React from 'react';
+import { SafeAreaProvider } from 'react-native-safe-area-context';
+import { Nav } from './Nav';
+
+export const App = () => (
+
+
+
+);
+```
+
+:::note
+The `bottomInset` can be set via props on the `OverlayProvider`, or set via the `setBottomInset` function provided by the `useAttachmentPickerContext` hook.
+:::
+
+### Resetting Selected Images
+
+The selected images in the `AttachmentPicker` are tightly coupled to the `MessageInput`. As there is only one `AttachmentPicker` in the navigation stack, but multiple `MessageInput`'s can exist, there are details around the setup that must be implemented correctly. For the typical navigation setup clearing the selected images is handled out of the box. For this to function properly your usage of the `Channel` component must include the usage of `thread` when appropriate. Failing to do this will result in unintentional behavior, such as excess image uploads as the selected images will be uploaded twice when selected if the `thread` state is not properly kept.
+
+In more complex scenarios where more than one `Channel` could potentially be rendered in multiple tabs a different approach would be necessary. It is suggested that you architect an approach best for your specific scenario.
+
+The `setSelectedImages` function can be pulled off of the `useAttachmentPickerContext` for granular control of the `AttachmentPicker` images.
+
+## Image Gallery[](https://getstream.io/chat/docs/sdk/reactnative/basics/stream_chat_with_navigation/#image-gallery)
+
+The `ImageGallery` is populated by the `MessageList` component. `MessageList` utilizes information provided by both the `ThreadContext` and `threadList` prop to determine if the `ImageGallery` should be updated. If there is both a `thread` provided by the `ThreadContext` and the `threadList` prop is `true` on `MessageList`, or both values are falsy, the `ImageGallery` is updated appropriately.
+
+In practice this means that if you implement a screen for the main `Channel`, and another for `Thread` that is navigated to `onThreadSelect`, you need to indicate to the main `Channel` it should not update the `ImageGallery` while the `Thread` screen is present. To do this the main `Channel` component should be given the appropriate `thread` when the `Thread` screen shown, then the `thread` removed when navigating back to the main `Channel` screen.
+
+This can be done by keeping the current `thread` in a `context` and setting it `onThreadSelect`, then removing it `onThreadDismount`. Alternatively if a user only has a single path to and from the `Channel` screen to the `Thread` screen and back you can accomplish the same result using a local state and the [`useFocusEffect`](https://reactnavigation.org/docs/use-focus-effect/) hook from React Navigation.
+
+
+
+
+```tsx
+export const ThreadScreen = () => {
+ const { channel } = useAppChannel();
+ const { setThread, thread } = useAppThread();
+
+ return (
+
+ setThread(undefined)} />
+
+ );
+};
+```
+
+```tsx
+export const ChannelScreen = () => {
+ const { channel } = useAppChannel();
+ const { setThread, thread } = useAppThread();
+
+ return (
+
+ {
+ setThread(selectedThread);
+ navigation.navigate('ThreadScreen');
+ }}
+ />
+
+
+ );
+};
+```
+
+
+
+
+```tsx
+export const ChannelScreen = () => {
+ const { channel } = useAppChannel();
+ const [selectedThread, setSelectedThread] = useState();
+
+ useFocusEffect(() => {
+ setSelectedThread(undefined);
+ });
+
+ return (
+
+ {
+ setSelectedThread(thread);
+ navigation.navigate('ThreadScreen', { thread });
+ }}
+ />
+
+
+ );
+};
+```
+
+
+
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/offline-support.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/offline-support.mdx
new file mode 100644
index 0000000000..c41417f057
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/offline-support.mdx
@@ -0,0 +1,122 @@
+---
+id: offline-support
+title: Offline Support
+---
+
+React Native Chat SDK provides OOTB support for offline mode, which means user will be able to access and interact with chat even when the network is off. This is an opt-in feature that needs to be explicitly enabled on application level.
+
+:::note
+Integration with Expo is possible using the `expo-dev-client` library. Offline support cannot be used in the "Expo Go" app, because it requires custom native code.
+:::
+
+## Features
+
+The offline storage implementation currently offers the following features:
+
+- Access to chat when Internet connection is disabled or low.
+- Faster startup times and loading, since initial data is loaded from offline storage before performing any network requests.
+- Syncing of the offline database using WebSocket events and Sync API.
+- Optimistically update offline database during chat interactions, such as send message, add reaction, etc.
+
+The following features are currently **NOT** implemented. They will be implemented gradually as part of minor releases in v5.
+
+- Access to threads in offline mode.
+
+## Enable Offline Support
+
+First and foremost, make sure to follow all steps from [Migrating to v5](../basics/migrating-from-4.x-to-5.x.mdx) guide. To enable offline support, please follow the given steps:
+
+#### Add `react-native-quick-sqlite` dependency.
+
+> Contemplate our dependency version compatibility table to make sure your `react-native-quick-sqlite` version are compatible with your `stream-chat-react-native` version.
+
+```bash
+ yarn add react-native-quick-sqlite
+ npx pod-install
+```
+
+#### Do not wait for `connectUser` call to succeed.
+
+It is important that you call the `connectUser` method on the chat client, before you render Chat components. But you don't need to wait for `connectUser` to succeed before rendering Chat components. This is to ensure:
+
+- Chat components have access to current user information, which is important to store/access offline data.
+- In case of slow or no network access, Chat components will still load the chat data without waiting for `connectUser` to succeed.
+
+```tsx
+const chatClient = StreamChat.getInstance('API_KEY');
+const App = () => {
+ const [isClientReady, setIsClientReady] = useState(false);
+
+ useEffect(() => {
+ const startChat = async () => {
+ const connectPromise = chatClient.connectUser(user, tokenOrTokenProvider);
+ setIsClientReady(true); // this allows components to render
+ await connectPromise();
+ // Any other post-connectUser logic you may have goes here.
+ };
+ startChat();
+ }, []);
+
+ if (!isClientReady) return null; // or some loading indicator;
+
+ return (
+
+ ...
+
+ );
+};
+```
+
+#### Add `enableOfflineSupport` prop on `Chat` component.
+
+```tsx
+import { Chat } from 'stream-chat-react-native';
+
+
+ ...
+;
+```
+
+#### Reset the database when signing out the user.
+
+Since the SDK doesn't handle app-level authentication logic, it's the application's responsibility to ensure the database is reset when a user gets logged out. This should generally be done before you call `client.disconnectUser()`.
+
+```tsx
+import { QuickSqliteClient } from 'stream-chat-react-native';
+
+// Sign out logic
+QuickSqliteClient.resetDB();
+chatClient.disconnectUser();
+```
+
+## How To Cache Images
+
+:::info
+Available since version 5.3.0
+:::
+
+Our SDK relies on the default caching provided by React Native (avatars, image attachments, URL preview, etc.). This default solution is far from perfect, and you might see a lot of images missing while operating the app in offline mode. We provide a convenient solution to replace all the underlying usage of the [`Image`](https://reactnative.dev/docs/next/image) component using the `ImageComponent` prop on the `Chat` component. Use the `ImageComponent` prop to provide a custom component that handles caching and has the same API as react-native's `Image` component.
+
+There are plenty of libraries available for this purpose:
+
+- [`react-native-fast-image`](https://www.npmjs.com/package/react-native-fast-image)
+- [`react-native-progressive-fast-image`](https://www.npmjs.com/package/@freakycoder/react-native-progressive-fast-image)
+- [`react-native-cached-image`](https://www.npmjs.com/package/react-native-cached-image)
+
+:::note
+Due to technical limitations, viewing images in full screen (image viewer) in offline mode is not currently supported.
+:::
+
+The following example demonstrates the usage of `react-native-fast-image` library to handle the caching of images in chat:
+
+```tsx
+import FastImage from 'react-native-fast-image';
+
+...
+
+
+```
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/overview.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/overview.mdx
new file mode 100644
index 0000000000..8153c57128
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/overview.mdx
@@ -0,0 +1,155 @@
+---
+id: overview
+slug: /
+title: Overview
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+Built on top of the Stream Chat API, the Stream Chat React Native SDK components include everything you need to build feature-rich and high-functioning chat user experiences out of the box.
+
+We have component libraries available for both RN CLI and Expo. Each approach includes an extensive set of fast performing and customizable UI components and support which allow you to get started quickly with little to no plumbing required. The libraries support:
+
+- Rich media messages
+- Reactions
+- Threads and quoted replies
+- Text input commands (ex: Giphy, emojis and @mentions)
+- Image and file uploads
+- Video playback
+- Read state and typing indicators.
+- Channel and message lists
+- Push (APN or Firebase)
+- Offline storage
+- and a lot more.
+
+Before getting started with our docs, we recommend going through our tutorials for our [**React Native SDK**](https://getstream.io/chat/react-native-chat/tutorial/).
+
+## Architecture
+
+Stream Chat React Native SDK primarily uses the [Stream Chat client](https://github.com/GetStream/stream-chat-js) to connect to and communicate with the Stream API.
+
+The full [JavaScript client docs](https://getstream.io/chat/docs/javascript/?language=javascript) should be referenced for detailed information on directly using the client.
+
+:::note
+Do not install the `stream-chat` dependency externally. This may lead to problems while using our SDK. Our SDK has it as a development dependency, so you need not install it externally.
+:::
+
+The Stream Chat React Native SDK is segregated into two separate packages:
+
+- `stream-chat-react-native` for RN CLI applications.
+- `stream-chat-expo` for Expo CLI applications.
+
+We recommend using the corresponding package for the respective CLI that the application uses.
+
+Our SDK components are highly customizable for both the interfaces. Unless your UI is completely different from the common industry standard, you should be able to customize the built-in components to match your needs.
+
+The UI SDKs provide both ready-made components that you can directly integrate (and customize) in your apps, or you can build your own, by reacting to the state we expose and re-using our components as building blocks, if needed.
+
+### Dependencies
+
+The SDK tries to keep the list of external dependencies to a minimum, these are the dependencies currently used:
+
+
+
+
+- [`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo) for accessing device gallery.
+- [`@stream-io/flat-list-mvcp`](https://github.com/GetStream/flat-list-mvcp) for bi-directional FlatList support.
+- [`react-native-fs`](https://github.com/itinance/react-native-fs) to perform file operations like save, delete, etc.
+- [`react-native-gesture-handler`](https://github.com/software-mansion/react-native-gesture-handler) to handle gestures within the SDK.
+- [`react-native-image-crop-picker`](https://github.com/ivpusic/react-native-image-crop-picker) to capture images to attach them in the message.
+- [`react-native-image-resizer`](https://github.com/bamlab/react-native-image-resizer) to compress image uploads.
+- [`react-native-reanimated`](https://github.com/software-mansion/react-native-reanimated) to compress image uploads.
+- [`react-native-svg`](https://github.com/react-native-svg/react-native-svg) for SVG support.
+- [`stream-chat`](https://github.com/GetStream/stream-chat-js) for Chat Client.
+
+
+
+
+- [`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo) for accessing device gallery.
+- [`@stream-io/flat-list-mvcp`](https://github.com/GetStream/flat-list-mvcp) for bi-directional FlatList support.
+- [`expo-file-system`](https://docs.expo.dev/versions/latest/sdk/filesystem/) to perform file operations like save, delete, etc.
+- [`react-native-gesture-handler`](https://github.com/software-mansion/react-native-gesture-handler) to handle gestures within the SDK.
+- [`expo-image-picker`](https://docs.expo.dev/versions/latest/sdk/imagepicker/) to capture images to attach them in the message.
+- [`expo-image-manipulator`](https://docs.expo.dev/versions/latest/sdk/imagemanipulator/) to compress image uploads.
+- [`react-native-reanimated`](https://github.com/software-mansion/react-native-reanimated) to compress image uploads.
+- [`react-native-svg`](https://docs.expo.dev/versions/latest/sdk/svg/) for SVG support.
+- [`stream-chat`](https://github.com/GetStream/stream-chat-js) for Chat Client.
+
+
+
+
+### Optional Dependencies
+
+There are a few optional dependencies that can be added by our users to have more features within the SDK.
+
+
+
+
+- [`@react-native-camera-roll/camera-roll`](https://github.com/react-native-cameraroll/react-native-cameraroll) for accessing device gallery.
+- [`react-native-video`](https://github.com/react-native-video/react-native-video) for Video and Audio playback support.
+- [`react-native-audio-recorder-player`](https://github.com/hyochan/react-native-audio-recorder-player) for Audio recording and async audio messages support.
+- [`react-native-share`](https://github.com/react-native-share/react-native-share) for Attachment sharing support.
+- [`react-native-haptic-feedback`](https://github.com/junina-de/react-native-haptic-feedback) for user haptics feedback.
+- [`@react-native-clipboard/clipboard`](https://github.com/react-native-clipboard/clipboard) for Copy message support.
+- [`react-native-document-picker`](https://github.com/rnmods/react-native-document-picker) to access device media files.
+- [`react-native-quick-sqlite`](https://github.com/margelo/react-native-quick-sqlite) to enable Offline support in the app.
+- [`react-native-image-picker`](https://github.com/react-native-image-picker/react-native-image-picker) to use native photo picker.
+
+
+
+
+- [`expo-av`](https://docs.expo.dev/versions/latest/sdk/av/) for Video and Audio playback, recording and async audio messages support.
+- [`expo-media-library`](https://docs.expo.dev/versions/latest/sdk/media-library/) for accessing device gallery.
+- [`expo-sharing`](https://docs.expo.dev/versions/latest/sdk/sharing/) for Attachments sharing support.
+- [`expo-haptics`](https://docs.expo.dev/versions/latest/sdk/haptics/) for user haptics support.
+- [`expo-clipboard`](https://docs.expo.dev/versions/latest/sdk/clipboard/) for Copy message support.
+- [`expo-document-picker`](https://docs.expo.dev/versions/latest/sdk/document-picker/) to access device media files.
+- [`react-native-quick-sqlite`](https://github.com/margelo/react-native-quick-sqlite) to enable Offline support in the app.
+
+
+
+
+:::note
+Please follow along the linked documentation of each optional dependencies so as to support them correctly in your application.
+:::
+
+## Choosing the Right SDK
+
+When integrating with our chat platform, you get to choose which SDK you would like to integrate with.
+
+Our best options are either the RN CLI or Expo SDKs. We suggest you choose what is closest to your current App.
+
+All the components exported by both the platforms are same across both the SDKs.
+
+## Upgrading and Versioning Strategy
+
+The Stream Chat React Native SDK adheres to the [semantic versioning](https://semver.org/) rules.
+
+- Bug fixes and behavior improvements cause **patch** version bump.
+- New features are shipped with an increased **minor** version.
+- Incompatible changes in the API will cause a **major** version increase.
+
+Occasionally, the SDK can include visual changes (whitespace, color changes, sizing, etc) in minor versions, as we are continuously improving the default look of our UI components. Bumping the major version for such changes would not be practical.
+
+## Platform Compatibilities
+
+We only support **Android** and **iOS** as platforms for the React Native SDK. We do not support **Web** currently, but this is in our backlog, and we plan to take this up in the future. As an alternative, you can use Stream's [React SDK](https://getstream.io/chat/docs/sdk/react/) for Web.
+
+## Sample Apps
+
+We have created some of the sample apps to help understand the usage of the Stream Chat React Native SDK. They can be found in the [`examples`](https://github.com/GetStream/stream-chat-react-native/tree/develop/examples) directory of the main repository. Apart from the samples we use for internal development, we also provide some small clone projects like a Slack clone and an iMessage clone. You can check out the code in [our repository](https://github.com/GetStream/react-native-samples) and even run the apps yourself.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/troubleshooting.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/troubleshooting.mdx
new file mode 100644
index 0000000000..8250a3c6cb
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/troubleshooting.mdx
@@ -0,0 +1,435 @@
+---
+id: troubleshooting
+title: Troubleshooting
+---
+
+There are a few common problems users have reported when setting up Stream Chat for React Native, to help you if you run afoul of these problems we have created a list of common issues and solutions.
+If you encounter something that is not listed here, try [searching for the issue in GitHub](https://github.com/GetStream/stream-chat-react-native/issues).
+
+## Cannot run remote debugger
+
+React Native is [undergoing major architecture changes](https://github.com/react-native-community/discussions-and-proposals/issues/91), [Reanimated 2](https://docs.swmansion.com/react-native-reanimated/) has capitalized on the already released improvements and taken advantage of the JSI to provide an amazingly powerful library.
+Currently though [there are a list of limitations](https://docs.swmansion.com/react-native-reanimated/docs/#known-problems-and-limitations) that Reanimated 2 has, one of which is that the use of the JSI prevents debugging without using [Flipper](https://fbflipper.com/), therefore you must use Flipper for remote debugging.
+
+## Messages sending in thread instead of channel
+
+There is an internal thread state that is used to track the current thread.
+When you click on a thread and take an action such as navigating to another screen the `thread` is set within the `Channel` component in the current screen to the selected `thread`.
+When you return to the original screen you need to reset the thread to ensure it is not being set on the messages when they are sent.
+We suggest you keep track of a `thread` state on your own and provide it to any `Channel` component you use whether on a channel or thread.
+
+```tsx {2}
+
+
+
+
+
+
+```
+
+```tsx {2}
+
+
+ setThread(null)} />
+
+
+```
+
+You may be wondering why this is all necessary, this is because in most cases there is only a single `OverlayProvider`.
+The `OverlayProvider` keeps track of the currently selected images in the image picker, and the images available to view in the image gallery from a given channel or thread.
+To keep these in sync with the currently visible screen some logic is used to determine whether or not they should update, this logic is dependant on the `thread` state.
+
+## Undefined is not a function
+
+Stream Chat for React Native relies heavily on context, in instances where the Render Error `undefined is not a function` occurs it is almost always the case that a context provider is not wrapping a component appropriately.
+If you encounter this error please ensure the `OverlayProvider`, `Chat`, and `Channel` components are wrapping your application correctly.
+
+## Incorrect input position
+
+If the `MessageInput` is at the incorrect height when the keyboard is displayed a setting could being incorrect.
+
+Ensure the `keyboardVerticalOffset` prop passed to `Channel` is correct and accounts for any header height that may need to be adjusted for.
+
+### Android
+
+On Android if the StatusBar is set to translucent, that is `StatusBar.setTranslucent(true)`, there may be some inaccurate layout calculations occurring.
+
+If you are using the standard React Native Android keyboard setting of `android:windowSoftInputMode="adjustResize"`, you can disable to layout adjustments on Android using the prop `disableKeyboardCompatibleView` and this will ignore the incorrect measurements.
+
+## Wrong images in gallery
+
+The image viewer is created in the `OverlayProvider` so it can cover the entire screen, thus if you are wrapping your navigation in the `OverlayProvider` there is only copy present throughout the application.
+The images present in the viewer are determined by logic based off of both the current `channel` and `thread` provided to the `Channel` component.
+You therefore must keep these props up to date as you navigate to ensure when returning to a channel from a thread the images in the viewer are once again updated to those from the channel.
+
+To do this make sure your `Channel` components are always aware of the thread state, even when being used for a channel.
+
+```tsx
+
+
+
+
+```
+
+```tsx
+
+ setThread(null)} />
+
+```
+
+## Image gallery not full screen
+
+If the image viewer or message overlay is not covering the full screen, for instance it is rendering below or behind a Header, it is likely the `OverlayProvider` is not setup in the correct location within the application.
+Please refer to the [Stream Chat with Navigation](./navigation.mdx) documentation to properly place the `OverlayProvider` in relation to your navigation solution or other components.
+
+## Image picker incorrect height
+
+The image picker opens the gallery to a height based on the location of the `MessageInput`, if there is space below the `MessageInput`, for instance a Safe Area or a Tab Bar, this must be taken into account.
+To account for this the prop `bottomInset` can be provided to the `OverlayProvider`.
+
+```tsx
+{/* Inner component */}
+```
+
+Similarly if the gallery fully open is not at the desired height, this can be adjusted using the `OverlayProvider` prop `topInset`.
+
+```tsx
+{/* Inner component */}
+```
+
+:::note
+
+`topInset` prior to version `3.6.0` needed to be set before the image picker would render.
+Additionally it could only be set one time via either props or the `setTopInset` function, otherwise the gallery would open to incorrect heights.
+Both `bottomInset` & `topInset` can be set via the appropriate functions, `setBottomInset` and `setTopInset`, that are accessible via the `useAttachmentPickerContext` hook.
+
+:::
+
+### Android
+
+On Android if the StatusBar is set to translucent, that is `StatusBar.setTranslucent(true)`, you should add the height adjustments using the `setTopInset` function of the `useAttachmentPickerContext` hook.
+
+```tsx
+import { StatusBar } from 'react-native';
+import { useHeaderHeight } from '@react-navigation/elements';
+import { useAttachmentPickerContext } from 'stream-chat-react-native';
+const headerHeight = useHeaderHeight();
+const { setTopInset } = useAttachmentPickerContext();
+
+// When the status bar is translucent, the headerHeight contains the actual header height + the status bar height which needs to be substracted.
+const finalHeaderHeight =
+ headerHeight - (Platform.OS === 'android' && StatusBar.currentHeight ? StatusBar.currentHeight : 0);
+
+useEffect(() => {
+ setTopInset(finalHeaderHeight);
+}, [setTopInset, finalHeaderHeight]);
+```
+
+This can also be passed to the `topInset` prop of `OverlayProvider`.
+
+It is important to note that since Expo 38 `true` is the default for transparent on Android.
+
+## Image picker not working
+
+If the image picker is appearing incorrectly, for instance behind a bottom Tab Bar, it is likely the `OverlayProvider` is not setup in the correct location within the application.
+Please refer to the [Stream Chat with Navigation](./navigation.mdx) documentation to properly place the `OverlayProvider` in relation to your navigation solution.
+
+### iOS
+
+Add the `NSPhotoLibraryUsageDescription` key in your `Info.plist` with a description of use.
+Add the `NSPhotoLibraryAddUsageDescription` key in your `Info.plist` with a description of use.
+
+### Android
+
+The following permissions are required for the image picker to work on Android, and must be included in the `AndroidManifest.xml` file.
+
+```xml
+
+
+
+
+```
+
+:::note
+
+If your Android app is using targetSdkVersion of 33 or above. We expect that you are using React Native version 0.71 or above to ask for the media permissions instead of storage permissions. Please ensure that your app has this combination.
+
+:::
+
+## Camera not working
+
+### iOS
+
+Add the `NSCameraUsageDescription` key in your `Info.plist` with a description of use.
+Add the `NSPhotoLibraryUsageDescription` key in your `Info.plist` with a description of use.
+Add the `NSMicrophoneUsageDescription` key in your `Info.plist` with a description of use.
+
+### Android
+
+The standard camera permissions are required for the camera to work on Android, and must be included in the `AndroidManifest.xml` file.
+
+```xml
+
+```
+
+Add `maven { url 'https://maven.google.com' }` to `android/build.gradle`
+
+```java {15}
+allprojects {
+ repositories {
+ mavenLocal()
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url("$rootDir/../node_modules/react-native/android")
+ }
+ maven {
+ // Android JSC is installed from npm
+ url("$rootDir/../node_modules/jsc-android/dist")
+ }
+
+ google()
+ maven { url 'https://maven.google.com' }
+ maven { url 'https://www.jitpack.io' }
+ }
+}
+```
+
+Ensure `buildToolsVersion`, `compileSdkVersion`, and `targetSdkVersion` are all >= 26 in `android/build.gradle`
+
+```java
+buildscript {
+ ext {
+ buildToolsVersion = "29.0.3"
+ compileSdkVersion = 29
+ targetSdkVersion = 29
+ ...
+ }
+ ...
+}
+```
+
+Add `vectorDrawables.useSupportLibrary = true` to `android/app/build.gradle`
+
+```java
+android {
+ defaultConfig {
+ vectorDrawables.useSupportLibrary = true
+ ...
+ }
+ ...
+}
+```
+
+## External Link not opening
+
+### Android
+
+Opening an external link doesn't work without permissions on `targetSdkVersion` >= 30. So, the following permission must be included in the `AndroidManifest.xml` file.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+```
+
+## GIF and WebP not displaying
+
+### Android
+
+GIF and WebP do not work without additional modules by default on Android.
+
+You will need to add some modules in your `android/app/build.gradle`
+
+```java
+dependencies {
+ // For animated GIF support
+ implementation 'com.facebook.fresco:animated-gif:2.6.0'
+
+ // For WebP support, including animated WebP
+ implementation 'com.facebook.fresco:animated-webp:2.6.0'
+ implementation 'com.facebook.fresco:webpsupport:2.6.0'
+
+ // Provide the Android support library (you might already have this or a similar dependency)
+ implementation 'com.android.support:support-core-utils:24.2.1'
+ ...
+}
+```
+
+## Blank screen when channel gets delete
+
+When a channel is deleted, and if some user is active on that channel, a blank screen appears by default (as per the default logic) as we return `null` in this case.
+It might be confusing for end user to see a blank screen and appropriate UX would be to navigate back to channel list screen.
+You can implement such UX by listening to `channel.deleted` event on channel screen, and navigate to channel list screen with appropriate notification on app.
+
+```tsx
+client.on('channel.deleted', event => {
+ if (event.cid === channel.cid) {
+ // add your action here
+ }
+});
+```
+
+## `Touchables` not working
+
+If you are having trouble with pressing, swiping, or otherwise interacting with components it is likely the result of [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/) not being properly setup.
+
+:::note
+
+If your React Native version is (>=0.68) you will need a version of >=2.0.0 for `react-native-gesture-handler` for your app to build.
+
+:::
+
+Be sure to follow all needed [additional steps](https://docs.swmansion.com/react-native-gesture-handler/docs/) to complete the installation.
+
+This includes ensuring you import `react-native-gesture-handler` at the top of your app entry file.
+
+```tsx
+import 'react-native-gesture-handler';
+```
+
+Also do not forget to wrap your component tree(probably above `OverlayProvider`) with `` or `gestureHandlerRootHOC` as mentioned in [RNGH Installation docs](https://docs.swmansion.com/react-native-gesture-handler/docs/installation#js). Not doing so, can cause unusual behaviour with the `MessageOverlay` and `Imagegallery` gestures.
+
+```tsx
+
+ {/* Other underlying components */}
+
+```
+
+If you are using v1 of `react-native-gesture-handler` library, then you will need extra setup steps for Android.
+Update `MainActivity.java` to override the method for creating the `ReactRootView` as mentioned in [RNGH Installation docs](https://docs.swmansion.com/react-native-gesture-handler/docs/installation#js).
+
+```java {4-6,13-21}
+package com.swmansion.gesturehandler.react.example;
+
+import com.facebook.react.ReactActivity;
+import com.facebook.react.ReactActivityDelegate;
+import com.facebook.react.ReactRootView;
+import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
+public class MainActivity extends ReactActivity {
+
+ @Override
+ protected String getMainComponentName() {
+ return "Example";
+ }
+ @Override
+ protected ReactActivityDelegate createReactActivityDelegate() {
+ return new ReactActivityDelegate(this, getMainComponentName()) {
+ @Override
+ protected ReactRootView createRootView() {
+ return new RNGestureHandlerEnabledRootView(MainActivity.this);
+ }
+ };
+ }
+}
+```
+
+## `Touchables` Inside Custom Components Are Not Working
+
+If you find that a customization that includes a touchable is not working, or the wrong element is receiving the touch event, this is likely related to [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/).
+The following could be the reasons behind the issues you might be facing:
+
+- Your component may be being rendered inside of a gesture handler.
+- Nested gesture handlers and `touchables` need special treatment and can act differently on iOS & Android. If you want Nested `Touchables` to work on Android you should add the prop `disallowInterruption` as mentioned [here](https://github.com/software-mansion/react-native-gesture-handler/issues/784#issuecomment-786471220).
+
+There are solutions available for almost all use cases so looking into your specific use case in relation to React Native Gesture Handler is suggested.
+The solution may require using a different touchable from React Native Gesture Handler and React Native depending on the platform.
+
+## Reanimated 2
+
+We rely on Reanimated 2 heavily for gesture based interactions and animations. It is vital you follow the [Reanimated 2 installation instructions](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation/) for the library to work properly.
+
+### Failed to create a Worklet
+
+If you are encountering errors related to `Reanimated 2 failed to create a worklet` you must likely forgot to add the `react-native-reanimated/plugin` to your [project's babel config file](https://babeljs.io/docs/en/config-files). Below is an example of adding Reanimated babel plugin to `babel.config.js`:
+
+```js
+ module.exports = {
+ ...
+ plugins: [
+ ...
+ 'react-native-reanimated/plugin',
+ ],
+ };
+```
+
+:::caution
+Reanimated plugin has to be listed last.
+:::
+
+### Blank screen on Android
+
+:::caution
+This step is only required for older version of (Reanimated 2). If you are using version >=3.0.0, you can skip this step.
+:::
+
+If you are encountering errors on Android and the screen is blank it is likely you forgot to finish the [Reanimated 2 Android setup](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation/#android).
+
+Ensure Hermes is enabled in `android/app/build.gradle`:
+
+```java
+project.ext.react = [
+ enableHermes: true // clean and rebuild if changing
+]
+```
+
+Add Reanimated in `MainApplication.java`
+
+```java {1-2,13-16}
+import com.facebook.react.bridge.JSIModulePackage;
+import com.swmansion.reanimated.ReanimatedJSIModulePackage;
+...
+
+private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
+ ...
+
+ @Override
+ protected String getJSMainModuleName() {
+ return "index";
+ }
+
+ @Override
+ protected JSIModulePackage getJSIModulePackage() {
+ return new ReanimatedJSIModulePackage();
+ }
+};
+...
+```
+
+### Android release bundle is crashing
+
+This is likely due to ProGuard removing reanimated 2 related classes. If you're using ProGuard, make sure to add the rules below:
+
+```
+-keep class com.swmansion.reanimated.** { *; }
+-keep class com.facebook.react.turbomodule.** { *; }
+```
+
+## Project won't build on a MacBook with Apple M1
+
+On newer MacBooks with the Apple M1 SoC, there are a few required steps that need to be followed for an app to build. The user [aiba](https://github.com/aiba) has written [a guide](https://github.com/aiba/react-native-m1) to make the necessary changes to your project.
+
+The iOS build version can be changed to suit your needs, but keep in mind to change the version to the same major and minor version consistently throughout the guide.
+
+## React Native Video failing with Xcode 17
+
+Following error is a known issue with using Xcode 17 and react-native-video dependency.
+
+```
+The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
+```
+
+To temporarily fix this, you can follow the solution as per mentioned in the description of [this issue on GitHub](https://github.com/react-native-video/react-native-video/issues/3154).
+
+Alternatively, you can apply [this patch](https://github.com/react-native-video/react-native-video/files/11932302/react-native-video%2B6.0.0-alpha.6.patch) using the [patch-package](https://www.npmjs.com/package/patch-package) library to the package `react-native-video`.
+
+:::note
+This shall be fixed soon with the new alpha release of the package `react-native-video`.
+:::
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/versioning_policy.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/versioning_policy.mdx
new file mode 100644
index 0000000000..9d38cfc423
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/basics/versioning_policy.mdx
@@ -0,0 +1,16 @@
+---
+id: versioning_policy
+sidebar_position: 10
+title: Versioning Policy
+---
+
+React Native Chat SDK package follows a [semantic versioning (`semver`)](https://semver.org/) since v4.0.0.
+
+That means that with a version number x.y.z (major.minor.patch):
+
+- When releasing bug fixes (backwards compatible), we make a patch release by changing the z number (ex: 4.1.0 to 4.1.1). A bug fix is defined as an internal change that fixes incorrect behavior.
+- When releasing new features or non-critical fixes, we make a minor release by changing the y number (ex: 4.1.0 to 4.2.0).
+- When releasing breaking changes (backward incompatible), we make a major release by changing the x number (ex: 4.1.0 to 5.0.0).
+
+Please check the official [semantic versioning](https://semver.org/#summary) docs for more information. This versioning policy does not apply to prerelease packages (below major version of 1)
+Whenever possible, we will add deprecation warnings in preparation for future breaking changes.
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/attachment-picker-context/selected_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/attachment-picker-context/selected_picker.mdx
new file mode 100644
index 0000000000..a93ca03adc
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/attachment-picker-context/selected_picker.mdx
@@ -0,0 +1,5 @@
+Value is `images` (string), when image attachment picker is open. Value will be `undefined` if file picker is active or file picker is open.
+
+| Type |
+| --------------------- |
+| 'images' \| undefined |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/disabled.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/disabled.mdx
new file mode 100644
index 0000000000..8740b50c45
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/disabled.mdx
@@ -0,0 +1,5 @@
+True if channel is [frozen](https://getstream.io/chat/docs/javascript/freezing_channels/?language=javascript&q=frozen) and [disableIfFrozenChannel](../../../core-components/channel.mdx#disableiffrozenchannel) is true.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/members.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/members.mdx
new file mode 100644
index 0000000000..3c1ff8eb48
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/members.mdx
@@ -0,0 +1,33 @@
+
+
+Members of current channel. This value is received from backend when you query a channel, either using [`client.queryChannels()`](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript&q=members) or [`channel.watch()`](https://getstream.io/chat/docs/javascript/watch_channel/?language=javascript&q=members) API call.
+
+:::caution
+
+
+
+`client.queryChannels()` or `channel.watch()` returns only up to 100 members of channel. So if you expect total number of members to be > 100, its better to use [`client.queryMembers()`](https://getstream.io/chat/docs/javascript/query_members/?language=javascript&q=members) API endpoint separately to get the list of members.
+:::
+
+```tsx
+Record<
+ string, // userId
+ {
+ banned?: boolean;
+ created_at?: string;
+ invite_accepted_at?: string;
+ invite_rejected_at?: string;
+ invited?: boolean;
+ is_moderator?: boolean;
+ role?: string;
+ shadow_banned?: boolean;
+ updated_at?: string;
+ user?: UserResponse;
+ user_id?: string;
+ }
+>;
+```
+
+| Type |
+| ------ |
+| object |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/scroll_to_first_unread_threshold.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/scroll_to_first_unread_threshold.mdx
new file mode 100644
index 0000000000..876399fcac
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/scroll_to_first_unread_threshold.mdx
@@ -0,0 +1,6 @@
+Minimum number of unread messages a channel should have in order to set the initial scroll position to first unread message.
+This value is only used when [initialScrollToFirstUnreadMessage](../../../core-components/channel.mdx#initialscrolltofirstunreadmessage) is set to true.
+
+| Type | Default |
+| ------ | ------- |
+| number | 4 |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/watchers.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/watchers.mdx
new file mode 100644
index 0000000000..d02b5b9a8f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channel-context/watchers.mdx
@@ -0,0 +1,19 @@
+Watchers of current channel. This value is received from backend when you query a channel, either using [`client.queryChannels()`](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript&q=members) or [`channel.watch()`](https://getstream.io/chat/docs/javascript/watch_channel/?language=javascript&q=members) API call.
+
+:::caution
+
+
+
+`client.queryChannels()` or `channel.watch()` returns only up to 100 watchers for channel. So if you expect total number of watchers to be > 100, you should request them explicitly using [Channel Pagination](https://getstream.io/chat/docs/javascript/channel_pagination/?language=javascript&q=members)
+:::
+
+```tsx
+Record<
+ string, // string
+ UserResponse
+>;
+```
+
+| Type |
+| ------ |
+| object |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/channels.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/channels.mdx
new file mode 100644
index 0000000000..f2f86b8e6d
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/channels.mdx
@@ -0,0 +1,5 @@
+Array of channels currently loaded within the `ChannelList` component.
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/error.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/error.mdx
new file mode 100644
index 0000000000..4437cec140
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/error.mdx
@@ -0,0 +1,5 @@
+True if a call to [query channels API call](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript) within `ChannelList` component results in error, either during first load or during pagination.
+
+| Type |
+| --------------------------- |
+| `Error Object` \| `Boolean` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/has_next_page.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/has_next_page.mdx
new file mode 100644
index 0000000000..6350cd511c
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/has_next_page.mdx
@@ -0,0 +1,5 @@
+False if `ChannelList` component has loaded all the channels corresponding to [`filters`](../../../core-components/channel-list.mdx#recommended-filters).
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/load_next_page.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/load_next_page.mdx
new file mode 100644
index 0000000000..0644ff9985
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/load_next_page.mdx
@@ -0,0 +1,5 @@
+Function to load next page for the `ChannelList` component.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_channels.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_channels.mdx
new file mode 100644
index 0000000000..c7110ff298
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_channels.mdx
@@ -0,0 +1,5 @@
+True if `ChannelList` component is loading the first page of channels.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_next_page.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_next_page.mdx
new file mode 100644
index 0000000000..3ff2663d9a
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/loading_next_page.mdx
@@ -0,0 +1,5 @@
+True if `ChannelList` component is loading more channels as part of pagination. This will be set to true when user scrolls to bottom of the list and [`hasNextPage`](../../../contexts/channels-context.mdx#hasnextpage) is true.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refresh_list.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refresh_list.mdx
new file mode 100644
index 0000000000..3f7b40faba
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refresh_list.mdx
@@ -0,0 +1,9 @@
+Function to manually re-sync or refresh the channels in `ChannelList` component.
+
+:::note
+Calling `refreshList` will trigger a [RefreshControl](https://reactnative.dev/docs/refreshcontrol) on underlying FlatList component.
+:::
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refreshing.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refreshing.mdx
new file mode 100644
index 0000000000..056e8a7bd6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/refreshing.mdx
@@ -0,0 +1,6 @@
+True if `ChannelList` component is refreshing the list (using [`refreshList`](#refreshlist) function call). Refreshing state will be triggered either when user executes pull-to-refresh gesture or if network connection is being recovered.
+This value is attached to [refreshing](https://reactnative.dev/docs/flatlist#refreshing) prop of underlying `FlatList` component of `ChannelList`.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/reload_list.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/reload_list.mdx
new file mode 100644
index 0000000000..020a55791c
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/channels-context/reload_list.mdx
@@ -0,0 +1,9 @@
+Function to manually reload the channels in `ChannelList` component.
+
+:::note
+Calling `reloadList` will wipe out the existing list of channels and show a loading indicator until new results are ready.
+:::
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_messages.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_messages.mdx
new file mode 100644
index 0000000000..04f63a6711
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_messages.mdx
@@ -0,0 +1,5 @@
+Setter for value [`messages`](../../../contexts/image-gallery-context.mdx#messages).
+
+| Type |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `(messages: [MessageType](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/hooks/useMessageList.ts)[]) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_selected_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_selected_message.mdx
new file mode 100644
index 0000000000..b348019847
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/image-gallery-context/set_selected_message.mdx
@@ -0,0 +1,5 @@
+Setter for value [`selectedMessage`](../../../contexts/image-gallery-context.mdx#selectedmessage).
+
+| Type |
+| ---------------------------------------------------------------- |
+| `(selectedMessage: {messageId?: string; url?: string;}) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/alignment.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/alignment.mdx
new file mode 100644
index 0000000000..31aad1109e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/alignment.mdx
@@ -0,0 +1,5 @@
+Sets if the message should be aligned to right or left side of list.
+
+| Type | Default |
+| --------------------- | ------- |
+| enum('right', 'left') | 'right' |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/disabled.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/disabled.mdx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/files.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/files.mdx
new file mode 100644
index 0000000000..828ffd5a06
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/files.mdx
@@ -0,0 +1,9 @@
+Array of `file` type attachments to be shown in the grouped UI component.
+
+```tsx
+const files = message.attachments.filter(a => a.type === 'file');
+```
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/group_styles.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/group_styles.mdx
new file mode 100644
index 0000000000..a6d0e0dfca
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/group_styles.mdx
@@ -0,0 +1,7 @@
+Position of message in the group. A message group is a group of consecutive messages from the same user. `groupStyles` can be used to style the message as per their position in message group.
+
+For example, user avatar (to which message belongs to) is only showed for last (bottom) message in group.
+
+| Type |
+| -------------------------------------------------- |
+| array of enum('top', 'bottom', 'middle', 'single') |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/handle_action.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/handle_action.mdx
new file mode 100644
index 0000000000..919625ee5b
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/handle_action.mdx
@@ -0,0 +1,5 @@
+Function to send an attachment action on message. For example, in case of `giphy` type attachments, there are 3 actions available - Shuffle, Cancel, Send.
+
+| Type |
+| ------------------------------------------ |
+| `(name: string, value: string) => Promise` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/has_reactions.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/has_reactions.mdx
new file mode 100644
index 0000000000..9877aa5a92
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/has_reactions.mdx
@@ -0,0 +1,5 @@
+True if the message has at least 1 reaction.
+
+| Type |
+| ------- |
+| boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/images.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/images.mdx
new file mode 100644
index 0000000000..78cc3016b4
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/images.mdx
@@ -0,0 +1,9 @@
+Array of `image` type attachments on message.
+
+```tsx
+const images = message.attachments.filter(a => a.type === 'image');
+```
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/is_my_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/is_my_message.mdx
new file mode 100644
index 0000000000..1f0b0cee9e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/is_my_message.mdx
@@ -0,0 +1,5 @@
+True if the message is sent by current user (connected to chat).
+
+| Type |
+| ------- |
+| boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/last_group_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/last_group_message.mdx
new file mode 100644
index 0000000000..e1e68fdaaa
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/last_group_message.mdx
@@ -0,0 +1,5 @@
+Whether or not this is the last message in a [group of messages](#groupstyles).
+
+| Type |
+| ------- |
+| boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message.mdx
new file mode 100644
index 0000000000..6ab664431b
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message.mdx
@@ -0,0 +1,5 @@
+Message object.
+
+| Type |
+| -------------- |
+| `Message` type |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message_content_order.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message_content_order.mdx
new file mode 100644
index 0000000000..26a3d0953a
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/message_content_order.mdx
@@ -0,0 +1,7 @@
+Order of message content.
+
+for example `['quoted_reply', 'attachments', 'file', 'gallery', 'text']`
+
+| Type |
+| ----- |
+| array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_long_press.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_long_press.mdx
new file mode 100644
index 0000000000..f2d35230dd
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_long_press.mdx
@@ -0,0 +1,5 @@
+Default long press handler for message UI.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_open_thread.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_open_thread.mdx
new file mode 100644
index 0000000000..aa4d1f6465
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_open_thread.mdx
@@ -0,0 +1,5 @@
+Handler function for "Thread Reply" action.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press.mdx
new file mode 100644
index 0000000000..31203f8cb5
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press.mdx
@@ -0,0 +1,5 @@
+Default press handler for message UI.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press_in.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press_in.mdx
new file mode 100644
index 0000000000..5d07cc5fa9
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/on_press_in.mdx
@@ -0,0 +1,5 @@
+Default `pressIn` handler for message UI.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/only_emojis.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/only_emojis.mdx
new file mode 100644
index 0000000000..89e8fe8f4f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/only_emojis.mdx
@@ -0,0 +1,5 @@
+True if the message text only contains emojis and nothing else.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/other_attachments.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/other_attachments.mdx
new file mode 100644
index 0000000000..313f7e2098
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/other_attachments.mdx
@@ -0,0 +1,5 @@
+All the attachments on the message except for types `file` and `image`.
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/prevent_press.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/prevent_press.mdx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/reactions.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/reactions.mdx
new file mode 100644
index 0000000000..0207eaf38a
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/reactions.mdx
@@ -0,0 +1,18 @@
+List of reactions added to the message.
+
+```tsx
+[
+ {
+ own: true,
+ type: 'love',
+ },
+ {
+ own: false,
+ type: 'haha',
+ },
+];
+```
+
+| Type |
+| ----- |
+| array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_avatar.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_avatar.mdx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_overlay.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_overlay.mdx
new file mode 100644
index 0000000000..cd85f03110
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_overlay.mdx
@@ -0,0 +1,5 @@
+Function to open the message action overlay. This function gets called when user long presses a message.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_status.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_status.mdx
new file mode 100644
index 0000000000..86bfffc551
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/show_message_status.mdx
@@ -0,0 +1,6 @@
+When false, message status (read receipt, pending state indicator) won't be rendered.
+By default, this value is true for messages sent by current user of chat.
+
+| Type |
+| --------- |
+| `boolean` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/thread_list.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/thread_list.mdx
new file mode 100644
index 0000000000..4926dd9975
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/thread_list.mdx
@@ -0,0 +1,5 @@
+True if current message is part of a message thread.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/videos.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/videos.mdx
new file mode 100644
index 0000000000..2d893a314f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-context/videos.mdx
@@ -0,0 +1,9 @@
+Array of `video` file attachments.
+
+```tsx
+const videos = message.attachments.filter(a => a.type === 'video' && !a.og_scrape_url);
+```
+
+| Type |
+| ----- |
+| array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/additional_text_input_props.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/additional_text_input_props.mdx
new file mode 100644
index 0000000000..ef0bbbe206
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/additional_text_input_props.mdx
@@ -0,0 +1,5 @@
+Additional props provided to the underlying [TextInput](https://reactnative.dev/docs/textinput#props) within [`MessageInput`](../../../ui-components/message-input.mdx).
+
+| Type |
+| ------ |
+| Object |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/append_text.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/append_text.mdx
new file mode 100644
index 0000000000..3ee60e6ce6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/append_text.mdx
@@ -0,0 +1,5 @@
+Appends text to existing text entered by user in `MessageInput` component.
+
+| Type |
+| ---------------- |
+| `(text) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_ids.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_ids.mdx
new file mode 100644
index 0000000000..bf4738bf86
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_ids.mdx
@@ -0,0 +1,5 @@
+Queue that stores the asset id, if user hit send before image uploaded.
+
+| Type |
+| ---------- |
+| `String[]` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_uploads.mdx
new file mode 100644
index 0000000000..50035e1c54
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/async_uploads.mdx
@@ -0,0 +1,5 @@
+It is of type Object with key as the asynchronous upload id, and value as an object containing file upload state and URL(`url`).
+
+| Type |
+| ------ |
+| Object |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_editing_state.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_editing_state.mdx
new file mode 100644
index 0000000000..2041d8e575
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_editing_state.mdx
@@ -0,0 +1,5 @@
+Function to clear "Editing Message" state from MessageInput component.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_quoted_message_state.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_quoted_message_state.mdx
new file mode 100644
index 0000000000..2a67699ec8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/clear_quoted_message_state.mdx
@@ -0,0 +1,5 @@
+Function to clear "Add Quoted Reply" state from MessageInput component.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/close_attachment_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/close_attachment_picker.mdx
new file mode 100644
index 0000000000..127f95f80b
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/close_attachment_picker.mdx
@@ -0,0 +1,5 @@
+Dismiss the attachment picker, if its already open.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/cooldown_ends_at.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/cooldown_ends_at.mdx
new file mode 100644
index 0000000000..b7fcb6d282
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/cooldown_ends_at.mdx
@@ -0,0 +1,5 @@
+The time at which the active cool-down will end.
+
+| Type |
+| ---- |
+| Date |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/edit_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/edit_message.mdx
new file mode 100644
index 0000000000..54c621e549
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/edit_message.mdx
@@ -0,0 +1,10 @@
+Handles the edit message event on the message input by taking the new message as input and updating the message for the client.
+
+| Type |
+| ---------------- |
+| Function \| null |
+
+| Parameter | Description |
+| --------- | ------------------------------- |
+| message | message the action is called on |
+| userId | The channel ID |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/editing.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/editing.mdx
new file mode 100644
index 0000000000..20d8625a5e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/editing.mdx
@@ -0,0 +1,5 @@
+Defined with message type if the user is editing some message within `MessageInput` component else its undefined.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/file_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/file_uploads.mdx
new file mode 100644
index 0000000000..5f5120e2d6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/file_uploads.mdx
@@ -0,0 +1,21 @@
+List of `file` type attachments currently attached to message, which is being composed in `MessageInput` component.
+
+```tsx
+[
+ {
+ file: {
+ name: 'test.pdf';
+ size: 2000;
+ type: 'application/pdf';
+ uri: 'file-uri';
+ };
+ id: 'asdas232bk3jb42k3';
+ state: 'uploaded'; // or 'finished'
+ url: 'https://cdn.getstream.io/kajsnkj2n3j4';
+ }
+]
+```
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/giphy_active.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/giphy_active.mdx
new file mode 100644
index 0000000000..4318e51e62
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/giphy_active.mdx
@@ -0,0 +1,6 @@
+True if a user selects the `giphy` command from commands list (which is shown when you type a `/` in the input box).
+This value is set back to `false` when the user sends the message for searching Giphy.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/image_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/image_uploads.mdx
new file mode 100644
index 0000000000..343acaa97f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/image_uploads.mdx
@@ -0,0 +1,16 @@
+List of `image` type attachments currently attached to message, which is being composed in `MessageInput` component.
+
+```tsx
+[
+ {
+ file: { name: 'fallback-name.jpeg' },
+ id: '2j3n4k23nj4k23n4k3',
+ state: 'finished', // or 'uploading'
+ url: 'https://cdn.getstream.io/kajsnkj2n3j4', // If the state is `uploading`, then this will be a local uri of image.
+ },
+];
+```
+
+| Type |
+| ----- |
+| Array |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/input_box_ref.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/input_box_ref.mdx
new file mode 100644
index 0000000000..b25c9fd690
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/input_box_ref.mdx
@@ -0,0 +1,5 @@
+Ref for [`TextInput`](https://reactnative.dev/docs/textinput) component within `MessageInput`
+
+| Type |
+| ----------------------------------------------------------------------------------------- |
+| [React ref](https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element) |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/is_valid_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/is_valid_message.mdx
new file mode 100644
index 0000000000..339ab5f38e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/is_valid_message.mdx
@@ -0,0 +1,5 @@
+False if text within input box is empty and no images or files have been attached to a message yet. You can use this value to add enabled/disabled UI state on SendMessage button.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/mentioned_users.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/mentioned_users.mdx
new file mode 100644
index 0000000000..2848f5e5a6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/mentioned_users.mdx
@@ -0,0 +1,9 @@
+Ids of users which are mentioned (for example `Hey @Vishal Narkhede, how are you`) in a message, which is being composed in MessageInput component.
+
+```tsx
+['vishal-user-id', 'jaap-user-id'];
+```
+
+| Type |
+| -------- |
+| String[] |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/number_of_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/number_of_uploads.mdx
new file mode 100644
index 0000000000..5a1601995c
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/number_of_uploads.mdx
@@ -0,0 +1,5 @@
+Number of image + files attached to message which is being composed in `MessageInput` component.
+
+| Type |
+| ------ |
+| Number |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/on_change.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/on_change.mdx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_attachment_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_attachment_picker.mdx
new file mode 100644
index 0000000000..a45cf1984c
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_attachment_picker.mdx
@@ -0,0 +1,5 @@
+Opens the attachment picker bottom sheet, if its not open.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_commands_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_commands_picker.mdx
new file mode 100644
index 0000000000..43052f9cc7
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_commands_picker.mdx
@@ -0,0 +1,5 @@
+Opens the commands picker box. By default, this function is attached to `onPress` handler for [`CommandsButton`](../../../core-components/channel.mdx#commandsbutton).
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_file_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_file_picker.mdx
new file mode 100644
index 0000000000..48025d21d8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_file_picker.mdx
@@ -0,0 +1,5 @@
+Opens the file picker. By default, this function is attached to `onPress` handler for [`FileAttachmentIcon`](../../../core-components/channel.mdx#fileattachmenticon).
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_mentions_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_mentions_picker.mdx
new file mode 100644
index 0000000000..4e9789dde8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/open_mentions_picker.mdx
@@ -0,0 +1,5 @@
+Opens the user mentions autocomplete popup. When user types `@` in input box, internally this function gets called.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/pick_and_upload_image_from_native_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/pick_and_upload_image_from_native_picker.mdx
new file mode 100644
index 0000000000..7edd58ce1c
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/pick_and_upload_image_from_native_picker.mdx
@@ -0,0 +1,5 @@
+Opens the native image picker and uploads the selected image.
+
+| Type |
+| --------------------- |
+| `() => Promise` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/quoted_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/quoted_message.mdx
new file mode 100644
index 0000000000..c3a10fcfdc
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/quoted_message.mdx
@@ -0,0 +1,5 @@
+Message that is quoted to the original message
+
+| Type |
+| --------------------------- |
+| `Boolean` \| `Message` type |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_file.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_file.mdx
new file mode 100644
index 0000000000..d7f058d61a
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_file.mdx
@@ -0,0 +1,6 @@
+Removes attached file in message, which is being composed in `MessageInput` component. By default, this function is attached to `onPress` handler for close button in [FileUploadPreview](../../../core-components/channel.mdx#fileuploadpreview).
+It takes a string ID of the file to be removed in the [`fileUploads`](../../../contexts/message-input-context.mdx#fileuploads) array as parameter.
+
+| Type |
+| ---------------------- |
+| `(id: string) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_image.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_image.mdx
new file mode 100644
index 0000000000..0064025f86
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/remove_image.mdx
@@ -0,0 +1,6 @@
+Removes an attached image in a message being composed in the `MessageInput` component. By default, this function is attached to `onPress` handler for close button in [ImageUploadPreview](../../../core-components/channel.mdx#imageuploadpreview).
+It takes a string ID of the image to be removed in the [`imageUploads`](../../../contexts/message-input-context.mdx#imageuploads) array as parameter.
+
+| Type |
+| ---------------------- |
+| `(id: string) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/reset_input.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/reset_input.mdx
new file mode 100644
index 0000000000..111255df1b
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/reset_input.mdx
@@ -0,0 +1,5 @@
+Resets the entire `MessageInput` component to empty state by clearing the text, attachments etc.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_message.mdx
new file mode 100644
index 0000000000..53fd62c71f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_message.mdx
@@ -0,0 +1,6 @@
+Sends a composed message within `MessageInput` component to channel. This function is attached to `onPress` handler of [`SendButton`](../../../core-components/channel.mdx#sendbutton). The message optimistically gets added to message list UI first, before actually making API call to server.
+During this intermediate stage, MessageStatus component will display an indicator for "pending" state.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_message_async.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_message_async.mdx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_thread_message_in_channel.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_thread_message_in_channel.mdx
new file mode 100644
index 0000000000..70260c6d72
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/send_thread_message_in_channel.mdx
@@ -0,0 +1,6 @@
+This value is only applicable to `Thread` component. When value `sendThreadMessageInChannel` is true, message gets sent from `MessageInput` component with property `show_in_channel: true`.
+This value is attached to the checkbox (with label "Also Send To Channel") in `MessageInput` component within `Thread` component.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_file_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_file_uploads.mdx
new file mode 100644
index 0000000000..a290c89b41
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_file_uploads.mdx
@@ -0,0 +1,5 @@
+Setter function for [`fileUploads`](../../../contexts/message-input-context.mdx#fileuploads).
+
+| Type |
+| ----------------- |
+| `(files) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_giphy_active.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_giphy_active.mdx
new file mode 100644
index 0000000000..5a428ad57e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_giphy_active.mdx
@@ -0,0 +1,5 @@
+Setter function for [`giphyActive`](../../../contexts/message-input-context.mdx#giphyactive)
+
+| Type |
+| -------------------- |
+| `(isActive) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_image_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_image_uploads.mdx
new file mode 100644
index 0000000000..73ea255cb6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_image_uploads.mdx
@@ -0,0 +1,5 @@
+Setter function for [`imageUploads`](../../../contexts/message-input-context.mdx#imageuploads).
+
+| Type |
+| ------------------ |
+| `(images) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_input_box_ref.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_input_box_ref.mdx
new file mode 100644
index 0000000000..acda46224f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_input_box_ref.mdx
@@ -0,0 +1,5 @@
+Setter function for [`inputBoxRef`](../../../contexts/message-input-context.mdx#inputboxref)
+
+| Type |
+| --------------- |
+| `(ref) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_mentioned_users.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_mentioned_users.mdx
new file mode 100644
index 0000000000..974c9c3eb8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_mentioned_users.mdx
@@ -0,0 +1,5 @@
+Setter function for [`mentionedUsers`](../../../contexts/message-input-context.mdx#mentionedusers)
+
+| Type |
+| -------------------------- |
+| `(mentionedUsers) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_number_of_uploads.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_number_of_uploads.mdx
new file mode 100644
index 0000000000..93bc1ab3b8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_number_of_uploads.mdx
@@ -0,0 +1,5 @@
+Setter function for [`numberOfUploads`](../../../contexts/message-input-context.mdx#numberofuploads)
+
+| Type |
+| --------------------------- |
+| `(numberOfUploads) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_send_thread_message_in_channel.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_send_thread_message_in_channel.mdx
new file mode 100644
index 0000000000..55af961141
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_send_thread_message_in_channel.mdx
@@ -0,0 +1,5 @@
+Setter function for [`setSendThreadMessageInChannel`](../../../contexts/message-input-context.mdx#setsendthreadmessageinchannel).
+
+| Type |
+| -------------------------------------- |
+| `(sendThreadMessageInChannel) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_show_more_options.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_show_more_options.mdx
new file mode 100644
index 0000000000..d7e360ea2f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_show_more_options.mdx
@@ -0,0 +1,5 @@
+Setter function for [`showMoreOptions`](../../../contexts/message-input-context.mdx#showmoreoptions).
+
+| Type |
+| --------------------------- |
+| `(showMoreOptions) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_text.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_text.mdx
new file mode 100644
index 0000000000..b07ed4fd32
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/set_text.mdx
@@ -0,0 +1,5 @@
+Setter function for [`text`](../../../contexts/message-input-context.mdx#text).
+
+| Type |
+| ---------------- |
+| `(text) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/show_more_options.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/show_more_options.mdx
new file mode 100644
index 0000000000..3f20364e85
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/show_more_options.mdx
@@ -0,0 +1,5 @@
+Represents the expanded or collapsed state for attach and commands button, next to input box.
+
+| Type |
+| ------- |
+| Boolean |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/take_and_upload_image.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/take_and_upload_image.mdx
new file mode 100644
index 0000000000..a3570befac
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/take_and_upload_image.mdx
@@ -0,0 +1,5 @@
+Function to click an image using the device camera and upload it.
+
+| Type |
+| --------------------- |
+| `() => Promise` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/text.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/text.mdx
new file mode 100644
index 0000000000..f48afc7c77
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/text.mdx
@@ -0,0 +1,6 @@
+Text message entered by user in underlying [`TextInput`](https://reactnative.dev/docs/textinput) within `MessageInput` component.
+This value is attached to `TextInput`'s [`value prop`](https://reactnative.dev/docs/textinput#value)
+
+| Type |
+| ------ |
+| String |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/toggle_attachment_picker.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/toggle_attachment_picker.mdx
new file mode 100644
index 0000000000..a24176a5f3
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/toggle_attachment_picker.mdx
@@ -0,0 +1,5 @@
+Function to toggle attachment picker. By default, this function is attached to `onPress` handler for [`AttachButton`](../../../core-components/channel.mdx#attachbutton).
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/trigger_settings.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/trigger_settings.mdx
new file mode 100644
index 0000000000..8f20c281ce
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/trigger_settings.mdx
@@ -0,0 +1,5 @@
+Trigger settings for the auto complete input.
+
+| Type | Default |
+| ------ | --------------------------------------------------------------------------------------------------------------------- |
+| Object | [TriggerSettings](https://github.com/GetStream/stream-chat-react-native/blob/develop/package/src/utils/utils.ts#L177) |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/update_message.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/update_message.mdx
new file mode 100644
index 0000000000..89bd465fb8
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/update_message.mdx
@@ -0,0 +1,6 @@
+This function is a counterpart of [`sendMessage`](#sendmessage), for the case of editing a message. This function is attached to [`SendButton`](../../../core-components/channel.mdx#sendbutton) when some existing message is being updated.
+Similar to `sendMessage` function, the message will be updated in message list UI first, before making API call to update the message.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_file.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_file.mdx
new file mode 100644
index 0000000000..bbb54482ce
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_file.mdx
@@ -0,0 +1,5 @@
+This function is used internally by [`uploadNewFile`](../../../contexts/message-input-context.mdx#uploadnewfile) function, and is used for purpose retry mechanism.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_image.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_image.mdx
new file mode 100644
index 0000000000..57a6f4a39b
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_image.mdx
@@ -0,0 +1,5 @@
+This function is used internally by [`uploadNewImage`](../../../contexts/message-input-context.mdx#uploadnewimage) function, and is used for purpose retry mechanism.
+
+| Type |
+| -------- |
+| Function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_file.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_file.mdx
new file mode 100644
index 0000000000..61ed9402d6
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_file.mdx
@@ -0,0 +1,6 @@
+Function to upload an attached file in `MessageInput`. This function adds a file to [`fileUploads`](../../../contexts/message-input-context.mdx#fileuploads) array and calls `channel.sendFile`.
+This function takes a file from [react-native-document-picker](https://www.npmjs.com/package/react-native-document-picker) as parameter.
+
+| Type |
+| ------------------- |
+| `(file) => Promise` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_image.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_image.mdx
new file mode 100644
index 0000000000..18cdfd6301
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-input-context/upload_new_image.mdx
@@ -0,0 +1,5 @@
+Function to upload an attached image in `MessageInput`. This function takes a image from `imageUploads` array as a parameter.
+
+| Type |
+| -------------------- |
+| `(image) => Promise` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-overlay-context/data.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-overlay-context/data.mdx
new file mode 100644
index 0000000000..9087fba502
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/message-overlay-context/data.mdx
@@ -0,0 +1,83 @@
+import MessageActions from '../../ui-components/channel/props/message_actions.mdx';
+import SupportedReactions from '../../ui-components/channel/props/supported_reactions.mdx';
+import OverlayReactionList from '../../ui-components/overlay-provider/props/overlay_reaction_list.mdx';
+import HandleReaction from '../../ui-components/channel/props/handle_reaction.mdx';
+
+import Alignment from '../message-context/alignment.mdx';
+import Files from '../message-context/files.mdx';
+import GroupStyles from '../message-context/group_styles.mdx';
+import Images from '../message-context/images.mdx';
+import MessageProp from '../message-context/message.mdx';
+import OnlyEmojis from '../message-context/only_emojis.mdx';
+import OtherAttachments from '../message-context/other_attachments.mdx';
+import ThreadList from '../message-context/thread_list.mdx';
+
+This is an object with following keys:
+
+- `alignment`
+
+
+
+- `clientId`
+
+Id of the current user connected to the chat.
+
+| Type |
+| ------ |
+| String |
+
+- `files`
+
+
+
+- `groupStyles`
+
+
+
+- `handleReaction`
+
+
+
+- `images`
+
+
+
+- `message`
+
+
+
+- `messageActions`
+
+
+
+- `messageReactionTitle`
+
+Title for `MessageReactions` component.
+
+| Type | Default |
+| ------ | ------------------- |
+| String | "Message Reactions" |
+
+- `messagesContext`
+
+Entire value object of [MessagesContext](../../../contexts/messages-context.mdx#value)
+
+- `onlyEmojis`
+
+
+
+- `otherAttachments`
+
+
+
+- `OverlayReactionList`
+
+
+
+- `supportedReactions`
+
+
+
+- `threadList`
+
+
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/overlay-context/set_overlay.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/overlay-context/set_overlay.mdx
new file mode 100644
index 0000000000..a72e2ea6a5
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/overlay-context/set_overlay.mdx
@@ -0,0 +1,5 @@
+Setter for [`overlay`](../../../contexts/overlay-context.mdx#overlay). You can use this setter to show the overlay.
+
+| Type |
+| ------------------- |
+| `(overlay) => void` |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/close_suggestions.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/close_suggestions.mdx
new file mode 100644
index 0000000000..fb1d8c4b6f
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/close_suggestions.mdx
@@ -0,0 +1,5 @@
+Function to close the autocomplete suggestions popup.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/open_suggestions.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/open_suggestions.mdx
new file mode 100644
index 0000000000..89fb7e4175
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/open_suggestions.mdx
@@ -0,0 +1,10 @@
+Function to open the autocomplete suggestions popup. This function takes following two parameters:
+
+- `component` - You can either pass a string or a react element.
+ - string - `enum('MentionsItem' | 'CommandsItem' | 'EmojisItem')`. Based on value, one of the default components will be rendered as list item within suggestions list.
+ - element - React element which takes `item` as a prop, which is a suggestion item within list set using `updateSuggestions`. This element is used to render item in the suggestions list.
+- `title` - component to render a title for suggestions list.
+
+| Type |
+| -------- |
+| function |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/query_text.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/query_text.mdx
new file mode 100644
index 0000000000..e007a2ee4e
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/query_text.mdx
@@ -0,0 +1,5 @@
+The text which the user types in the message input to get autocomplete suggestions.
+
+| Type |
+| ------ |
+| string |
diff --git a/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/suggestions.mdx b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/suggestions.mdx
new file mode 100644
index 0000000000..13a84619fa
--- /dev/null
+++ b/docusaurus/reactnative_versioned_docs/version-5.x.x/common-content/contexts/suggestions-context/suggestions.mdx
@@ -0,0 +1,5 @@
+Current active list of suggestions, within suggestions list for autocomplete feature.
+
+| Type |
+| ---------------------------------------------------------------- |
+| `{ data: array