Yes of course it’s still great to have some starter bindings for popular libraries, or piggyback off existing work that’s out there. ReScript has a minimalistic Package Index to search for some pre-existing bindings, but the workflows are kinda different to e.g. DefinitelyTyped / TypeScript due to the nature on how ReScript works.
In ReScript, bindings can be written in different styles and flavours, introducing extra runtime code, some of them adding complex typing layers, or targeting a specific subset of the API (and tailor specific types for them. e.g via configurable modules via Functors etc.). It’s very hard to draw the line on what is an idiomatic binding. Many feature-rich bindings tend to get a little overwhelming and you spend a great amount of time trying to make sense out of the APIs (oftentimes reading interface files), sometimes keeping the equivalent JS docs open for comparison, because some do change the names of functions, or fine tune parameters. At least for me, it was often easier to just copy paste the interesting parts and adapt it before trying to stick to upstream.
The ReScript type system is also strict and isn’t just “types on top of JS”, it’s more than that, which means that writing generally applicable bindings is a very tough job, with a lot of decision making on what APIs to expose, and in what format (and how configurable these settings should be). TypeScript users have an easier time there, because they can just blob any
types whenever they hit some roadblock in an interface, and they also have all the JS semantics at hand without thinking about interop.
So I guess the general advice that is being made here in the docs is that people shouldn’t feel afraid writing adhoc external
statements / binding files as they go. It’s an essential skill that one has to acquire to really get the most out of the language.
As an example on how I distribute some of my work: In my rescript-nextjs-starter repo, I ship a basic Next.res
binding and give the advice to not be afraid of changing / refining it for their use-cases. It would get out of hands if I’d go and try to write a feature complete Next binding, without even knowing what those bindings are being used for.