Довольно интересный получился эксперимент и в целом результат положительный, но не обошлось без шероховаточтей.
Во-первых, генератор типов graphql-code-generator офигел от фрагментов с юнионами и наплодил неиспользуемых дубликатов, из-за чего пришлось добавить в шаблон // @ts-nocheck, чтобы typescript не ругался на неиспользуемые переменные.
Вот здесь обсуждение: https://github.com/dotansimha/graphql-code-generator/issues/4008
Во-вторых, аполло-клиент так же троит с юнионами и просит указывать possibleTypes, чтобы мемори-кеш понимал такие фрагменты. Указал.
В остальном вроде все ОК и положительный эффект имеется. Теперь не только исбавился от необходимости указывать условие для выборки документов по parent или template (вместо этого получил два отдельных запроса reviews и topics), но и получилось создать отдельный фрагмент topic, и указать его тип в карточке топика, чтобы во вьюху можно было передавать данные именно этих типов ресурсов, но не другие (как то Компания, Город или просто Resource).