Enact 4.5.0 Released
We’re pleased to announce the release of Enact 4.5.0. Since the release of Enact 4.0, which was mainly shipped on webOS TVs in 2022, we have been continuously improving and adding features according to user feedback and developer requirements. The highlights of the release are as follows.
- Bumped up to the lasted React 18
- Upgraded support for node LTS and related npm
- Unit tests were migrated to @testing-library/react
- Added support for Sass and Tailwind CSS
- Added support for seamless user input between touch, pointer, and 5-way remote control.
- Updated Sandstone UI components (detailed in Changelog below)
As you might expect from the version number, Enact 4.5 doesn’t break existing code. However, if you want to use the cool features of React 18 like Automatic Batching, Suspense, etc., you need to use the new React DOM Client API introduced in React 18.
Migration Guide
We provide an Enact migration guide. This guide spells out the changes needed to bring apps up-to-date with the latest Enact and how to use the new features of React 18 in the Enact.
You can start with updating Enact CLI to version 5.0.0 or newer as follows:
npm install -g @enact/cli
Documentation and Samples
Complete documentation for this release is available on the Enact site.
The Sandstone sampler showcases each component and its available props to allow developers to explore the available options more easily. The sampler includes samples for all components including those added in this release.
Enact team will continue to iterate on this Enact 4.5.0 while also planning ahead for what will be in Enact 5. Please feel free to ask our community for any questions, tips, advice, or assistance.
Enact is fully open and your contribution is always welcomed. If you are interested in making Enact better, please read the contribution guide and make PR!
Changelog
CLI
- Update the
webpack
to5.x
,eslint
to8.x
,jest
to27.x
,react
,react-dom
to18.x
- Drop the support of
enzyme
. Please do not hesitate to replaceenzyme
with @testing-library/react when you make your unit tests. - Add
Sass
andTailwind CSS
support
Sandstone
- All unit tests are migrated to @testing-library/react.
- All components are updated to use
forwardCustom
and addedtype
when forwarding custom events. DatePicker
andTimePicker
are changed to not show a pressing effect on touch input.- Detailed property containing
inputType
is added inonClose
event payload toFixedPopupPanels
,FlexiblePopupPanels
,Popup
,PopupTabLayout
. - Add the public class name
icon
toIcon
. - Add the new icon
wallpaper
toIcon
. - Add the prop
noSubtitle
toPanels.Header
andWizardPanels
for hiding subtitle area. Panels.Header
andRadioItem
are changed to useonClick
instead ofonTap
for touch support.- Add the prop
changedBy
toPicker
andRangePicker
for providing a way to control left and right keys in horizontal joined Picker. - Add the prop
editable
toScroller
for enabling editing items in the Scroller. Scroller
thumb is now read out ‘press ok button to read text’ additionally whenfocusableScrollbar
prop isbyEnter
and read out ‘leftmost’, ‘rightmost’, ‘topmost’, or ‘downmost’ when reaching the end of the scroll.Scroller
andVirtualList
are changed to show overscroll effect when flicking by default.- Add the props
data-webos-voice-focused
,data-webos-voice-disabled
, anddata-webos-voice-group-label
toScroller
andVirtualList
. TabLayout
is changed to eliminate the horizontal maximum number of tabs.- Add the props
backButtonAriaLabel
,onWillFastForward
,onWillJumpBackward
,onWillJumpForward
,onWillPause
,onWillPlay
,onWillRewind
, andonBack
toVideoPlayer
.
UI
- All components are updated to use
forwardCustom
and addedtype
when forwarding custom events. - The
locale
type forforceDirection
prop is added toMarqueeDecorator
for not overriding the direction depending on contents. - The
className
config ofMarqueeDecorator
is deprecated and has been replaced bycss
. Usecss
instead to customize the marquee styles. Scroller
andVirtualList
remove the propsdata-webos-voice-focused
,data-webos-voice-disabled
, anddata-webos-voice-group-label
.
Spotlight
- Changes to not focus on an invisible element.
- Add an optional
containerOption.toOuterContainer
parameter tofocus
function to search target recursively to outer container.