I usually use a module type abstraction for it. Something like:
module type Entry = {
type loaderData
let element: unit => React.element
}
It adds overhead but it’s just wrap/unwrap. And I guess it doesn’t invalidate memoization in the specific usecase