I tried the hexagonal / ports and adapters architecture in a rescript app as well. I had the same questions in mind. Should I pass single functions, records of functions or modules. Since I didn’t have to define different types for different implementations, module functions were a bit of an overhead. The verbose syntax bothered me.
As always: Use the solution most convenient to you.
I would like to see more articles like Full-stack ReScript. Architecture Overview | Full Steak Dev, where someone explains how he / she structures their applications.