--- robots: nofollow, noindex tags: status --- # November/December Project Cycle: (Nov 9 - Dec 31) ## Quick links [GitHub Milestone](https://github.com/microsoft/fluentui/milestone/19) [Create a New Proposal](https://github.com/microsoft/fluentui/issues/new?body=%23%20Project%20Proposal%0A%0A%23%23%20Problem%0A%23%23%20Appetite%0A%23%23%20Solution%0A%23%23%20Risks%20%28Rabbit%20holes%29%0A%23%23%20Out%20of%20scope%20%28No-gos%29&labels=Type:%20Feature) ## Proposed Projects for Nov/Dec |Project|Status|Contributors| |---|---|---| |[new Fluent UI icons (svg)](https://github.com/microsoft/fluentui/issues/15758)|[Publish New Icons](https://hackmd.io/KU2pQNXpRaG0UXZO8aDyNg) [Icon Convergence](https://hackmd.io/jg3hhF0qS9yPx41e9rukfw)|Tomi |[Separator Convergence](https://github.com/microsoft/fluentui/issues/15759)|Need Writeup|Josche| |[Consume react-button Buttons in TMP](https://github.com/microsoft/fluentui/issues/15897)|[Reviewed](https://hackmd.io/bv1a7fTTTOGfVqjnlTZz_g)|Mak, Miro| |[Consume ThemeProvider in TMP](https://github.com/microsoft/fluentui/issues/15749)|Reviewed|Xu, Miro| |[Memory consumption measurement for Teams/northstar](https://hackmd.io/4v71gvX0Td2aPGG8xSriAA)| Reviewed |Xu, CC: Levi, Miro| | [It's a repo in a box](https://github.com/microsoft/fluentui/issues/15900) + ecosystem| Need Detailed writeup | Jon, JD | |[v8 release tasks](https://github.com/microsoft/fluentui/projects/36)|GitHub Project |Elizabeth | |[Fluent UI upgrades (northstar)](/_7uLsbHXS6ytTBOvVNaURg)| Reviewed |Shift, Ling| |Start working on react-badge| Need Writeup |Ling| | Shield | | Ben | ## new Fluent UI icons (svg) ### Week 4 - 12/14 #### Achievements #### Objectives #### Learnings ### Week 3 - 12/8 #### Achievements - Wrapping up test suite for icon overrides - Documentation update on Fluent UI website comming soon - react-icons-mdl2 published #### Objectives - Update documentation on wiki page for the icons - Publish the new icon package - publishing of react-icons end of week #### Learnings - Markus will reach out to Angela/Peter on Icon usage flowchart ### Week 2 - 12/1 #### Achievements - Synced with Markus to start work on updating icon documentation. Need to add examples for react-icons-mdl2 package and update usage information for the package - Followed up with Andrew about usage of new package in Teams. It makes sense to use the new Fluent Icons package, with the caveat that some Teams icons have a viewBox set to `viewBox= 2 2 16 16` and the default Fluent Icon in the package is shipped as `viewBox= 0 0 20 20` so need to add padding to make it look right. #### Objectives - Add reference to package once published - Ablity to override icons globally - Finalize updating icon documentation - Update v8 components to leverage @fluentui/react-icons-mdl2 - May have some bundle size impacts for AMD - Follow up with Spencer on publishing react-icons-mdl2 #### Learnings ### Week 1 - 11/16 #### Achievements - Script is finished, waiting to be published to system repo #### Objectives - Add reference to package once published - Ablity to override icons globally - Updating icon documentation - Update v8 components to leverage @fluentui/react-icons-mdl2 - May have some bundle size impacts for AMD - Follow up with Andrew on Teams about his icon learnings - and using the new package #### Learnings ## Separator Convergence ### Week 4 - 12/14 #### Achievements - CreateComponent script done, out in PR - RFC for documentation in hackmd - OpenUI comparison for separator #### Objectives - Need to work with someone on resolving differences between v8 and northstar #### Learnings - Challenge here is reconciling differences between v8 and northstar ### Week 3 - 12/8 #### Achievements - CreatePackage and CreateComponent scripts in branch, in review #### Objectives - Working on this more this week #### Learnings ### Week 12/1 #### Achievements - Working on create package script - Adding create component script #### Objectives - Using script to create separator - Name Divider - Working on Open UI research #### Learnings - Decided on Divider name ### Week 1 - 11/16 #### Achievements #### Objectives #### Learnings ## Consume react-button Buttons in TMP ### Week 4 - 12/14 #### Achievements - `makeStyles` moved into separate package to allow for quicker iteration. - Added support for `global` selectors. - Added support for `variants`. - Mostly there in terms of styling of `Button` in `react-button` when compared to when it was using previous iteration of `makeStyles`. #### Objectives - Vet in northstar docsite and then transition into TMP once we feel good about it. - Fix screener issues. - Resolve API differences. #### Learnings ### Week 3 - 12/8 #### Achievements - Initial [draft PR](https://github.com/microsoft/fluentui/pull/16172) using prototype `makeStyles` to style `Button` in `react-button` - Styling mostly there but missing support for global selectors for focus scenarios. - Support for tokens and theming available but some token overrides seem to have broken in the process. - Concerns about bundle and perf hits, need to follow up with Miro and Shift. May be because of changes I made to support it. - It does solve the specifity issues. #### Objectives - Follow up on concerns above and get a plan for working with this in other components on January. - Vet in northstar docsite and then transition into TMP once we feel good about it. #### Learnings - Styling is hard. - `makeStyles` solves one the biggest issues. - The underlying framework is really good and flexible. ### Week 12/1 #### Achievements - Conversations on styling override approach ongoing #### Objectives - Porting API and styling differences - Resolving ambiguity #### Learnings - Styling is HARD, TMP is harder ### Week 1 - 11/16 #### Achievements - In sync this past week - Write up for makeStyles/component tokens? - [Link]() - Testing makeStyles in Office, Teams, Outlook - DOM order overrides might not work - Agreed to update makeStyles instead of using DOM order #### Objectives - Update makeStyles - Meet with David/Shift on the plan there #### Learnings - Component Tokens - complexity using variables ## Consume ThemeProvider in TMP ### Week 4 - 12/14 - Discussed different [API proposals](https://hackmd.io/Bz1xS3HRRYmsrZtmy_zpCg) for make animation styles. We will go with option 2 for now. - Tried using `makeStyles` for styling v7 components (Callout/Checkbox). #### Objectives - Try out using `makeStyles` on v7 examples. Summarize/fix any issue found. - Perf comparison between makeStyles and mergeStyles - Can we get more realworld testcases? #### Learnings ### Week 3 - 12/8 #### Achievements - Working on registering animations - Spent most time on memory investigation last week #### Objectives - PR for registering animations this week #### Learnings ### Week 12/1 #### Achievements - Understanding components styles in TMP - Close collaboration with Mak on Button work #### Objectives - Working on registering animations and font-faces without file scope - makeAnimations and makeFonts #### Learnings - Not possible to convert directly from TMP theme to converged theme - Convert scenario at a time ### Week 1 - 11/16 #### Achievements - Able to use `react-button` and `ThemeProvider` in v0 `docs` and got FUI screener running (thanks to Miro's help; [draft PR](https://github.com/microsoft/fluentui/pull/15914)) (this is typescript version of the button, tho not ideal) - Able to map `ButtonVariables` (in v0 theme) to `ButtonVariants` (in v8 theme) #### Objectives - Finish mapping `ButtonVariables` (in v0 theme) to `ButtonVariants` (in v8 theme) and add any missing button tokens to v8 - Support registering font faces and animations - Figure out how to handle `componentStyles`: likely path is to move most of these definitions to `Variables`/`Variants` and use `makeStyles` to create one-off style overrides (The way we migrate components styles it to component variables? for the ones that don't belong, move to makeStyles and create a classname?) #### Learnings - It's not required to converge on single renderer to unblock using `react-button` in TMP ## supporting styling in TMP (Miro & Shift) ### Week 4 - 12/14 #### Achievements - PR for `makeStyles` to merge it to master and simplify testing - tested on v8 button - global selectors - keyframes - media queries - converted object matchers to functions as proposed by David ```js // before: [[{primary: true}, {background: 'blue'}]] // after: [[p => p.primary, {background: 'blue'}]] // improved perf ``` - perf details: https://hackmd.io/pox-riItRQ2WeGGEWXmATw - on par with Emotion - 10-20% slower than CSS - 2x faster than Fela (current northstar) - IN SYNTHETIC TESTS #### Objectives - test in TMP - Perf numbers in TMP - test IE11 - build time magic #### Learnings - IE11 does not support `'string'.startsWith()` ### Week 3 - 12/8 #### Achievements - PoC implementation of makeStyles with atomic CSS - tested on couple of v0 components - summary of styling approaches we've tested so far: https://hackmd.io/9fuFHIVjQRSyPgeVQlh-tA #### Objectives - test on v8 button - discuss/address issues/concerns found by Mak - improve perf - test IE11 #### Learnings - new makeStyles perf seems to be comparable to Emotion - ~20% slower than static styles! ### Week 2 #### Achievements - Working on makeStyles update to meet TMP needs #### Objectives - Meeting to work out styling approach tomorrow #### Learnings ## Memory consumption measurement for Teams/northstar ### Week 4 - 12/14 #### Achievements - Presented initial measurements with teams #### Objectives - resolving feedback - Compare measurements in different environments - Electron - Windows vs Mac - Working on automating measurement #### Learnings ### Week 3 - 12/8 #### Achievements - Measurements available in ppt in chat #### Objectives - Share out with teams #### Learnings - see ppt ### Week 12/1 #### Achievements - Synced up on plan - Take initial measurements (mock chat scenario) - ETA this week #### Objectives - ETA on measurements this week #### Learnings - It's not clear where the hot spots for memory are - We need to provide estimates on memory cost of rendering fluent components - Manual is more useful than automation at this point ## It’s a repo in a box ### Week 4 - 12/14 #### Achievements - Worked on sample documentation consumption experience - Will share soon #### Objectives #### Learnings - Learnings around publishing on NPM - Training for folks on publishing components - A lot more documentation rather than one-off hand holding - Help teams know what they need to know ### Week 3 - 12/8 #### Achievements - Made some progress, no major updates #### Objectives - Demo to share end of week for feedback #### Learnings ### Week 12/1 #### Achievements - Looking at 3rd party teams-component library - Reaching out to other teams interested in publishing components of their own #### Objectives - Get a proposal doc for the work - Document experience for publishing and consuming components #### Learnings - Identified a lot of tooling support - Lean on standard js ecosystem tooling - Don't want to end up with large matainece cost here ### Week 1 - 11/16 #### Achievements #### Objectives #### Learnings ## v8 release tasks ### Week 4 - 12/14 #### Achievements #### Objectives #### Learnings ### Week 3 - 12/8 #### Achievements - Removing react-button as default export - No longer in @fluentui/react by default - Available in undocumented @fluentui/react-next - Follow up on this package - Still available in @fluentui/react-button package - Plan long term for converged components is via independent packages - Webpack file deduping, Dalimil from Wac working on this - Helps a lot with bundle size during upgrade #### Objectives - Website updated for version 8 - Communication updated on button and timeline #### Learnings - Verifying with partners before locking version 8 ### Week 12/1 #### Achievements - Found an issue (we already knew about). Got a bunch of spin button fixes merged. - Spin button onChange handler - Wrote up spec #### Objectives - Go through remainin v8 open issues, triage what needs to be done or not - Get website updated for v8 (thanks Mak!) #### Learnings - People are trying v8-beta! :tada: ### Week 1 - 11/16 ### Week 2 11/24 - spec for spin button - Figuring out when onChange called for spin button can be complicated - Making updates to the websites - Cherry pick all v7 commits as required - WAC going through v8 upgrade -> challenging - office online repo depends on packages in fabric internal -> depends on packages in the mdigard repo - dependency hell \o/ - Diamond dependency problems - Just upgrading some parts with v8 required aliasing - Webpack not being intelligent enough to dedupe modules, e.g. rename package from uifr to fluentui, duplication even if both have the same content - Is there a way to identify duplicate files as a webpack plugin and remove them ? plugins exist to dedupe but not generate aliasing - David looking into prototype plugin #### Achievements #### Objectives #### Learnings ## Fluent UI upgrades (northstar) - Ling ### Week 4 - 12/14 #### Achievements * All tests can be green consistently * Perf metrics are now available * Bundle size gates -> all chunks are smaller except for one * The one larger chunk is no longer blocking * Applied fixes for majority of currently reported issues #### Objectives * Hunt for more reviews -> 9 review groups * Convert blocking reviews to approvals #### Learnings * It's easy to create your own language/grammar to specify tests - terrible for maintenance * Cypress features are great for debugging/maintaining browser tests ### Week 3 - 12/8 #### Achievements - almost green CI - Bundle size gates (bundling lodash related to icons) - Working with ES folks in TMP - Positioning library (popper) smallish? issues - Feature teams to review and approve upgrade - Difficult as we go in December #### Objectives #### Learnings ### Week 12/1 #### Achievements - Upgrade PR can build with northstar v.51 - [HackMD with upgrade issues](/Hfewou_1TwWHiMTjRMG-pQ) #### Objectives - Work through outstanding list of issues - Working on getting to completely green CI (end to end tests) - 3/4 of end to end tests have updates/fixes - [shift] analyzing bundle size gates - Next step fixing regressions #### Learnings - Learning from bundle size investigation - Moved icons to JSX (should improve bundle size) - Multiwindow comes from different applications - Each app has own copy of fluentui (previous theme object was shared) - Icons are not shared - fluentui probably needs to be a shared bundle / vendors - Moving icons to theme chunk as workaround - include levi in conversations ### Week 1 - 11/16 ### Week 2 - 11/24 - Unit tests all green \o/ - Solved many TS issues caused by TS4 upgrade in TMP - Biggest blocker is E2E tests failing with visual regressions - Some caused by bugs - SOme caused by intentional design changes -> need feedback from feature teams - Main object hasn't changed -> Green CI - After green CI start the backporting and review chasing game Going! :car: #### Achievements - Migration of tmp to new icons - eslint plugin detect use of old icons at build time only catches half of usage #### Objectives - Fixing up unit test and end to end test - Issues around mocking hooks, this is biggest issue for unit tests - Requires understanding of why the hooks were mocked in the first place - [TODO] Ling link to examples in TMP - In tests - Use is drilling down into components and setting state directly - Accessing instance directly - Huge number of tests to update #### Learnings - Why mock hooks? - Unfamilarity with React? - Overuse of mocking, driving for code coverage - Found actual bugs in .51 - Can we improve tests to catch things like this? - This should be the default ## Start working on react-badge - Want to build converged badge directly using new component and styling model ### Week 4 - 12/14 #### Achievements #### Objectives #### Learnings ### Week 3 - 12/8 #### Achievements #### Objectives #### Learnings ### Week 12/1 #### Achievements - Full time on TMP upgrade - Charles did badge open ui research - [todo link] #### Objectives #### Learnings ### Week 1 - 11/16 #### Achievements #### Objectives #### Learnings --- ## Projects from October |Project|Status|Contributors| |---|---|---| |[v8 release tasks](https://github.com/microsoft/fluentui/projects/36)|GitHub Project |Elizabeth, Xu, Jon, Mak | |[Fluent UI upgrades (northstar)](/_7uLsbHXS6ytTBOvVNaURg)| Reviewed |Miro + Jon| |[Versioned docsite for northstar](/roW27OhISDmCcQnOm2hviA)| Reviewed | Ling | |Avatar, Badge/Status| | Ben| |[Converge Tabs](https://hackmd.io/JaKTijmWS2a5bJU4CvI5iQ)| | Ben| |[Bug bash! _Subset of v8 release tasks_]( https://hackmd.io/OhQnHLNMQgqeLGGCNYQNSQ?both) |Done | Jon |Integrate hooks and utilities into react-northstar| On-Hold| Levi | |Shield| | Tomi| |Bug fixing|Done|Jon| |[v8 IE11 polyfill alternative](https://hackmd.io/SVBThXZNSimOx3t-RDbygw)||David, Tomi, Xu| --- # More projects for Later |Project|Status|Contributors| |---|---|---| |[Validate hooks approach in v0](https://hackmd.io/fOIeQHflTnymsE4uxKpCpA)||Levi| |[Tooltip](https://hackmd.io/6RdyiPsYQvu0Ljy3FVWuFA)| Reviewed |Josche/Mak| |Add v0 Debug & TelemetryGuard to Teams||| |Add perf telemetry to v7||Later| |Script/Codemod to rename all the IPrefix interfaces [#10266](https://github.com/microsoft/fluentui/issues/10266)||| |v0 Docs site - make sure examples for each prop exist and are reasonable||| |Customer connection/feedback/gripes | | Paul| |Allow typescript to be imported?|Write Proposal|Shift/Levi + Elizabeth| |Menu component||Ben/Tomi + Charles| ## More links [Shared OneNote for eng process][onenote] [Accessibility Issues](https://dev.azure.com/microsoftdesign/fluent-ui/_queries/query/ab37cec7-fd8f-4828-99ac-d56e65396ada/) [backlog]: https://dev.azure.com/microsoftdesign/fluent-ui/_backlogs/backlog/fluent-ui%20Team/Epics [issues]: https://github.com/OfficeDev/office-ui-fabric-react/issues [onenote]: https://microsoft.sharepoint-df.com/:o:/t/FluentUIInternal/Ev_x5WbQI6tJmn2s87RzRPMBTG3d0gmYJN6QCpQttOFyzw?e=rnbj9H [sprint53]: https://dev.azure.com/microsoftdesign/fluent-ui/_sprints/backlog/fluent-ui%20Team/fluent-ui/Sprint%2053 [onelibrary]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4469 [theming]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4464 [performance]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4462 [composition]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4465 [onerepo]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4468 [onelib]: https://dev.azure.com/microsoftdesign/fluent-ui/_workitems/edit/4469