We recently added an experimental API to enable exactly this: defer data that you only access within an event handler.
waitForFragmentData: relay.dev/docs/next/api-…
The fragments that are used only in an event make me think that @RelayFramework has a missing primitive: the ability to defer a fragment and read it, without suspending, but instead to get a promise that resolves with the deferred fragment's value.
Relay v16.2.0 has been released. It includes support for the new @preloadable directive and also contains a minor breaking change to the configuration. You can find more information in the release notes here: