Skip to content

Updates Coming to FURN (02 11 2022)

Ruriko Araki edited this page Feb 11, 2022 · 1 revision

Updated controls

We have been working on an effort to update, stabilize, and visually refresh our components, putting our focus on Win32 and macOS platforms first.

We want to offer controls that have a higher quality of visuals and have better consistency with similar frameworks on other platforms. These controls will have updated designs and have an updated set of props and tokens. Our updated components should have less churn and have a good range of capabilities. These controls set us up so that future design changes can be implemented more easily. Our new controls will continue to have accessibility and RTL support, better automation coverage, and flushed out documentation. This change also allows us to deprecate our older frameworks, reducing the size of our package. All in all, we are aiming for improvements on many fronts.

Update process

One question we need to tackle to reach this goal is how we move from having "experimental" components to just having them be our components, and how we deprecate the old compose framework. We have considered a few approaches but have landed on an approach that lets us slowly release components as they are completed, while giving time for users to move to the updated controls.

We would migrate components over in stages, giving some stability for users while also moving us incrementally forward. This involves the following:

  1. Moving the code for a component from the experimental folder into the component folder
  2. Marking the current code in the component folder as deprecated.
  3. Exporting the newly copied over code as the new component of that package.
  4. Delete those component’s older versions after three months. Bump that component's package's major version.
  5. Bump FURN’s major version when everything is updated to signal migration completion.

We considered leaving everything in experimental until we were ready to move everything over, however we thought that it would keep users from using the new components if they were not part of the core package, so we decided to adopt this incremental approach.

Updates to Button control

We're getting ready to release our first updated component, the Button. We will soon be releasing an update to the FURN package which marks the older Button component as deprecated and has documentation directing you how to update to the new version of the component. Anyone who is using the @fluentui-react-native/experimental-button package will also see a deprecation warning, as the contents of that package have been moved to the existing @fluentui-react-native/button package.

There is more spacing around elements, brand colors have been updated to be lighter, and there are more variations of Buttons like block, which stretch the width of the parent element, and compound, which lets you add an additional line of descriptive text to the Button. Focus visuals are now rendered on the native side so that they match other native controls. Examples can be seen in the Tester App.

Future updates

We are now working on updates to Avatar and Checkbox, and work is planned for ContextMenu, MenuButton, Text, Link, and Toggle components in the next few months. The update process will be similar to the Button component.