Tags:
- 💥 [Breaking Change]
- 👓 [Spec Compliance]
- 🚀 [New Feature]
- 🐛 [Bug Fix]
- 📝 [Documentation]
- 🏠 [Internal]
- 💅 [Polish]
- Replace usages of
%external
by binding toglobalThis
. This is to support upcoming ReScript 12 versions. For older browsers, it may be necessary to polyfillglobalThis
.
- Remove hardcoded
require
so it works in both common js and ES module modes. (#117)
- Fix incorrect usage of
@uncurry
. - bsconfig.json -> rescript.json.
- Undeprecate numbered hooks for a smoother upgrading experience.
- Requires ReScript 11.0.0 or newer.
- Deprecated use*N functions in favor of changing the signature of the main hook function.
- For example, useEffect instead of useEffectN e.g.
useEffect3(f, (a, b, c))
->useEffect(f, (a, b, c))
- The affected hooks include
useEffect
,useLayoutEffect
,useCallback
,useMemo
,useImperativeHandle
,useInsertionEffect
- With this change, it is now possible to pass any value as the second argument
'deps
. In case you pass an invalid value, you will get a warning from React at runtime. You should be using one of the following values for the dependency array:- 0 dependencies:
[]
- 1 dependency:
[a]
- more than 1 dependency:
(a, b, ...)
- 0 dependencies:
- For example, useEffect instead of useEffectN e.g.
- For calling
useEffect
,useLayoutEffect
etc. without a dependency array (meaning that the effect is executed on every render), there are now separate bindingsuseEffectOnEveryRender
,useLayoutEffectOnEveryRender
etc.
- Added
React.lazy_
.
- Requires ReScript 11.0.0-alpha.6 or newer.
- Fixed children type for
Fragment
,StrictMode
andSuspense
.
- Removed experimental
SuspenseList
component.
- Compatibility with ReScript 11 uncurried mode.
- Added
gap
prop toReactDOMStyle.make
.
- Removed
React.callback
type.
- Updated
React_V3
compatibility module to define record fieldcurrent
forref
.
No changes compared to rc.3.
- Changed
React.jsxKeyed(s)
,ReactDOM.jsxKeyed(s)
having key as optional argument. - Changed
React.fragmentProps
children field to optional. - Removed the helper functions for JSX v4 from
React.res
. - Made
React.component
conversion function zero cost.
- Fixed JSX PPX V3 backward compatibility.
- Added React 18 bindings.
- Added binding for
React.isValidElement
. - Added backgroundFilter prop in
ReactDOMStyle
. - Relaxed React version requirement to v18.0.0+.
ReactDOM.domProps
is now an alias forJsxDOM.domProps
(defined in the compiler repo)- Deprecated types
ReactDOM.props
,ReactDOM.Props.props
,ReactDOM.Props.domProps
. - Deprecated
ReactDOM.stringToComponent
.
RescriptReactErrorBoundary
component now implemented using@react.component
, so it is compatible with JSX V4.ReactV3
module added for backward compatibility to JSX V3. See the V3 compatibility mode- Fixed
react-dom/server
andreact-dom/test-utils
imports. - Fixed
createRoot
bindings. - Added
Keyboard.code
binding. - Renamed
Changes.md
toCHANGELOG.md
to align with the rescript-compiler repo.
Breaking:
-
IMPORTANT The
React
module has been modified in a breaking way to support the new JSX PPX V4. -
Removed the deprecation attribute from apis of the new jsx transform (introduced in React v17).
-
New version requirements:
- ReScript compiler V10.1+
- ReactJS v18.2.0+
- Temporarily remove peerDependency for bs-platform, so we can gracefully do the transition to our new
rescript
package
- Added
.js
extension to externals to comply to ES6 module conventions - Bump peerDependencies versions
This is the initial version of rescript-react
, a port of [email protected]
that will be almost equivalent, except for a few long needed minor breaking changes.
It is intended to be used with our newest ReScript React-JSX transformations (> JSX v3) and React v16.8.
For history on previous evolution of the code, check out the original reason-react history
Breaking:
-
IMPORTANT: Currently, old third-party packages that are still dependent on
reason-react
will not mix with other@rescript/react
based code due to a build system problem. Which means that every third-party dependency needs to be upgraded to@rescript/react
first to make it compatible. See this forum discussion for more details. -
Removed legacy modules ("record api"):
ReasonReactCompat
ReactDOMServerRe
ReactEventRe
ReasonReactOptimizedCreateClass
-
Renamed existing modules:
ReasonReactErrorBoundary
->RescriptReactErrorBoundary
ReasonReactRouter
->RescriptReactRouter
- (Note: Usually the two only valid styles would be
ReScript
orrescript
, the latter being the version for technical writing. We are usingRescript
here, since it is essentially the capitalized version ofrescript
)
-
Removed all functionality from
ReasonReact
andReactDOMRe
that is not needed for react-jsx v3 compatibility -
Moved
React.SuspenseList
toReact.Experimental.SuspenseList
to be more consistent with our Experimental features
Misc:
- Renamed
HISTORY.md
toChanges.md
(aligning with other core projects, like genType)