Canvas v8 Announcements

Announcements for Canvas v8 updates, bug fixes, and new releases.

Canvas Kit 8.6.0 Release

Canvas Kit 8.6.0 is now available.

This Canvas Kit release contains the following updates:

  • inset has been added to the PositionStyle prop to enable users to set more than one position prop with the logical property syntax
  • The getColor API has been extended to AccentIcon which will enable it to use Canvas color tokens for color related props

This update will not impact developers. To access these changes, please upgrade to Canvas Kit 8.6.0.

Canvas Kit 8.5.0 Release

Canvas Kit 8.5.0 is now available.

This Canvas Kit release contains the following updates:

  • The overall padding for Modal on smaller screen sizes (320px to 767px) has increased from 16px to 24px in Canvas Kit to align with Mobile
  • The spacing between Modal.Heading and Modal.Body has been reduced from 16px to 8px on smaller screen sizes (320px to 767px)
  • An enhancement has be applied to SystemIcon that enables the use of token colors
  • Docgen parsing has been added to enhance documentation for APIs, hooks, and more!

This update will not impact development work. To access these changes, please upgrade to Canvas Kit 8.5.0.

Canvas Kit 8.4.0 Release

The Canvas Kit React 8.4.0 is now available.

This release includes the soft deprecation of the following components:

  • Stack
  • VStack
  • HStack

Teams using these soft deprecated components should transition to using the newly enhanced Flex component. A code mod is also available to help with the transition to Flex.

To access these changes, please upgrade to Canvas Kit 8.4.0

Canvas Kit v8 Release

Canvas Kit v8 will be released on November 2nd, 2022. An upgrade guide will be available once v8 goes live to assist product teams with their migration to the newest version of Canvas Kit.

Note: Due to an unintentional release of Canvas Kit v8.0.0 earlier this year, Canvas Kit v8 will be released as v8.0.1 to maintain semantic versioning. Teams looking to upgrade to v8 should skip v8.0.0 and upgrade straight to v8.0.1 as the accidental release of v8.0.0 has already been deprecated.

Release Overview

The table below contains a high-level overview of the updates that will be rolled out as part of the v8 release. The impact for developers are defined as follows:

  • None: inapplicable to the role or no actions are required for users to adopt the change; Updates will be applied automatically once users upgrade to Canvas Kit v8
  • Low: minor changes are required for users to adopt the change
  • Medium: a moderate amount of changes are required for users to adopt the change, such as switching out UI elements
  • High: a large amount of changes are required for users to adopt the change, requiring product teams to make major design or development decisions
ChangeShort DescriptionDeveloper Impact
React 18 UpgradeCanvas Kit will be upgrading to React 18, but will still maintain support for the same React versions as v7None
Breadcrumbs Collection EnhancementsThe new Collection Systems introduced in v7 will be added to Breadcrumbs, which will also be promoted to the Main packageLow
Component Name AlignmentUpdated component names in Canvas documentation to align all Canvas touchpointsNone
Depth Update for MenuThe Menu in the Main package will be updated to use depth 3 instead of depth 1None
New Responsive UtilitiesNew responsive utilities will be released that will allow teams to take a container size and easily adjust styles based on their current breakpoint rangeNone
New Grid ComponentA new Grid component will be released in Canvas Kit to help developers create a grid system with Canvas. Documentation for the new Grid will be available on the Canvas Design System site within the Layout pageNone
New Text ComponentsNew Text components will be released in Canvas Kit to help developers quickly switch between different type tokenNone
Updated Tabs DocumentationThe Tabs documentation will be updated to provide guidance for touch based tabsNone
New Touch and Responsive Behavior for ModalNew touch and responsive based behavior will be added to Modal in Canvas Kit, along with updated documentationNone
Component Soft DeprecationsDrawer, Menu (in Preview), and Layout will be soft deprecatedNone
New and Updated DocumentationUpdated documentation for Modal, Popup, and Tooltip. New documentation for FormFieldNone
Default Export Clean UpLeftover default exports will be removed from Canvas Kit componentsNone
Internet Explorer 11 DeprecationIE specific code will be removed from Canvas KitNone
Testing Components and Utilities PromotionSeveral testing components and utilities will be promoted to @workday/canvas-kit-react/testing, a new testing packageNoneNone
Refactor and Reorganize Style PropsStyle props implementation will be refactored and reorganized as general clean up and improve documentationNone
Redesigned Status Indicator ComponentA new redesigned Status Indicator component with Title Casing will be added to the Preview packageNone
Redesigned Segmented Control ComponentA new redesigned Segmented Control component will be added to the Preview packageNone
Default Update for Popup Close ButtonsUpdate close buttons for Popup, Modal, and Dialog to default to type=button so they do not unintentionally submit formsNone
Action Bar Overflow Button RefactoringThe hard-coded OverflowButton in Action Bar will be refactored to allow users to modify and pass props into itNone
Utility Soft DeprecationscreateEventMap and useEventMap will be soft deprecatedNone

React 18 Upgrade

Canvas Kit will be upgraded to React 18 as part of the v8 release. This will not include any other dependency updates. However, Canvas Kit will continue to support React 16.14, React 17.X, and React 18.X in v8.

This change will not impact product teams that are already on v7 and are looking to upgrade to v8 as v8 will support the same React versions as v7 while still giving teams the ability to upgrade to React 18 as needed.

The Collection System released in Canvas Kit v7 will be added to the Breadcrumbs component, which will help optimize Breadcrumbs and resolve some of the issues associated with the current Breadcrumbs component. The new Collection System will introduce some visual changes into Breadcrumbs, so to maintain the same visual design, the following updates will also be made to the Menu in Breadcrumbs:

  • Max Width: No max width → 280px
  • Max Height: 200px → 296px

These Menu updates are specific to the Menu embedded into Breadcrumbs, not the standalone Menu component in the Main or Preview package. With this enhancement, Breadcrumbs will also be promoted to the Main package.

A codemod will be available to help most teams transition to the new v8 Breadcrumbs. However, teams using Breadcrumbs.List or Breadcrumbs.CollapsibleList will not be able to use codemods for this update. For additional information, please view our GitHub discussion to assist with the Breadcrumbs update.

Component Name Alignment

The Loading Animation component documentation, along with all other mentions of Loading Animation on the Canvas Design System site, has been updated to reference "Loading Dots" instead. Additionally, the Loading Animation in Canvas Kit has also been renamed to LoadingDots. This is being done to create a clearer distinction between Loading Dots and loading animation, which can be used to describe a wide variety of UI elements (ex: Loading Dots, Skeleton) that are used to indicate that content is being loaded. A codemod will handle this change when developers upgrade to v8. No additional action will be required to uptake this change.

Depth Update for Menu

The Menu in Canvas Kit’s Main package will be updated to use Depth 3 instead of Depth 1.

Changes will be applied automatically, and no actions will be required for developers to uptake this change.

New Responsive Utilities

The following Canvas Kit responsive utilities will be released as part of v8:

  • useResponsiveContainerStyles: A hook that allows developers to create container-based responsive styles using style objects.

This is a net-new utility that developers can opt-in to start using, but no action is required to uptake this change.

New Grid Component

A new Grid component created using CSS Grids will be released in the Main package in Canvas Kit to help developers create grid systems to align their product(s). Since this is a net-new component, no action will be required to uptake this change. However, it is recommended for teams using the current Layout component in Canvas Kit to switch over to this new Grid component as Layout will be soft deprecated in v8 (more information will be provided in the sections below).

New Text Components

The following Text components will be released in v8 to help developers quickly apply and switch between different type tokens:

  • Text
  • LabelText
  • Subtext
  • BodyText
  • Heading
  • Title

The Text component will also allow developers to set text styles for component groupings. These will all be net-new components so no action will be required for developers to uptake this change.

Updated Tabs Documentation

The Tabs documentation will be updated to provide additional usage guidance for touch based Tabs.

This update will not impact developers since it is being rolled out on the Canvas Design System site.

New Touch and Responsive Behavior for Modal

The Modal component will be updated to include new touch and responsive behaviors. Users interacting with Modal on touch will not be able to exit out of the Modal by tapping on the overlay. The responsive Modal component will be displayed when users are browsing on screen sizes between 320px and 768px and will have the following visual differences compared to the standard Modal:

  • Corner Radius: 8px → 24px
  • Padding: 32px → 24px
  • Line Spacing between Modal.Heading and Modal.Body: 24px → 16px

The Modal documentation on the Canvas Design System site will be updated to reflect the new touch and responsive behavior. No action will be required for developers to uptake this change. The new touch and responsive behaviors will be applied automatically as teams upgrade to v8.

Component Soft Deprecations

Drawer, Layout, and Menu (in Preview) will be soft deprecated in v8. Warnings will be added to notify users about the soft deprecation and subsequent hard deprecation in v9. The components will also be renamed to indicate that they are being deprecated.

These components will still be available for use in Canvas Kit v8, but will be accompanied by the deprecation warnings mentioned above. Codemods will be available to help developers uptake the component name changes as part of the soft deprecation, but developers using:

  • Drawer should start switching over to the Side Panel component in Preview, which contains the same capabilities as Drawer (and more!)
  • Layout should switch over to the new Grid component that will be released in v8
  • Menu in Preview should start switching over to the most updated Menu component in the Main package

New and Updated Documentation

New usage guidance will be released for the Modal and Popup documentation on the Canvas Design System site. The Tooltip documentation will be updated to include additional guidance for text wrapping and new documentation will be released for FormField.

Default Export Clean Up

The remaining default exports leftover in Canvas Kit will be removed as part of general Canvas Kit maintenance. A codemod will be available to help developers uptake the change and no actions will be required.

Internet Explorer 11 Deprecation

Canvas will stop supporting IE11 in v8. The IE11 deprecation will include:

  • Removing IE specific code from Canvas Kit
  • Turning off Chromatic for IE

No action will be required from developers to uptake this change. However, teams supporting IE11 should note that certain components and utilities may be built that IE11 cannot support. This means applications built using Canvas Kit React v8 and beyond may not be loaded or not work properly for users accessing it through IE11.

Testing Components and Utilities Promotion

The following testing components and utilities from the Common and Labs package will be promoted to a new package, @workday/canvas-kit-react/testing, which will only be used for visual testing purposes:

  • StaticStates
  • ComponentStatesTable
  • converToStaticStates
  • permutateProps
  • PropCombination
  • Props
  • PropDeclaration

A codemod will be available to help developers uptake this change, but no additional actions will be required.

Refactor and Reorganize Style Props

Style props will be reorganized and the implementation will be refactored, but the functionality will remain the same. This will improve the style prop documentation and allow Canvas to extend style props further in the future. The style props background and backgroundImage will be moving from the color style prop function to a new style prop function, background.

These functions are intended to only be used by Canvas Kit internally, and will not impact Canvas users. However, teams importing the color style prop function to apply these two style props will need to update their import statements to import the background style function as well.

Redesigned Status Indicator Component

A new Status Indicator component with title casing will be released in Preview, which will enhance its globalization capabilities and accessibility. The new Status Indicator component will differ from the current version in the Main package in the following areas:

  • Text Casing: The new Status Indicator in Preview will use title casing (ex: In Progress) instead of full capitalization (ex: IN PROGRESS) as full capitalization can be interpreted as rude or offensive in other languages.
  • Typography: added 12/14 Font Size Uppercase Bold (a one-off text style) to the Subtext L (Bold) type token for increased visibility and consistency
  • Icon Size: (14px, 14px) to (20px, 20px) for increased visibility
  • Height: 16px to 20px to accommodate a larger font and icon
  • Padding: 1px to 0px for top and bottom padding

This update will release a net-new component in the Preview package. The current Status Indicator component in the Main package will not be modified as part of this release. Developers can continue using the Status Indicator in Main and can transition to the new one in Preview as needed.

Redesigned Segmented Control Component

Segmented Control with text capabilities will be released in Preview to support newly identified use cases for text only variants.

Some key aspects of the component to note include:

  • Usage: Best used for switching between different views of the same content. Use Tabs for switching between content that is related but not the same. Segments are mutually exclusive and can contain text and/or icons.
  • Shape: The component will continue to feature squared corners to visually distinguish these controls and their purpose from Standard Buttons.
  • Color: Active/selected segment is white, French Vanilla 100 with a gray, Licorice 200 border against a light gray, Soap 200 container to make these controls less prominent than Standard Buttons.
  • Tooltips: Canvas Tooltips showing text labels will be added for Icon-only variants to improve accessibility for ambiguous icons.
  • Container: A container around the Segmented Control component has been added.

Since it will be released as a net-new component in Preview and no updates will be made to the current Segmented Control component in Main for v8, this update will not impact developers.

Default Update for Popup Close Buttons

The CloseButton for Popup, Modal, and Dialog will be updated to use a default type=button to prevent forms from unintentionally being submitted. This will not impact development, no action is required to uptake this change.

Action Bar Overflow Button Refactoring

In v7, the Overflow Button was hardcoded and placed directly inside ActionBar.List as part of an update to the Action Bar component. This prevented users from modifying the Overflow Button or passing props into it. To fix this issue, ActionBar.OverflowButton will be replaced with an overflowButton prop.

A codemod will handle this change when developers upgrade to v8.

Utility Soft Deprecations

The createEventMap and useEventMap utilities will be soft deprecated in v8. This soft deprecation adds a strike-through to the utilities in the code editor, but they will still be available for developers to use. However, teams using these utilities should switch over to the new Model and ToModelConfig utilities that were introduced in v7 as createEventMap and useEventMap will be hard deprecated in v9. The new Model and ToModelConfig utilities are much more verbose, leveraging Typecript 4.1 functionalities. These new utilities will help streamline the developer experience and reduce bugs associated with the old createEventMap and useEventMap utilities.

Since createEventMap and useEventMap are only being deprecated in v8, no action will be required from developers to uptake this change.

Can't Find What You Need?

Check out our FAQ section which may help you find the information you're looking for.

FAQ Section