Во-первых, flatMap уже deprecated и вместо него в 90% случаев сойдёт switchMap.
Во-вторых, ushift это очень дорогостоющая операция и ее лучше не использовать.
Втретьих, явно вызвать subscribe ради того, чтобы обновить массив posts тоже не хорошо.
В идеале данные надо выводить сразу в шаблоне через async pipe и кэшировать посты с помощью оператора scan (как раз таки с помощью scan можно будет просто написать return [ curr, ...acc ] вместо использования unshift'a). Ну и чтобы при каждом изменении ангуляр не рендерил весь твой список постов каждый раз снова и снова, используй trackBy по id поста. Так ангуляр будет рендерить только то, что изменилось.