Эта проблема

Если у вас есть такой код реле:

import { Suspense } from "react";
import { graphql } from "relay-runtime";
import { useLazyLoadQuery } from "react-relay";
const RelayTestQuery = graphql`
  query RelayTestQuery {
    viewer {
      id
    }
  }
`;
function RelayTestInner() {
  const data = useLazyLoadQuery(RelayTestQuery, {
    variables: {},
  });
  return <div>hi</div>;
}
export default function RelayTest() {
  return (
    <Suspense fallback={<div>Loading</div>}>
      <RelayTestInner />
    </Suspense>
  );
}

И вы визуализируете это так:

export default function Home() {
  return (
    <RelayEnvironmentProvider environment={RelayEnvironment}>
      <RelayTest />
    </RelayEnvironmentProvider>
  );
}

то вы получите эту ошибку:

Решение

Динамический импорт

Чтобы исправить это, вы можете вместо этого использовать RelayTestDynamic:

import dynamic from "next/dynamic";
const RelayTestDynamic = dynamic(() => import("./RelayTest"), {
  ssr: false,
});
export default RelayTestDynamic;

Это немного раздражает, и если ваши компоненты, использующие Relay, видны при начальной загрузке (вероятно, так и есть), это плохо для производительности (теперь браузеру нужно сделать еще один запрос JS, который мог быть отправлен в первоначальном ответе).

Альфа-версии

В качестве альтернативы вы можете использовать альфа-версии react и react-dom.

yarn add react@alpha react-dom@alpha

В альфа-версиях динамический импорт больше не требуется. Это приводит к некоторым предупреждениям, но, похоже, все работает нормально.

О TSConfig

Https://github.com/relay-tools/relay-compiler-language-typescript#typescript упоминает следующее:

Также обязательно сконфигурируйте компилятор TypeScript для транспиляции в es2015 модулей и оставьте транспиляцию в commonjs модулей до Babel со следующими tsconfig.json настройками:

Я обнаружил, что в этом нет необходимости. Не уверен, почему, может быть, это не применимо при использовании перехватчиков реле?

Посмотрите на эти репозитории примеры.

TL; DR: либо используйте динамический импорт, либо используйте альфа-версию React 18 https://github.com/reactwg/react-18/discussions/9