--- robots: nofollow, noindex tags: status --- # June Project Cycle: Sprint 51 & 52 (June 1 - June 26) ## Quick links [Sprint 51 (June 1 - June 12)][sprint51] [Full VSO backlog][backlog] [Fluent UI Roadmap](/zS7XP735R76Si87i7aI2Aw) ## Projects for June |Project|Status|Contributors| |---|---|---| | [Convergence - June](https://hackmd.io/LJfjwlDcQ8ythXbJTPUI4w) | Reviewed | **David**, Jon, Xu, Mak, Elizabeth, Ben | |[CodeMods - June](/W2QJM0SLQRapeQ_rk3m5RA)|Reviewed |**Jon** | |[Improve compose based on learnings from Menu and converged components](/x_opO2K1T42589AYebZ5vg)|Reviewed|Marija, Shift| |[Improve react-northstar performance (css expand during build time)](/sDyAkx_dTl2RmSfJ8OGnLA)|Reviewed|Shift, Miro| | [Pivot Overflow](/yltXoK0lTW2Lnv1uWt7-0w) |Reviewed|Ben| |Upgrade Teams to latest react-northstar|Tactical work|Marija, Miro, Shift| | Teams performance investigations/improvements | Tactical work | Levi | Teams integration of converged components (just button?) | Stretch goal | ... | | Convert v7 to eslint | In Progress | Elizabeth | | Converged Conformance Tests | In Progress | Esteban | |Shield|N/A|JD| |UI Builder - v7 components -> postpone (perf) |Later|Miro| |[Accessibility fixes](/QgeTil9FTd6pb5BVj0GWZw)|What needed when?|Paul| |[Real world Performance baselines](/dOufoJPzRD2z8xzIFbWqiA)|Writeup for June|Paul| |Strict Mode support (concurrent)|In-progress - Michael|Xu| | Continue IE11 testing with converged components | Need docs on how to use v8/northstar in Ie11 |Jon, David, Ben| |Repo in a box custom: Fluent UI React components|Later|...| |Open UI|Later|Levi| ### Convergence ### Project Name (**David**, Jon, Xu, Mak, Elizabeth, Ben) - End Status - Integrate components and refinements in the Ribbon (WAC) - KeyTips removal PR out (Button) - MenuButton in PR (or close) - Checkbox uses new svg Icons - Support slot props for label and icon - Next: - Split Button - Need Specs for MenuButton and SplitButton (README) - Drive work from Daisy/Sunmin figma specs - Accessibility, Iteraction, Tab Stops, Tokens - Theming needs variants support (needed for Ribbon) #### Achievements - PR open to remove KeytipData from V8 components. - Buttons can accept tokens inline as well as contextually - Demo'd to react-native folks, working on alignment tokesn - Demo'd to design, working on alignment of tokens - Started documentation on v8 theming here: https://hackmd.io/CtOj9T-qQQmaRiDsYo1o1A - Initial integration of Button into Office Ribbon - Bug bash from Prague caught lots of great issues, Mak/David addressing - codesandbox integration into PRs as a bonus - `build:min` added to deal with timeouts in sandbox builds - Function component conversion progress #### Objectives - Investigate if we can remove V7 Icon dependency for Checkbox and use `react-icons` instead, and how. - Add tokens support for Checkbox. - Finish off IE11 screener integration #### Learnings * Lots of edge cases with mergeProps and multiple layers of recomposition scenarios. Thank you Prague folks for the bug bash. * compose works well for our own scenarios, but for partner scenarios something a little lighter for creating named groups of customized token variants for a component, without a lot of work, would be ideal. * Customers have Button tweak scenarios - all buttons are 40px wide except one which is 20. * We need a way to extend the theme to have multiple button variants, and that you can easily opt in to them without recomposition. Super common: literally the same component with a slight difference in token values. * merge-styles didn't work with css variables due to typings and extra greedy kebab casing. Fix in PR. * Tokens can eliminates gobs and gobs of style overrides! * react-native compose not far off from react compose; opportunities to share utilities and patterns. Demos * Office ribbon with Button ==== Below is from previous week ==== Achievements * mergeProps integration into v0 - Perf issues with getNativeProps * Resolved by using handledProps v0 approach * createClassResolver integration with Button - Perf issues with loops and extraneous logic * Resolved by simplifying loops Merged both changes into Button code, reduced render time by 20%: Before: ![](https://i.imgur.com/nXhd17x.png) After: ![](https://i.imgur.com/Oi3bwgK.png) * Ramping up with Elizabeth on TextField plan * Working with IE11 polyfill author on resolution to class mutation issue * Merged state recomposition PR for recomposing things with state: ```tsx const ToggleButtonBase = compose(ButtonBase, { state: useToggleButton // transforms useButton output and adds additional state logic. ``` * Perf tests re-render support: ![](https://i.imgur.com/EiBEAii.png) Objectives * Get Button tokens PR reviewed and refined/merged - Done * Initial stab at token shape * Reviewed with Daisy and Sunmin * compat exports for old code to stage removing Keytips/Icons/styles * Improve perf numbers in Checkbox PR * Added perf test for validating tokens (inline tokens overhead) * Perf test for Theme Provider (injecting tokens, changing theme) * [v8] Need to validate button, toggle, checkbox in real world scenarios * Teams scenarios * Office.com scenarios - Cards * Start from v0 for actual convergence * Office WAC Ribbon (Scott) - Wants static CSS for perf benefit * Measure first, establish baseline * Ribbon heavily uses Button Learnings * Things impacting perf progress: * legacy styles support - we will drop support and export a compat layer which includes the old untouched code. * legacy icons usage - 6% overhead using base icon plus styling/theming dependency. * keytips contributes to bundle size; must be moved into it's own standalone package - we can't keep it going forward. * Legacy getNativeProps slow ## Codemods * [x] Jon starting this week * [x] Detects tsconfigs to automate run * [x] Testing out locally * Target EOW - to publish for others to use * Moving code into the fluent repo * [x] Single run command * Next Steps * Feedback on logging * Finish codemods for compat exports ## Compose - End status: - Need something other than compose for styling overrides Achievements * Met last week Objectives * Splitting compose into hooks prototype * Wrapping up typings * Menu component ### Performance in northstar * Split render times in telemetry between various categories ![](https://i.imgur.com/inaEQjQ.png) * Fela perf investigate - Robin not interested in perf numbers * Switching to emotion * *Static css still faster but maybe interim solution* * Untangled `renderer` from the implementation * Still using Fela * But can be simply switched to Emotion to test Teams perf impact and bugs. ## Pivot Overflow (Ben) - End Status: - In PR; waiting for final design **Achievements** * Pivot overflow is in PR: https://github.com/microsoft/fluentui/pull/13631 * Updated the implementation from last week to improve perf and reduce the number of layout cycles and calls to getBoundingClientRect. * Fixed bugs and incomplete features from last time (e.g. custom header rendering inside the overflow menu). * Waiting for final overflow menu behavior design. The user study had some issues and didn't finish last week. ETA from design is Friday 6/26. * Demo! Functionally similar to last time, but with better perf. **Objectives** * Finalize and merge PR * May need to make further changes to the design if it changes as a result of the user study that's happening this week. * Add support for ResizeObserver for cases where the pivot resizes due to DOM changes instead of window size changes. **Learnings** * Perf improvements can be a rabbit hole. I spent more time than I should have trying different approaches to improve the perf of calculating the overflow. **--- Below is from previous week ---** **Achievements** * Working draft of useOverflow hook, which hides items that overflow the parent container and shows an overflow menu * Hooked up useOverflow to Pivot * Populated overflow menu in Pivot with tabs **Objectives** * Add prop to Pivot to configure overflow behavior * Clean up code and submit a PR for useOverflow * Test and fix accessibility * Write tests for useOverflow and pivot with overflow * Support styling of items in overflow menu * If time permits, measure perf and evaluate different approaches to measuring the overflow container **Learnings** * Tried several approaches to measuring and hiding overflowing elements. I settled on a relatively simple one, but it may need to be modified depending on perf measurements. * Lots more reading and learning about the details of React hooks and HTML layout **Update** * Pull request out this week * Need input from Design * Need ETA ## Teams update to 0.47.0 - End Status: - Done and merged! - Getting in perf info as it rolls through the rings - Drastic improvements on re-render perf - Next: - 0.50.0 update underway - Upgrading icons first - Hoping to make it smoother ~~Still in progress, unsure when it will be produced.~~ Think we're done! TODO: Download with the team about experience * What it's like for product to go through a cycle * Demo of changes * Q&A ## eslint update * Hit perf issues a week ago; * Slower than tslint * Workaround for the main perf issue: Don't run expensive things in lint staged * Share learnings with OOUI Objectives * Get it out today and checked in over the next few days * PR for just config * Need review of PR when available Learnings * Deprecation is slower than tslint * Avoid running it in lint staged * Cache option to try to see if it improves perf Next steps * Working through issues in CI on config PR * Next - Make changes across many files to update tslint disable comments ## Conformance tests - End Status: - Issues with PR, working with Shift - Next (this week) - 10 more tests to finish up - PRs out by this week Objectives * Finishing tests this week * Trying to merge PR but currently blocked due to weird error (Shift is currently helping) Achievements * Merged about more than half the tests, working on the rest. ## Codesandbox - End Status: - Got react-next setup - Next: - Hitting a strange error, following up with codesandbox - Expect to be done this week ## Meta notes - Demos are good - Talking is good - Writing down is good? ## 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 [sprint49]: https://dev.azure.com/microsoftdesign/fluent-ui/_sprints/backlog/fluent-ui%20Team/fluent-ui/Sprint%2049 [sprint50]: https://dev.azure.com/microsoftdesign/fluent-ui/_sprints/backlog/fluent-ui%20Team/fluent-ui/Sprint%2050 [sprint51]: https://dev.azure.com/microsoftdesign/fluent-ui/_sprints/backlog/fluent-ui%20Team/fluent-ui/Sprint%2051 [sprint52]: https://dev.azure.com/microsoftdesign/fluent-ui/_sprints/backlog/fluent-ui%20Team/fluent-ui/Sprint%2052 [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 ### Projects In Progress in May |Project|Status|Contributors| |---|---|---| |[Convergence - May](/4v1f3b1jRAmpBbkCmV9YpA)|Reviewed|**David**, Jon, Ben, Xu, Mak| |[CodeMods - May](/W2QJM0SLQRapeQ_rk3m5RA)|Review Thurs|**Jon**, David, Ben| |[Base Theme & Teams Shell 2.0](https://hackmd.io/2lHy4oK-Sq6s2YBw8Aq61A?both=#)|Review Thurs|Levi| |[Compose cont. (Use in v0/converged)](https://hackmd.io/NcvmFBECRz2p9QoLwyT5Vg?edit)|Reviewed|Marija, Shift| |[UI Builder (Fabric, Material and composed components)](/nNmiEJpUR0q9VGWeDElODw)|Reviewed|Miroslav| ### Proposed Projects for July - Add v0 Debug & TelemetryGuard to Teams - Suitable style override API for Teams - Assist upgrading Teams to v0.50.x