I created a conversation collection in Firestore where each document represents an ongoing conversation between multiple users, and then a messages collection where each document represents a message sent to the conversation. A message contains the reference to the conversation it was sent to, so when a conversation is opened, it fetches the messages that contain its reference. I could connect to these collections from the app, so any changes made, whether to a conversation document, or a new message document created due to a text sent by a user, I could immediately update any running app that was directly involved with such conversation and reflect the new changes.