Вот здесь ты точно накосячил. Потому что getBeersVariables() у тебя возвращает объект {variables, page}, а ты это еще в variables скармливаешь (на уровень вглубь). Это все потому что ты в запрос в генерик не передал второй тип-параметр - BeersConnectionQueryVariables. Вот так:

const result = await apolloClient.query<BeersConnectionQuery, BeersConnectionQueryVariables>({ query: BeersConnectionDocument, /** * Важно, чтобы все переменные запроса серверные и фронтовые совпадали, * иначе при рендеринге не будут получены данные из кеша и рендер будет пустой. */ variables: { ...getBeersVariables({ query }), }, })
Вот передал бы, и получил ошибку:
Type '{ variables: Exact<{ where?: Maybe<BeerWhereInput> | undefined; orderBy?: Maybe<BeerOrderByInput> | undefined; first?: Maybe<number> | undefined; skip?: Maybe<...> | undefined; }>; page: number; }' has no properties in common with type 'Exact<{ where?: Maybe<BeerWhereInput> | undefined; orderBy?: Maybe<BeerOrderByInput> | undefined; first?: Maybe<number> | undefined; skip?: Maybe<...> | undefined; }>'.ts(2559)
UPD: Итоговый вариант вот такой:

BeersPage.getInitialProps = async ({ apolloClient, query }) => { const { variables } = getBeersVariables({ query }) const result = await apolloClient.query< BeersConnectionQuery, BeersConnectionQueryVariables >({ query: BeersConnectionDocument, /** * Важно, чтобы все переменные запроса серверные и фронтовые совпадали, * иначе при рендеринге не будут получены данные из кеша и рендер будет пустой. */ variables, }) return { statusCode: !result.data.beersConnection.edges.length ? 404 : undefined, } } export default BeersPage

А так у тебя, если отключить JS, с сервера сотраница приходит без списка пива.