May 1, 2024 Release
We have a huge release today! Its a GA bonanza 🎊 – Submenu, unavailable menu items, DropZone and FileTrigger components are now in GA. Check our blog post on the intricacies of the submenu interactions and how we handled them.
In addition, we have added a suite of new color components including ColorPicker, ColorArea, ColorField, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, currently in beta. These enable you to build fully customizable color pickers, including accessible color descriptions for screen reader support.
The first alpha of TreeView has also been released. This was a highly requested component and includes support for expanding, collapsing, multi-selection, keyboard navigation, and interactive children. Documentation will follow soon, check out our React Spectrum storybook and React Aria Components storybook source code for examples.
We have also improved our integration with client side routers, accepting options to control router-specific behaviors such as scrolling, replacing instead of pushing to the history, base path, etc. For convenience, all collection items in React Aria Components (e.g. MenuItem) now also support isDisabled and onAction props directly, rather than needing to be defined on the root collection.
Last but not least, we want to acknowledge all the wonderful contributors who have dedicated their time to improve our libraries. A special thanks to @ryo-manba and @sookmax, who are responsible for multiple bug fixes to Switch, IME support, ListBox, ComboBox, as well as adding new features such as additional state attributes, hover events, and language support. Thank you!! 😍
IllustratedMessage design update
- IllustratedMessagewas updated by Spectrum Design (see issue) and in this release we updated our component to match. This also solves for an internationalization issue with using italics in some languages.
React Aria Color API updates
- gradientPropswas merged into- colorAreaPropsin- useColorArea.
Enhancements#
- Collections
- Support onActionandisDisabledon item elements - @devongovett - PR
- Add hover events to all collection items - @reidbarber - PR
- Add support for hover events in ListBoxOption component - @ryo-manba - PR
- Add allowsEmptyCollectionproperty toComboBoxProps- @wdsjohn - PR
- Turn off virtualizer when running in test env (RSP) - @LFDanLu - PR
 
- Support 
- Routing
- Add support for routerOptionsanduseHref- @devongovett - PR
- Add hrefLangattribute to Link - @ryo-manba - PR
 
- Add support for 
- Forms
- Add validationBehaviorto Form - @reidbarber - PR, @LFDanLu - PR
- Export FormContextand documentvalidationBehavioron RAC Form - @reidbarber - PR
- Add isReadyOnly&isRequireddata attributes to TextField - @sookmax - PR
- Allow passing of inputRefto RAC Checkbox/Switch/Radio - @yihuiliao - PR, @sookmax - PR
- Add --trigger-widthsupport for DatePicker & DateRangePicker - @sookmax - PR
- Add nullto RadioGroupvalue- @sookmax - PR
 
- Add 
- Meter
- Add informative variant in Meter- @reidbarber - PR
 
- Add informative variant in 
- Toast
- Drag and drop
- Add conditional drag and drop support - @ryo-manba - PR
- Add support for isDisabledtouseDrag- @reidbarber - PR
- Add isDisabledto RAC DropZone - @ryo-manba - PR
 
- Menu
- Add animation to Submenu tray when navigating between levels (RSP) - @reidbarber - PR
 
- Misc
- Add data-focusedto RAC Tabs - @snowystinger - PR
- Add support for onErrorandonLoadcallback in Image - @skathuria29 - PR
- Add HoverEventstype toToggleButtonProp- @sookmax - PR
- Add support for shouldFlipin RAC Tooltip - @ktabors - PR
 
- Add 
Fixes#
- Forms
- Fix Switch focus events - @sookmax - PR
- Fix onSubmittrigger for NumberField - @tomekancu - PR
- Exclude idfrom TextFieldDOMProps- @corydeppen - PR
- Render nothing if isInvalidand noerrorMessageis provided - @LFDanLu - PR
- Correct floating precision in snapValueToStep- @TMH-SE - PR
 
- ComboBox
- Fix onSelectionChangetype in ComboBox- @acr92 - PR
- Fix onBlurin ComboBox when no button is provided - @tomekancu - PR
- Fix timer cleanup on ComboBox unmount - @ryo-manba - PR
- Remove italics from ComboBox and SearchAutocomplete (RSP) - @yihuiliao - PR
 
- Fix 
- DatePicker
- Fix Persian/Gregorian calendar conversion - @devongovett - PR
- Fix validation for controlled DateField components - @tomekancu - PR
- Allow calendar state context to set nullvalue - @psywalker - PR
- Fix useRangeCalendarwith mobile scrolling - @QzCurious - PR
- Fix backspace to shift focus to previous element in useDateSegment- @ryo-manba - PR
- Fix crash in DateRangePickerwhen using SSR optimized localized strings - @devongovett - PR
 
- Menu
- Scroll Submenu trigger item into view when keyboard navigating - @reidbarber - PR
- Fix Submenu safe area edge case - Reid Barber - @reidbarber - PR
- Fix RAC Submenu jittering when rendered close to edge of container - @LFDanLu - PR
- Fix submenu CSS specificity - @reidbarber - PR
- Change useMenuTriggeronPressStarttostate.open- @subvertallchris - PR
- Improve scrolling behavior for elements with multiple scrollable parents - @reidbarber - PR
- Automatically set MenuItemtextValuefrom children if it is a string - @devongovett - PR
- Require children prop in MenuTrigger - @PHILLIPS71 - PR
 
- Focus
- Enhance FocusScopeto support tab completion for IMEs - @ryo-manba - PR
- Fix focus tracking for dynamic iframe content - @ritz078 - PR
- Fix intermittent focus ring compilation issue (Spectrum) - @devongovett - PR
- Ignore HiddenSelect when tree walking - @majornista - PR
 
- Enhance 
- Collections
- Ensure that arrow keys in grid cells always win over children - @devongovett - PR
- Allow escape key event to propagate if no items are selected - @snowystinger - PR
- Fix TypeError in ListBox's grid layout keyboard navigation - @sookmax - PR
- Fix return type for onSelectionChange- @LFDanLu - PR
 
- Drag and drop
- Fix focus returning to DropZone after closing FileTrigger - @yihuiliao - PR, @LFDanLu - PR
- Remove Textfrom RSP DropZone API - @yihuiliao - PR
- Omit classNameandstyleprop in RSP DropZone - @yihuiliao - PR
 
- Internationalization
- Gracefully treat locales removed by @react-aria/optimize-locales-plugin- @bhovhannes - PR
- Export LocalizedStringFormattertype in react-aria - @alexasselin008 - PR
 
- Gracefully treat locales removed by 
- Overlays
- Misc
- Rename and export defaultSlotand removeslotCallbackSymbolfrom RAC - @alexasselin008 - PR
- Allow typing in Accordion (RSP) - @FosterSamuel - PR
- Fix CSS properties with undefined custom property values - @jdawber - PR
- Fix useTreeDataroot move - @telcy - PR
- Export types SpectrumTextAreaProps,ItemProps,SectionProps- @dsmmcken - PR
- Fix labelPropstype inSpectrumFieldProps- @majornista - PR
- Improve tree shaking - @devongovett - PR
- Backwards compatibility for Validationtype - @devongovett - PR
 
- Rename and export 
Docs#
- Fix the spelling of hierarchicalin docs - @shpomp - PR
- Update cursor style to default for Tabs in docs - @ryo-manba - PR
- Add ContextualHelp example for disabled button to Tooltip docs - @reidbarber - PR
- Fix the controlled RadioGroup example - @sookmax - PR
- Fix various typos in docs - @reidbarber - PR
- Fix typo in useListDatadocs - @ryo-manba - PR
- Escape <form>inButtonPropswith backticks - @sookmax - PR
- Update testing documentation and expose some test utils - @LFDanLu - PR
- Fix various imports in the docs from being set to monopackage imports - @LFDanLu - PR
- Update docs for inline onActionandisDisabledfor collection items - @LFDanLu - PR
- Remove extra example from advanced customization section of Calendar - @LFDanLu - PR
- Fix Submenu tray experience for iOS VoiceOver - @reidbarber - PR
- Adding missing support for disabled state in color hooks docs - @ktabors - PR
Under Construction#
React Aria Components Tree (Alpha):
React Spectrum Tree (Alpha):
Color Components (Beta):
- Add color naming for accessibility - @devongovett - PR, PR, PR
- Add ColorArea, ColorField, ColorSlider, and ColorWheel to RAC - @devongovett - PR, @ktabors - PR
- Add ColorSwatch component - @devongovett - PR
- Add ColorPicker and ColorSwatchPicker components - @devongovett - PR
Released packages#
- @adobe/react-spectrum@3.35.0
- @internationalized/date@3.5.3
- @internationalized/message@3.1.3
- @internationalized/number@3.5.2
- @internationalized/string-compiler@3.2.3
- @internationalized/string@3.2.2
- @react-aria/accordion@3.0.0-alpha.28
- @react-aria/actiongroup@3.7.4
- @react-aria/aria-modal-polyfill@3.7.9
- @react-aria/autocomplete@3.0.0-alpha.28
- @react-aria/breadcrumbs@3.5.12
- @react-aria/button@3.9.4
- @react-aria/calendar@3.5.7
- @react-aria/checkbox@3.14.2
- @react-aria/color@3.0.0-beta.32
- @react-aria/combobox@3.9.0
- @react-aria/datepicker@3.10.0
- @react-aria/dialog@3.5.13
- @react-aria/dnd@3.6.0
- @react-aria/example-theme@1.0.2
- @react-aria/focus@3.17.0
- @react-aria/form@3.0.4
- @react-aria/grid@3.9.0
- @react-aria/gridlist@3.8.0
- @react-aria/i18n@3.11.0
- @react-aria/interactions@3.21.2
- @react-aria/label@3.7.7
- @react-aria/landmark@3.0.0-beta.11
- @react-aria/link@3.7.0
- @react-aria/listbox@3.12.0
- @react-aria/live-announcer@3.3.3
- @react-aria/menu@3.14.0
- @react-aria/meter@3.4.12
- @react-aria/numberfield@3.11.2
- @react-aria/overlays@3.22.0
- @react-aria/progress@3.4.12
- @react-aria/radio@3.10.3
- @react-aria/searchfield@3.7.4
- @react-aria/select@3.14.4
- @react-aria/selection@3.18.0
- @react-aria/separator@3.3.12
- @react-aria/slider@3.7.7
- @react-aria/spinbutton@3.6.4
- @react-aria/ssr@3.9.3
- @react-aria/steplist@3.0.0-alpha.4
- @react-aria/switch@3.6.3
- @react-aria/table@3.14.0
- @react-aria/tabs@3.9.0
- @react-aria/tag@3.4.0
- @react-aria/test-utils@1.0.0-alpha.0
- @react-aria/textfield@3.14.4
- @react-aria/toast@3.0.0-beta.11
- @react-aria/toggle@3.10.3
- @react-aria/toolbar@3.0.0-beta.4
- @react-aria/tooltip@3.7.3
- @react-aria/tree@3.0.0-alpha.0
- @react-aria/utils@3.24.0
- @react-aria/virtualizer@3.10.0
- @react-aria/visually-hidden@3.8.11
- @react-spectrum/accordion@3.0.0-alpha.30
- @react-spectrum/actionbar@3.4.4
- @react-spectrum/actiongroup@3.10.4
- @react-spectrum/autocomplete@3.0.0-alpha.31
- @react-spectrum/avatar@3.0.11
- @react-spectrum/badge@3.1.12
- @react-spectrum/breadcrumbs@3.9.6
- @react-spectrum/button@3.16.3
- @react-spectrum/buttongroup@3.6.12
- @react-spectrum/calendar@3.4.8
- @react-spectrum/card@3.0.0-alpha.32
- @react-spectrum/checkbox@3.9.5
- @react-spectrum/color@3.0.0-beta.33
- @react-spectrum/combobox@3.12.4
- @react-spectrum/contextualhelp@3.6.10
- @react-spectrum/datepicker@3.9.5
- @react-spectrum/dialog@3.8.10
- @react-spectrum/divider@3.5.12
- @react-spectrum/dnd@3.3.9
- @react-spectrum/dropzone@3.0.0
- @react-spectrum/filetrigger@3.0.0
- @react-spectrum/form@3.7.5
- @react-spectrum/icon@3.7.12
- @react-spectrum/illustratedmessage@3.5.0
- @react-spectrum/image@3.5.0
- @react-spectrum/inlinealert@3.2.4
- @react-spectrum/label@3.16.5
- @react-spectrum/labeledvalue@3.1.13
- @react-spectrum/layout@3.6.4
- @react-spectrum/link@3.6.6
- @react-spectrum/list@3.7.9
- @react-spectrum/listbox@3.12.8
- @react-spectrum/menu@3.19.0
- @react-spectrum/meter@3.5.0
- @react-spectrum/numberfield@3.9.2
- @react-spectrum/overlays@5.6.0
- @react-spectrum/picker@3.14.4
- @react-spectrum/progress@3.7.6
- @react-spectrum/provider@3.9.6
- @react-spectrum/radio@3.7.5
- @react-spectrum/searchfield@3.8.5
- @react-spectrum/slider@3.6.8
- @react-spectrum/statuslight@3.5.12
- @react-spectrum/steplist@3.0.0-alpha.4
- @react-spectrum/switch@3.5.4
- @react-spectrum/table@3.12.9
- @react-spectrum/tabs@3.8.9
- @react-spectrum/tag@3.2.5
- @react-spectrum/test-utils@1.0.0-alpha.0
- @react-spectrum/text@3.5.4
- @react-spectrum/textfield@3.12.0
- @react-spectrum/theme-dark@3.5.9
- @react-spectrum/theme-default@3.5.9
- @react-spectrum/theme-express@3.0.0-alpha.11
- @react-spectrum/theme-light@3.4.9
- @react-spectrum/toast@3.0.0-beta.11
- @react-spectrum/tooltip@3.6.6
- @react-spectrum/tree@3.0.0-alpha.0
- @react-spectrum/utils@3.11.6
- @react-spectrum/view@3.6.9
- @react-spectrum/well@3.4.12
- @react-stately/calendar@3.5.0
- @react-stately/checkbox@3.6.4
- @react-stately/collections@3.10.6
- @react-stately/color@3.6.0
- @react-stately/combobox@3.8.3
- @react-stately/data@3.11.3
- @react-stately/datepicker@3.9.3
- @react-stately/dnd@3.3.0
- @react-stately/flags@3.0.2
- @react-stately/form@3.0.2
- @react-stately/grid@3.8.6
- @react-stately/layout@3.13.8
- @react-stately/list@3.10.4
- @react-stately/menu@3.7.0
- @react-stately/numberfield@3.9.2
- @react-stately/overlays@3.6.6
- @react-stately/radio@3.10.3
- @react-stately/searchfield@3.5.2
- @react-stately/select@3.6.3
- @react-stately/selection@3.15.0
- @react-stately/slider@3.5.3
- @react-stately/steplist@3.0.0-alpha.4
- @react-stately/table@3.11.7
- @react-stately/tabs@3.6.5
- @react-stately/toast@3.0.0-beta.3
- @react-stately/toggle@3.7.3
- @react-stately/tooltip@3.4.8
- @react-stately/tree@3.8.0
- @react-stately/utils@3.10.0
- @react-stately/virtualizer@3.7.0
- @react-types/accordion@3.0.0-alpha.20
- @react-types/actionbar@3.1.6
- @react-types/actiongroup@3.4.8
- @react-types/autocomplete@3.0.0-alpha.21
- @react-types/avatar@3.0.6
- @react-types/badge@3.1.8
- @react-types/breadcrumbs@3.7.4
- @react-types/button@3.9.3
- @react-types/buttongroup@3.3.8
- @react-types/calendar@3.4.5
- @react-types/card@3.0.0-alpha.25
- @react-types/checkbox@3.8.0
- @react-types/color@3.0.0-beta.24
- @react-types/combobox@3.11.0
- @react-types/contextualhelp@3.2.9
- @react-types/datepicker@3.7.3
- @react-types/dialog@3.5.9
- @react-types/divider@3.3.8
- @react-types/form@3.7.3
- @react-types/grid@3.2.5
- @react-types/illustratedmessage@3.3.8
- @react-types/image@3.4.0
- @react-types/label@3.9.2
- @react-types/layout@3.3.14
- @react-types/link@3.5.4
- @react-types/list@3.2.16
- @react-types/listbox@3.4.8
- @react-types/menu@3.9.8
- @react-types/meter@3.4.0
- @react-types/numberfield@3.8.2
- @react-types/overlays@3.8.6
- @react-types/progress@3.5.3
- @react-types/provider@3.8.0
- @react-types/radio@3.8.0
- @react-types/searchfield@3.5.4
- @react-types/select@3.9.3
- @react-types/shared@3.23.0
- @react-types/slider@3.7.2
- @react-types/statuslight@3.3.8
- @react-types/switch@3.5.2
- @react-types/table@3.9.4
- @react-types/tabs@3.3.6
- @react-types/text@3.3.8
- @react-types/textfield@3.9.2
- @react-types/tooltip@3.4.8
- @react-types/view@3.4.8
- @react-types/well@3.3.8
- @spectrum-icons/color@3.5.12
- @spectrum-icons/express@3.0.0-alpha.16
- @spectrum-icons/illustrations@3.6.12
- @spectrum-icons/ui@3.6.6
- @spectrum-icons/workflow@4.2.11
- @react-aria/optimize-locales-plugin@1.1.0
- @react-aria/parcel-resolver-optimize-locales@1.1.0
- react-aria@3.33.0
- react-aria-components@1.2.0
- react-stately@3.31.0
- tailwindcss-react-aria-components@1.1.2