UPDATE: Draft release notes and migration guide now available
The next release of Fluent UI React is going to be a little different than previous releases of this project and we wanted to help set expectations, detail some of its nuances, and set the stage for subsequent releases.
We view this next release as an incremental release that will set up customers, partners, and contributors for the team's collective vision of improving the baseline components used in all Microsoft 365 experiences. Going forward we will be making smaller, easy to consume, incremental releases of Fluent UI.
The Version 8 (v8) release will focus on:
[IN PREVIEW]
Composition utilitiesAll content in this issue is a work in progress and will not be final until we approach release.
Note: "v8" here refers to "version 8," not the v8 JavaScript engine.
Note: These dates are our best estimations.
| Milestone | Date |
| -------- | -------- |
| v8 snap* | September 25, 2020 |
| v8 beta release | October 19, 2020 |
| v8 official release | (tentative) November 30, 2020 |
*v8 snap: 7.0
branch is created. Fixes for v7 will need to go in 7.0
branch until beta release. After beta release, all fixes should go into master first then cherry-pick into 7.0
branch.
We are currently tracking the related work here.
Below is a more detailed overview of upcoming changes in v8. Please note, these are still subject to change before official release. Comprehensive release notes will be provided when release happens.
[Breaking]
Package renaming office-ui-fabric-react
to @fluentui/react
Starting in v8, you will need to install @fluentui/react@8
instead of office-ui-fabric-react@8
. More details and migration tips here.
[Breaking]
@uifabric
to @fluentui
package renamesIf time allows, we plan to move our @uifabric
packages to the @fluentui
scope, and in some cases change the names to better align with current conventions. For packages used by the suite ( See this issue for details.@fluentui/react
), we'll continue to publish aliases under the old @uifabric
names (until their major version bumps) to prevent consumers from needing duplicate dependency versions.
_Change of plan:_ We decided to rename all the packages without aliases, but will provide a codemod to help pick up the renames.
Starting with this release, sub-packages such as @uifabric/utilities
or @uifabric/merge-styles
will no longer move in major-lockstep with the suite: for each sub-package, unless it also has breaking changes, it will not major bump when the suite does.
The main benefit is that this will reduce duplicate dependencies for consumers who need a longer timeline to fully upgrade to the latest suite package version, and may have multiple versions of the suite in the same app bundle in the meantime.
_Change of plan:_ We've decided to major bump all the packages for this release, but will try to get rid of major-lockstep next release. (This was due to technical challenges of renaming packages from @uifabric
to @fluentui
and getting rid of major-lockstep at the same time, as well as time constraints.)
UNSAFE_*
)findDOMNode
[Breaking]
Function component conversionMost components are being converted from class components to function components (and the remaining components may be converted in a minor version). This work is being tracked here.
In general this will not result in a significant change to the component API surface. However, there are a few important implications, outlined in detail here.
Main points:
ref
prop works.ReactDOM.findDOMNode
is not supported for function components (a React limitation).state
is no longer supportedOur button components have a long history and debt. In order to truly improve them, we are essentially re-writing them. We're doing so with a lense of formalizing a styling API that we plan to adopt to more and more components over time. This comes with a set of breaking changes.
Button variants have been replaced with an entirely new button which is faster, smaller, and more customizable. It can be found in the @fluentui/react-button
package.
The Button component and variants leverage a new set of styling APIs that allow more predictibility, flexibility, and toolability. More details here.
More details coming soon!
[IN PREVIEW]
Composition UtilitiesThese "In Preview" utilties are meant for component authors to try out and give us feedback on creating new components like we did with the new Button component. Note that these APIs are subject to change as we learn and iterate with component authors.
Customizer
and Fabric
).Please see the draft release notes for a detailed list of breaking changes to individual components, including removal of certain props previously marked as deprecated.
The beta is now available on npm as @fluentui/react@beta
. We encourage you to try it out and provide us with any feedback.
(Release notes and migration guide coming soon!)
Question: How will customers upgrade from v7 to v8?
We will provide an upgrade-source
script which will apply renames to your code. Symbols, imports, and prop renames will be adjusted automatically, and references to deprecated things which have no automated alternative will add comments and links to explanations.
Question: What is the right way to theme Fluent UI?
More details coming soon!
Question: If we're using css variables, what guidance do we provide for developers who still need to support IE11?
We're planning on providing a polyfill for this. More detailed guidance will be provided when we release the beta.
I have a question about the "Icons updated to svg" topic. Will icon fonts still be supported? In our application we replaced the fabric icon font with a custom one. We register some of the icons under the same name like the fabric ones so all the fluent-ui react controls are automatically using our icons. Also at runtime we make heavy use of the iconName feature. Our application is plugin based and we need to have access to the whole icon library at runtime because we don't know in advance which icon is used from the plugins. For us the current icon font solution is perfect. It would be nice if we can continue to use it (atleast with a custom font) in V8.
Are there any plans to take up the below issue to "Convert Fabric to use rem" as by using rem we respect user preference even helps to make the UI more accessible and responsive.
https://github.com/microsoft/fluentui/issues/6014
We should consider #9698 in here.
@Kesshi Thanks for the callout on this - we'll need to be careful about how we roll this out to make sure we don't break your scenario; in the worst case scenario we will have an alternative way to keep this behavior so that you "opt in" to taking the bundle size hit. We want normal use cases to not be penalized by bundle size.
Will there be a browser usable release like this?
https://cdn.jsdelivr.net/npm/@fluentui/react@7.110.1/dist/fluentui-react.min.js
@dzearing Is Fleunt UI v8 equivalent to Fleunt UI v0?
I am a bit confused by seeing these two labels!
Can you please confirm when will Fluent UI V8 be released to public, even if its a Beta version?
We are currently designing a new UI, and we would love to start using the V8 version as soon as possible!
Thank you!
@abdullahsalem - V0 is referring @fluentui/react-northstar
. V8 is referring next version of @fluentui/react
/ office-ui-fabric-react
@vsspt -
We intend to release Fluent UI 8 in late summer 2020, and will be locking the feature changes by end of June.
We will provide update once we have something consumable
Will this version support the use of ReactDOMServer.renderToNodeStream(element)
for server side rendering?
The Charting package will be part of Fluent UI 8? BTW. I just created a project with V7 version, and so far the experience is excellent. The most satisfying surprise was how well TextField integrated with react-hook-form. Great stuff.
In react-next package , some component styles has changed from css-in-js to scss file,
can you provide some suggestion on development ?
where the css should in? still use css-in-js or move to scss file?
- Converge on a single theme context for all components across current and northstar components
- Unify on css variables as a delivery mechanism for theme vlaues
- Backwards compat for existing use cases for
loadTheme
,Customizer.applySettings
,Provider
, and<Customizer ...>
Question: _What is the right way to theme Fluent UI?_
Any update on that question?
Can we make the ability to themes apply to the entire site (page and components) more easy? It took me a long time to find an undocumented <Fabric applyThemeToBody>
component, which sadly does not update the body based on theme changes after the initial page load. Something that is similar to how it is done in Azure DevOps would be nice.
@dzearing, are there any news regarding the release date?
Will you include modifying the "theme generator" to let users choose their framework? With all of the different packages / variants of Fluent UI available it would be good for people to be able to choose what they want. I've already found some inconsistencies in the theme generator for the different versions (key differences etc). (https://fabricweb.z5.web.core.windows.net/pr-deploy-site/refs/heads/master/theming-designer/index.html)
For anyone interested, we've just updated the issue description with the current plan including a specific release timeline.
The issue description has been updated again with a higher-level summary of changes and some other additions.
The version 8 beta is now available on npm as @fluentui/react@beta
. Please try it out and let us know what you think! (Still working on an initial version of the release notes and migration guide but that should be ready soon.)
"Beta" release notes and migration guide are now available. These are still somewhat subject to change before the final release. If you notice anything missing, please let us know.
Most helpful comment
The version 8 beta is now available on npm as
@fluentui/react@beta
. Please try it out and let us know what you think! (Still working on an initial version of the release notes and migration guide but that should be ready soon.)