Ranked in these QuestionsQuestion Ranking
Pro Type Inferred
Opa uses type inference to decide what code runs on the client or the server, so you can organize code how you like, but still be sure that it runs where it needs to.
Pro Client and Server in the same language
Pro Superior type inference
Ocaml type inference is so smart that you never have to repeat yourself and keep code very clean, type errors also are very pleasant
The same reasonml code can compile to js (eg. run on browsers or node.js, use any lib in npm), or compile to assembly thru ocaml (unless of course you load js externals), running on any device, with C-comparable (or better) performance.
Pro Immutability with escape hatches
reason includes true immutability, but it has escape hatches to let you use mutations in exceptional cases.
Pro JSX syntax natively supoorted
reason was created by the creator of react, for developers already using JSX to template web or native UIs this results very familiar
Con Not popular
Con A standard async syntax is pending
Async syntax is not standard across native/js projects and in both cases a bit awkward for non-ocaml devs. Currently this is reasonml most voted issue in their GitHub repo so hopefully, there's news soon.