- Added component name to property validation error message (#275)
1.3.0 (May 5th, 2020)
- Added Contexts, which enables easy handling of items that are provided and consumed throughout the tree.
1.2.0 (September 6th, 2019)
- Fixed a bug where derived state was lost when assigning directly to state in init (#232)
- Improved the error message when an invalid changed hook name is used. (#216)
- Fixed a bug where fragments could not be used as children of an element or another fragment. (#214)
1.1.0 (June 3rd, 2019)
- Fixed an issue where updating a host element with children to an element with
nil
children caused the old children to not be unmounted. (#210) - Added
Roact.joinBindings
, which allows combining multiple bindings into a single binding that can be mapped. (#208)
This release significantly reworks Roact internals to enable new features and optimizations.
- Added Fragments, which reduces the need for many container instances. (#172)
- Added Bindings, which enables easy surgical updates to instances without using refs. (#159)
- Added opt-in runtime type checking across the entire Roact API. (#188)
- Added support for prop validation akin to React's
propTypes
. - Changed
Component:setState
to be deferred if it's called while Roact is updating a component. (#183) - Changed events connected via
Roact.Event
andRoact.Change
triggered by a Roact update to be deferred until Roact is done updating the instance. - Improved and consolidated terminology across the board.
- Improved errors to be much more informative and clear.
- Deprecated
Roact.reconcile
in favor ofRoact.update
(#194) - Removed some undocumented APIs:
Roact.getGlobalConfigValue
, which let users read the current internal configuration.Roact.Element
, which let users figure out whether something is a Roact element. We'll introduce a proper type-checking API at a later date.
- Renamed
Roact.reify
toRoact.mount
andRoact.teardown
toRoact.unmount
(#82)- The old methods are still present as aliases, but will output a warning when used.
- Added
Roact.Change
for subscribing toGetPropertyChangedSignal
(#51) - Added the static lifecycle method
getDerivedStateFromProps
(#57) - Allow canceling render by returning nil from setState callback (#64)
- Added
defaultProps
value on stateful components to define values for props that aren't specified (#79) - Added
getElementTraceback
(#81, #93) - Added
createRef
(#70, #92) - Added a warning when an element changes type during reconciliation (#88, #137)
- Ref switching now occurs in one pass, which should fix edge cases where the result of a ref is
nil
, especially in property changed events (#98) setState
can now be called insideinit
andwillUpdate
. Instead of triggering a new render, it will affect the currently scheduled one. (#139)- Roll back changes that allowed
setState
to be called insidewillUpdate
, which created state update scenarios with difficult-to-determine behavior. (#157) - By default, disable the warning for an element changing types during reconciliation (#168)
- Removed
is*Element
methods, this is unlikely to affect anyone (#50) - Added new global configuration API for debug settings (#46)
- Added
Roact.reconcile
, which will be in the guide soon. It's useful for embedding Roact into existing projects! (#44) - Added function variant of
setState
in preparation for async rendering (#39) - Added
Roact.None
to allow removing values from state usingsetState
(#38) setState
will now throw errors if called at the wrong time (#23)- Throw a nicer error when failing to set primitive properties (#21)
- If a bool is detected as a child of a component, it will be ignored, allowing for a shorter conditional rendering syntax! (#15)
- Error messages should make more sense in general
- Got rid of installer scripts in favor of regular model files
- Initial pre-release build