We're excited to share Version 0.8.0 of ReasonReact with the world today! ReasonReact adds a huge number of quality of life improvements and new api changes. This is our first big release since introducing hooks in 0.7.0.
It's a breaking change primarily because it enforces a minimum BuckleScript version of 7.1.1. This is to ensure that we get consistent record and object runtime representation and to unlock more changes in the future. Going forward you can expect that ReasonReact will track BuckleScript more closely. The PPX lives in and ships with BuckleScript, so in order to make sweeping changes we have to work in both codebases.
There are a number of additional breaking changes:
crossOrigin casing was incorrect
maxDuration removed from suspense api
Ref type has been changed to be modelled as a record instead of abstract type with get and set
The min attribute on dom nodes in now a string to match max
As well as new additions:
Support for concurrent mode with createRoot, Suspense, SuspenseList, useTransition
React.float and int
Better Children mapping
This is not an exhaustive list - I encourage you to check out the full set in https://github.com/reasonml/reason-react/blob/master/HISTORY.md.
This release has been a long time coming and is the huge effort of the ReasonReact community. A hearfelt thanks to everyone in the HISTORY and to everyone who has created or interacted with issues! The first step to upgrading here is to make sure you're on BuckleScript ^7.1.1. From there you can visit upgrade-reason-react for a script that will handle the ref upgrade, crossOrigin capitalization, and the type of min when used in JSX. Happy hacking!