---
# System prepended metadata

title: 'June Project Cycle: Sprint 51 & 52 (June 1 - June 26)'
tags: [status]

---

---
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
