# Scope for V8 fluentui/react [toc] Related: - [Fluent UI Roadmap: v8, v9, and beyond](/gjCV31eyT7ClBGStsmUbUg) - [v8 release logistics](/PR2qTS_1S3CYU8ungN3Dsw): extended discussion on details of how to handle major-lockstep or not, naming, and branching - [Draft release notes on github](https://github.com/microsoft/fluentui/blob/master/packages/react-next/RELEASE_NOTES.md) - [Epic issue on github](https://github.com/microsoft/fluentui/issues/12770) (we should probably update this at some point to be more current) - Project: [v8 release details](/jnJVbaYLTVePY5xkN_X6Dg?both) Disclamer: - Cost estimation is based on start date 8/11/2020. ## Main selling points for v8 - Strict mode support - Theme provider - css variables - New Button, ToggleButton, MenuButton, SplitButton - improved customizability (slots, tokens) - improved perf/bundle size - Codemods to improve release upgrades going forward - Component improvements - Pivot responsiveness ## Work items ### Strict mode [Elizabeth driving] [COPIED] Project plan: [Strict mode compliance (function component conversions part 2)](/lNERyu8eQZG84OKVmSw93Q) Tracking: [Github project](https://github.com/microsoft/fluentui/projects/35) - [ ] Can enable strict mode on all components - [ ] [Fix all remaining issues linked in github project](https://github.com/microsoft/fluentui/projects/35) - [ ] Remaining components/utilities not in progress (assign and get estimates) - [ ] ComboBox, Dropdown [Michael] - [ ] Autofill (tightly coupled to combobox and pickers) [Jon] - [ ] Lists [Thomas] - [Lists plan](/MBIDl1VcTBK_lsmiPakHpg) - [ ] Pickers [Jon] - [ ] withResponsiveMode (hard) [Jon] - [ ] Related cleanup / code quality assurance <!-- - [x] [Finish enabling eslint-plugin-react-hooks](https://github.com/microsoft/fluentui/pull/14478) [Elizabeth] --> - [ ] [Enable new conformance tests everywhere (and fix issues they reveal)](https://github.com/microsoft/fluentui/issues/14494) [Elizabeth?] - [ ] [Enable controlled usage warnings on all components which properly implement the controlled/uncontrolled pattern](https://github.com/microsoft/fluentui/issues/14456) [Elizabeth] - [ ] [Remove dependencies on react-dom once `findDOMNode` is removed](https://github.com/microsoft/fluentui/issues/11358) [TBD, 1 day] - [ ] Verify all changes in OUFR have been ported to react-next (including doc text updates) [Elizabeth] - [ ] [Validation of converted components](https://github.com/microsoft/fluentui/issues/14644) - [ ] Verify perf has not regressed (including in more realistic scenarios) - [ ] Could consider adding tests for areas of particular concern - [ ] Schedule bug bash for team - [ ] Beforehand, document areas of particular emphasis for testing - [ ] Add tests if possible for bugs found - [ ] Directly work with partners to test areas of particular concern - [ ] Need to identify these partners and get the work on their radar ### Package scaffolding [Xu, 5 days] [COPIED] Just package scaffolding and ship FC conversations, not new versions of these components. - [x] export `react-button` (v8) and have `/compat` Buttons (v7) - [ ] export `react-checkbox` (v7 + FC conversion) and have `/next` Checkbox - [ ] export `react-link` (v7 + FC conversion) and have `/next` Link - [ ] export `react-toggle` (v7 + FC conversion) and have `/next` Toggle - [ ] export `react-slider` (v7 + FC conversion) and have `/next` Slider - [ ] export `react-tabs` (v7 + FC conversion + overflow support) and `/next` ### ThemeProvider [Xu, 5 days] [COPIED] Main tracking issue https://github.com/microsoft/fluentui/issues/14661 - [x] support passing through v7 theme - [ ] v7 -> v8 theme conversion for button - [x] support scoped customizations - theme.scopedSettings or theme.components is forwarded to Customizer scoped settings - [ ] Updates to theme designer (update codepen snippet to use ThemeProvider) v7 theme - [ ] support `applyToBody` - [ ] support passing through v0 theme - [ ] documentation ### Composition [David] [complete copy not verified] - [x] lots of improvements from David - [ ] lock down typings (3 days) - [ ] do work (2day) - [ ] pr review and checkin (1day) - [ ] possibly move back to mutable (depends on if this causes issues or is worth the perf hit) - [ ] documentation (5 days) - [ ] Where do we put compose and v8 documentation? [@paulgildea] - [ ] official vs experimental - [ ] finalize shorthand prop interface (esp. for `children`) ### Button [complete copy not verified] - [ ] Flight in Ribbon [David] 10 days - [ ] Get flight set up so that code can be dogfooded - [ ] Tooltips and keytips - [ ] SplitButton integration (probably) - [ ] Variants integration - [ ] Variants PR, feedback merging - [ ] Fix any loose ends and handoff - [ ] Fix Button typings [David] 2 days - [ ] IE 11 polyfill on css variables [Tomi] (8 days) - [ ] Initial investigation - [ ] Scaffold polyfill package - [ ] Set up screener tests for IE11 - [ ] Test polyfill in Office - [ ] Docs for customers using IE11 - [ ] Potentially more workitems - [ ] Variants PR reviewed and checked in [David] 4 days - [ ] Finish implementing all the [button variations](https://hackmd.io/@fluentui/rynAN-vbD) [Xu, 7 days] - [ ] (maybe) use new button in existing use cases within our repo (e.g. commandbar) (8 days) - [ ] Add compat button docs to website [Mak] - [ ] Fit-finish button styling (should have no visual changes between old and new buttons) [Xu / Mak, 3 days] ### Codemods [Jon] [COPIED] #### Currently Planned codemods: - [x] Fabric to Fluent path rename - [ ] Component to Compat layer - [ ] Removing deprecated props and changing them to their replacements #### Remaining mod tasks: - [ ] Add ability to configure specific scenarios [Trip, 1 week] - [ ] Test in a big repo [Trip 1 week (expecting it will uncover many edge cases)] - [ ] Write how to guides on adding more codemods. [Trip, <1 day (after config is written)] ### Miscellaneous fixes and cleanup - [ ] [Remove `KeytipData` from components, and add more details to release notes for migration plan](https://github.com/microsoft/fluentui/issues/14674) [Xu, 3 days] - [ ] SpinButton [Elizabeth/TBD] - [ ] [Add onChange](https://github.com/microsoft/fluentui/issues/5326) [Elizabeth] - [ ] [Fix misleading `max` docs/behavior](https://github.com/microsoft/fluentui/issues/11358) [Elizabeth? or anyone] - [ ] Rename Grid to ButtonGrid or something [Elizabeth? or anyone] - https://github.com/microsoft/fluentui/issues/13124 - Mainly because this frees up the name Grid for an eventual CSS grid abstraction - [ ] [Set default box sizing to border-box for v8 components](https://github.com/microsoft/fluentui/issues/7531) [Xu, need to clarify] ### Other work items - [ ] **Verify all changes to OUFR have been ported to react-next** - [ ] Including doc text updates - [ ] Go through issues tagged "Fluent UI vNext" to check for important things: https://github.com/microsoft/fluentui/issues?q=is%3Aopen+is%3Aissue+label%3A%22Fluent+UI+vNext%22 - [ ] Determine what to do about date-time package - Motivation: We'd like to re-export the date-time versions of Calendar and DatePicker by default from the suite (because they're strict mode compliant and otherwise better), but we can't have the suite re-export components from date-time since they depend on other components which currently still live in the suite. - Proposed solution is a temporary workaround until date-time components' dep components are in separate packages: - Move existing Calendar and DatePicker to /compat (there are enough API changes that I'm hesitant to delete them entirely) - Move date-time Calendar and DatePicker to suite and export by default - Make date-time re-export suite Calendar and DatePicker - Update release notes about this - [ ] Increase TS minbar to 3.7? - [ ] Check with partners - [ ] [Clean up theme scss file generation and locations](https://github.com/microsoft/fluentui/issues/14498): should we continue shipping scss files in OUFR under `dist/sass` or require consumers to use `common-styles`? [Ben?] - [ ] Update [useStyles](https://github.com/microsoft/fluentui/pull/14641/files) to use `useTheme` ### Build and packaging updates See [v8 release logistics](/PR2qTS_1S3CYU8ungN3Dsw#Tasks) ### Release notes / migration guide [David, Mak, Elizabeth, others?] [COPIED] https://github.com/microsoft/fluentui/issues/14676 - [ ] Ensure all breaking changes are included - [ ] Go back through PRs from before we were updating release notes as carefully - [ ] Ensure the format is readable :) - [ ] Include new TS minbar (and React minbar, but I don't think that's changing) - [ ] Write guidance on: - [ ] Button migration (e.g styles, theming, props changes)[David, Mak] - [ ] Using codemods [Jon] - [ ] Merge high-level and specific stuff into github version or other appropriate location ### Communication - [ ] Announce beta date to community - [ ] Shortly before beta release: dev parts - [ ] Warn dev community about upcoming branching/contributing changes - [ ] Update contributor guidance (readmes, wiki) for making changes in v7 / what changes should go where - [ ] Finalize release notes and migration guide - [ ] Add a banner announcing the beta? - [ ] Announce the beta release - [ ] Shortly before release: dev parts - [ ] Replace beta guidance with "new version available!" type guidance - [ ] Ensure we don't retain any guidance which makes it sound like checking into 7.0 first should be the default - [ ] Announce the release ### Partner upgrade assistance ## Out of scope - converged Checkbox/Slider/Link/Toggle/Slider - a new Icon story for user using `react-icons` - V8 theme (instead, V7 or V0 theme can be passed via ThemeProvider and it works for `react-button`) - @uifabric to @fluentui package renames