The problem is that youre subscribing multiple times and not waiting for the subscription to be ready before fetching the data. To fix this, you only need to subscribe once in componentDidMount and check if the subscription is ready using ready(). Then, you can use Tracker.autorun() to reactively fetch and update the messages when they change.