My view may not be really an “expert” one, as I’m only writing OCaml extensively for a month or so. But IMO the biggest disadvantage is that OCaml is really “advanced”, which limits the availability of developers quite a lot. Most people (even really smart ones) won’t go into the trouble of learning it, because they can do what they need (and they also can put food on the table) with much less trouble.
I am trying to start a business right now and I am betting on OCaml/Bucklescript, but I think this might be a serious challenge (finding employees) in the future.
Of course, once you know it, it feels really powerful and saves you lots of trouble, but it’s really a hard sell so that’s how I plan on offsetting the stated problem (not hiring coders until I can afford to pay really well)
On the technical side I can find many disadvantages if I compare it to something like Erlang (I come from that background), but it also excels in the parts where Erlang falls short, so the two are a very good combination. Eg. If you want to use websockets extensively on you web service, I’d choose Erlang any day. In general, everything that has lots of parallel IO - better go with Erlang - it’s the best platform for that kind of things.
Indeed, for my project I plan on using Erlang to orchestrate and route communication between OCaml executables, so it will be something like
Bucklescript <--> Internet <--> Erlang <--> OCaml.
Of course, one could probably go without the Erlang part and use some OCaml web framework, but in my case it’s just easier and faster (to build) this way.