RescriptReact vs ReasonReact?

Can someone explain why ReasonReact is deprecated per the Readme?

RescriptRescript is supposed to be its own thing, has its own repository. Rescript is its own language. Why does that affect ReasonReact?

Thank you.

Hey! It’s not supposed to be its own thing, since the project and initiative has always been part of the ReScript (prev BuckleScript) platform.

Keeping the ReasonReact naming around would be confusing, that’s why we realigned it to ˋ@rescript/reactˋ. Existing ReasonReact code will continue to compile, but we slowly want to encourage our users to upgrade to the latest rescript/react package to receive future updates and patches. We also want to make sure that our new users don’t depend on our legacy bindings.

The related RFC can be found here.


Tldr it’s like the move from the npm bs-platform to rescript package. Same code, a few additions and removals as a cleanup, less confusing branding.

1 Like

There is Reason React in the wild everywhere. This project has been explicit about it not being Reason, thus, the rebranding. There is a new repo for Rescript/React. Why not point people to that repo instead of deprecating? Why not just tell folks, if you want to hot Rescript stuff, check out this link. They way its set up now people would not be on that repo unless they were trying to do some Reason work. People might even want to contribute to it. For example, cutting a last release which includes the stringToComponent function would be the decent thing to do.

This feel a lot like I'm taking my ball and going home if committed to a reasonml codebase for whatever reason.

I love what you all are doing here with the code. I do not love what you are doing with what feels like white-washing ReasonML for the web. ReasonML for the web already happened. You should consider just letting it be and moving on from it. It would be less work after all and one less thing to worry about.

Let me ask the question? Why does the it feel like the Rescript project both wants to move on from ReasonML/do its own thing and also keep dipping back into ReasonML to channel people to this project? Its open source after all. It feels like this team believes that history owes it something.

Example of unnecessary dipping back are closing the React/ReactNative channels on discord in addition to deprecating the ReasonReact repo. Here is an idea from another project:

This project is unmaintained. Pull requests won’t be reviewed. If you would like to contribute, please request a transfer to ocaml-community.

The project is there but people have moved on. That is ok. Its allowed.

The question then is, what is the Rescript projects expectation regarding the ReasonML history that preceded Rescript? What kind of engagement should people involved in ReasonML on the web expect from Rescipt in addition to the kinds of things, noted above, that have happened so far?


PS. Nice work in the latest release.


I’d like to point out that if you visit once in a while to ask such heavy, drama-inducing questions for all parties, that you also put in a proportional amount of work into your thoughts and suggestions as to at least not trivialize the situation. It’s pretty clear from everyone involved that dumping ReasonReact onto this particular ocaml-community org makes no sense at all both technically and socially; It’s irresponsible to just throw such a critical package onto the other side and hoping that the maintainers there, who have no context whatsoever and have way higher/different priorities, figure it out.

I’d like to also suggest that you read the links we repeatedly provided all this time to you here and elsewhere, and that you try to, again, put some thought and work into what you’re asking and doing; if you did, you could have realized that your requested stringToComponent feature already shipped 3 months ago in @rescript/react, which is literally ReasonReact but with .re converted to .res. I’ll direct you once again to the README, which I’ve rephrased just in case it’s still not clear yet.

Those are migration paths and backward-compat concerns; keeping in touch with folks who are still behind (or choose to stay behind) is crucial in ensuring that we find them good solutions. There are plenty of folks posting on this forum who are on the old stack for whatever reason; we’re supposed to know of their trouble. Pause and think a bit about what you’re suggesting here; it seems to be going against your own interest. Also, consider that if we renamed bs-mylib to rescript-mylib, you wouldn’t bat an eye; reason-react is literally just bs-platform-powered React bindings except instead of bs-react we called it reason-react. The naming is supposed to be updated just like all other bs-platform packages. I’m not sure why we’re even talking about this. It’s not like we went and changed some jsoo-react to rescript-react

? We owe it to the community and to ourselves to stay accountable to the repo, since we wrote it, and to keep the existing codebases working if they haven’t upgraded or won’t upgrade. And we’ve been doing exactly that: backward compat with Reason syntax, API compat including the one you asked but missed, and for those that do move over, migration guides.

Thanks… I hope I didn’t just get compliment-sandwich-ed?


ReasonReact code was alway made to be a perfect fit to work with bs-platform and for things like JSOO/Native ReasonML people would always create their own JSOO-fit bindings so it really doesn’t make sense to move ReasonReact to an OCaml community org.


I would be happy to maintain a library called reason-react for you for a full-time senior software engineer’s salary. If not, it’s best to let the people doing the actual work decide both what name they want it to have and what direction they want the project to be developed in the future.


First thanks for all you do and I am happy to be here. You were not compliment sandwiched I dont think since I was being sincere. I’m just trying to help you all out on the communicatons, you can do with it what you will. Its usually safe to say that if I am thinking/seeing it, than others might be thinking/seeing too. That is cleary the case here as evidenced by other posts. I am pointing out some things that are low hanging fruit and addressable assuming I undestand your intentions clearly. My understanding is the Rescript is a new language with intentions to change/break with the always OCaml compatible idea. I wont go look for the quote. Its been said to many times. The statement has been supported by introducing changes that break code that would have worked before. That is allowed and I am not trying to say you should not do that. But you can’t both do that and make the next statement.

Its the same code, yes, but breaks under my random-ppx or random [deriving] tag. So its not really the same and probably worth differentiating. So maybe that is why you did differeniate it with a new repo. Good Idea! To be clear, this is not specific to the React bindings.

It was an example about how to go about things, which happened to come from ocaml-community. Here is another where requirements have changed and the last release is noted. Again this is an example. There seems to be some open source type spirit of conduct going on.

> Since version 0.19.0, Opium uses httpaf. The last version that used Cohttp can be found at 0.18.0)

If I am not expressing this clearly, checkout the pages for etc. Probably huge teams, but the opium example above achieves the same thing in that one-liner.

Listen folks. The point is that there seems to be a misalignement in what you say and what you do. I may not be a classicaly trained programmer, but I do have some experience in decifering messaging versus action, and my spidy senses are tingling. People talk about trust and how they feel they can’t trust Rescript yet. You have to try to understand why if you want to get more people in here.

Let me leave you with an example of what I am talking about. In addition to the examples in my original post, if you go to the ReasonML, not Rescript, discord server, you will see the aforementioned closed channels listed at the bottom. The React channel, which has only ever been about Reason/React has been renamed Rescript. Why on earth would you spend energy going back to do that? If you had to rename it to open back up a React channel, rename it to reason-react or something relevant to its contents and so people can find that content under a relevant title. Another thought is why not just open up a new Discord Server for Rescript? It would further your stated desire to differentiate. Instead, now, we have a new React channel to discuss Rescript in the ReasonML discord server. This give me the impression that Rescript is not its own language or if it is, that ReasonML belongs to it some kind of way. You have literally erased what was the ReasonReact title from the headings.

If you don’t understand what I am saying, or if its of no use to you, please feel free to disregard it. I’m trying to take the time to say something that I think might be of use to you. This will not affect me personally. I know where to find everything and how to ask a question if not. People will judge this project by how it respects its users and Rescript doesn’t seem to be winning on that account so maybe a thing to consider. Or not.

Peace/Love and continued success.

1 Like

It’s so incredibly draining talking about this, so I’m gonna reply hopefully one last time.

I don’t know how many times we need to emphasize that userland needs to be judicious about PPXes. PPXes lets you do anything, and breaks all possible invariants; if you drag in “random” ones then all bets are off and you better have the expertise to debug them. They can literally read into other files, change some configs, grep on a package name, etc. PPX isn’t something you mindlessly drag in without seriously weighting the tradeoffs: this is agreed upon by everyone. The fact that your peculiar setup breaks with a small rename says more about its brittleness than anything else. How is anyone suppose to upgrade any library if any small change breaks your setup?

You get to blame us if we recommended said brittle setup: I challenge you to point to any post we’ve made anywhere that told you to go into that direction.


  • This doesn’t mean we gratuitously break PPX stuff; it just means that, again, if you drag in arbitrary ones then you need to take responsiblity, rather than continuously blaming the team.
  • Most people here deal with the tradeoffs just fine and when their own choice breaks, as frustrated as they are, they never come rant at us. Aside from one recent misunderstanding, nobody made a public drama out of this except this thread.

You generalized your one bespoke setup breakage (that we’ve repeatedly ask folks to be careful about) to our lack of “open source type spirit of conduct”.

Since you keep “offering” us advices, lemme offer one back: the amount of negativity you bring has to be proportional to the amount of positivity.

Again, I just don’t know if you read our links or even your links anymore. That page is a 404.

That’s fine. We’ve mentored plenty of atypical career paths and welcome them. But you need to keep these in mind:

  • We’re a team of experienced programmers.
  • We do make mistakes.
  • But the fact that you constantly feel that we are the ones making mistakes, and never you, does not look statically right. Nobody else we’ve mentored thought that the blame always lied on us.

If you’re a cook in training and we told you “don’t use that dull knife” and you insist on using it then cut yourself, how can your conclusion be “man those chefs are teaching wrong”? Even if we never told you about any knife, and you go buy a random one from somewhere and cut yourself, you can’t just come and tell us we’re sending “mixed messages”. That makes no sense.


What are you even talking about?? We’ve never done that? I haven’t even logged into the Discord server for a long time now. What kind of spidey senses led you to any of the above conclusion?

Did you stir up all this drama based on your misreadings again?


Drama! I don’t think I am misreading anything. Maybe I’m not explaining it well. Maybe next time I will try to explain in a DM or chat. Peace, folks. May i suggest we delete this thread?

1 Like