Skip to content

chore: migrate to yarn modern#35747

Open
mainframev wants to merge 32 commits intomicrosoft:masterfrom
mainframev:chore/migrate-to-yarn-modern-core
Open

chore: migrate to yarn modern#35747
mainframev wants to merge 32 commits intomicrosoft:masterfrom
mainframev:chore/migrate-to-yarn-modern-core

Conversation

@mainframev
Copy link
Contributor

@mainframev mainframev commented Feb 12, 2026

Migrated FluentUI monorepo from Yarn Classic (v3 bundled CLI) to Yarn Modern (Berry v4.12.0) using nodeLinker: node-modules for full compatibility. No PnP - traditional node_modules/ structure is preserved.

Previous Behavior

Yarn v1

New Behavior

Yarn v4

Yarn binary & configuration

  • Replaced .yarn/releases/cli.js with .yarn/releases/yarn-4.12.0.cjs (942 lines)
  • Created .yarnrc.yml with nodeLinker: node-modules and yarnPath pointing to the new binary
  • Added "packageManager": "yarn@4.12.0" to root package.json for corepack enforcement
  • Added logFilters to suppress noisy YN0002 peer dependency warnings
  • Regenerated yarn.lock in Yarn Modern format

Scripts: just-scripts build → yarn run -T just-scripts build

  • Updated 56 package.json files to prefix binary calls with yarn run -T
  • Why: Yarn Modern only resolves binaries from a workspace's own dependencies. yarn run -T ("Top-level") explicitly resolves from root devDependencies.
  • Updated the NX workspace plugin (tools/workspace-plugin/src/plugins/workspace-plugin.ts) to use exec: 'yarn run -T' for all inferred targets
  • Added test-ssr as a root script alias — NX-inferred targets use yarn run -T test-ssr but test-ssr is a workspace binary that needs explicit resolution

Resolutions

Syntax change: modern yarn doesn't preserve **/parent/child glob resolutions in practice (strips them during yarn install), so security overrides were flattened from master's scoped form.

@github-actions
Copy link

github-actions bot commented Feb 12, 2026

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
react-charting
AreaChart
302.827 kB
94.751 kB
299.836 kB
94.19 kB
-2.991 kB
-561 B
react-charting
DeclarativeChart
677.039 kB
191.279 kB
673.552 kB
190.617 kB
-3.487 kB
-662 B
react-charting
GanttChart
282.797 kB
88.761 kB
279.806 kB
88.225 kB
-2.991 kB
-536 B
react-charting
GroupedVerticalBarChart
294.547 kB
91.782 kB
291.556 kB
91.264 kB
-2.991 kB
-518 B
react-charting
HeatMapChart
285.643 kB
89.439 kB
282.652 kB
88.898 kB
-2.991 kB
-541 B
react-charting
HorizontalBarChartWithAxis
293.937 kB
91.167 kB
290.946 kB
90.604 kB
-2.991 kB
-563 B
react-charting
LineChart
332.438 kB
101.79 kB
329.447 kB
101.235 kB
-2.991 kB
-555 B
react-charting
PolarChart
235.153 kB
74.294 kB
232.162 kB
73.585 kB
-2.991 kB
-709 B
react-charting
SankeyChart
158.002 kB
49.166 kB
157.871 kB
49.169 kB
-131 B
3 B
react-charting
ScatterChart
289.004 kB
91.071 kB
286.013 kB
90.489 kB
-2.991 kB
-582 B
react-charting
VerticalBarChart
303.589 kB
93.173 kB
300.598 kB
92.644 kB
-2.991 kB
-529 B
react-charting
VerticalStackedBarChart
300.577 kB
92.782 kB
297.586 kB
92.27 kB
-2.991 kB
-512 B
react-charts
AreaChart
412.369 kB
126.436 kB
409.378 kB
125.866 kB
-2.991 kB
-570 B
react-charts
DeclarativeChart
763.093 kB
220.471 kB
759.606 kB
219.8 kB
-3.487 kB
-671 B
react-charts
GanttChart
395.488 kB
119.947 kB
392.497 kB
119.397 kB
-2.991 kB
-550 B
react-charts
GroupedVerticalBarChart
403.358 kB
122.516 kB
400.367 kB
121.967 kB
-2.991 kB
-549 B
react-charts
HeatMapChart
397.559 kB
121.802 kB
394.568 kB
121.209 kB
-2.991 kB
-593 B
react-charts
LineChart
423.71 kB
128.491 kB
420.719 kB
127.972 kB
-2.991 kB
-519 B
react-charts
PolarChart
351.416 kB
107.38 kB
348.425 kB
106.562 kB
-2.991 kB
-818 B
react-charts
SankeyChart
220.381 kB
67.866 kB
220.249 kB
67.85 kB
-132 B
-16 B
react-charts
ScatterChart
403.085 kB
122.621 kB
400.094 kB
122.07 kB
-2.991 kB
-551 B
react-charts
VerticalBarChart
439.829 kB
128.225 kB
436.838 kB
127.692 kB
-2.991 kB
-533 B
react-charts
VerticalStackedBarChart
409.354 kB
124.017 kB
406.363 kB
123.519 kB
-2.991 kB
-498 B
react-components
react-components: entire library
1.296 MB
323.968 kB
1.296 MB
324.029 kB
136 B
61 B
Unchanged fixtures
Package & Exports Size (minified/GZIP)
global-context
createContext
510 B
328 B
global-context
createContextSelector
537 B
339 B
keyboard-key
keyboard-key package
3.746 kB
1.928 kB
keyboard-keys
Multiple keyCodes
50 B
70 B
keyboard-keys
Multiple keys
87 B
94 B
keyboard-keys
Single key
44 B
64 B
keyboard-keys
Single keyCode
39 B
59 B
priority-overflow
createOverflowManager
4.584 kB
1.873 kB
react
ActivityItem
71.22 kB
23.347 kB
react
Announced
38.472 kB
13.275 kB
react
Autofill
15.42 kB
4.766 kB
react
Breadcrumb
200.805 kB
59.601 kB
react
Button
194.354 kB
55.886 kB
react
ButtonGrid
179.242 kB
53.891 kB
react
Calendar
121.162 kB
36.83 kB
react
Callout
84.299 kB
27.593 kB
react
Check
53.206 kB
17.835 kB
react
Checkbox
59.978 kB
19.874 kB
react
ChoiceGroup
65.488 kB
21.465 kB
react
ChoiceGroupOption
58.769 kB
19.353 kB
react
Coachmark
92.7 kB
29.305 kB
react
Color
7.789 kB
3.127 kB
react
ColorPicker
134.97 kB
42.125 kB
react
ComboBox
250.687 kB
71.515 kB
react
CommandBar
201.861 kB
59.387 kB
react
ContextualMenu
154.229 kB
47.566 kB
react
DatePicker
183.251 kB
55.892 kB
react
DateTimeUtilities
5.244 kB
1.849 kB
react
DetailsList
229.929 kB
65.81 kB
react
Dialog
210.16 kB
62.358 kB
react
Divider
19.588 kB
6.84 kB
react
DocumentCard
215.843 kB
63.666 kB
react
DragDrop
8.343 kB
2.724 kB
react
DraggableZone
34.28 kB
11.488 kB
react
Dropdown
233.151 kB
67.962 kB
react
ExtendedPicker
96.823 kB
27.866 kB
react
Fabric
41.728 kB
14.343 kB
react
Facepile
209.377 kB
62.375 kB
react
FloatingPicker
240.865 kB
68.222 kB
react
FocusTrapZone
16.99 kB
5.891 kB
react
FocusZone
55.1 kB
17.451 kB
react
Grid
179.242 kB
53.891 kB
react
GroupedList
135.035 kB
40.67 kB
react
GroupedListV2
122.659 kB
37.758 kB
react
HoverCard
96.784 kB
30.688 kB
react
Icon
51.887 kB
17.263 kB
react
Icons
66.339 kB
24.385 kB
react
Image
46.901 kB
15.695 kB
react
Keytip
81.301 kB
26.677 kB
react
KeytipData
14.05 kB
4.583 kB
react
KeytipLayer
103.089 kB
31.9 kB
react
Keytips
105.873 kB
32.904 kB
react
Label
38.324 kB
13.241 kB
react
Layer
48.089 kB
16.348 kB
react
Link
39.665 kB
13.653 kB
react
List
39.346 kB
12.454 kB
react
MarqueeSelection
74.49 kB
22.402 kB
react
MessageBar
189.388 kB
56.33 kB
react
Modal
93.738 kB
30.223 kB
react
Nav
186.825 kB
55.723 kB
react
OverflowSet
33.354 kB
11.282 kB
react
Overlay
40.885 kB
14.077 kB
react
Panel
200.327 kB
59.336 kB
react
Persona
114.591 kB
36.435 kB
react
PersonaCoin
114.591 kB
36.435 kB
react
PersonaPresence
58.076 kB
19.372 kB
react
Pickers
297.91 kB
82.996 kB
react
Pivot
187.734 kB
56.5 kB
react
Popup
12.312 kB
4.197 kB
react
Positioning
22.764 kB
7.683 kB
react
PositioningContainer
73.445 kB
23.685 kB
react
ProgressIndicator
39.477 kB
13.528 kB
react
Rating
82.086 kB
26.09 kB
react
Fluent UI React (entire library)
1.019 MB
283.183 kB
react
ResizeGroup
13.35 kB
4.379 kB
react
ResponsiveMode
8.13 kB
2.966 kB
react
ScrollablePane
55.541 kB
17.718 kB
react
SearchBox
187.63 kB
55.936 kB
react
SelectableOption
724 B
413 B
react
SelectedItemsList
231.35 kB
67.176 kB
react
Selection
42.418 kB
12.26 kB
react
Separator
35.365 kB
12.132 kB
react
Shimmer
49.249 kB
16.258 kB
react
ShimmeredDetailsList
240.71 kB
68.549 kB
react
Slider
57.627 kB
19.198 kB
react
SpinButton
191.297 kB
57.006 kB
react
Spinner
41.759 kB
14.468 kB
react
Stack
42.039 kB
14.389 kB
react
Sticky
32.577 kB
10.488 kB
react
Styling
46.033 kB
15.135 kB
react
SwatchColorPicker
189.637 kB
57.417 kB
react
TeachingBubble
204.648 kB
60.317 kB
react
Text
36.886 kB
12.806 kB
react
TextField
80.798 kB
25.308 kB
react
Theme
43.486 kB
14.168 kB
react
ThemeGenerator
12.384 kB
4.116 kB
react
TimePicker
240.515 kB
69.311 kB
react
Toggle
46.201 kB
15.957 kB
react
Tooltip
87.073 kB
28.151 kB
react
Utilities
82.938 kB
25.15 kB
react
Viewport
23.872 kB
7.642 kB
react
WeeklyDayPicker
101.348 kB
31.644 kB
react
WindowProvider
1.059 kB
541 B
react-accordion
Accordion (including children components)
103.471 kB
31.341 kB
react-aria
ARIA - Default
237 B
181 B
react-avatar
Avatar
48.367 kB
15.336 kB
react-avatar
AvatarGroup
17.45 kB
6.995 kB
react-avatar
AvatarGroupItem
61.608 kB
19.326 kB
react-badge
Badge
24.24 kB
7.879 kB
react-badge
CounterBadge
24.963 kB
8.135 kB
react-badge
PresenceBadge
24.172 kB
8.809 kB
react-breadcrumb
@fluentui/react-breadcrumb - package
115.355 kB
31.542 kB
react-button
Button
33.962 kB
9.022 kB
react-button
CompoundButton
40.843 kB
10.379 kB
react-button
MenuButton
38.866 kB
10.414 kB
react-button
SplitButton
47.663 kB
12.057 kB
react-button
ToggleButton
53.634 kB
11.155 kB
react-calendar-compat
Calendar Compat
149.292 kB
39.866 kB
react-card
Card - All
105.131 kB
29.449 kB
react-card
Card
97.799 kB
27.572 kB
react-card
CardFooter
12.756 kB
5.109 kB
react-card
CardHeader
15.289 kB
5.972 kB
react-card
CardPreview
12.84 kB
5.248 kB
react-charting
ChartHoverCard
37.196 kB
12.7 kB
react-charting
DonutChart
203.503 kB
63.649 kB
react-charting
GaugeChart
197.055 kB
61.221 kB
react-charting
HorizontalBarChart
127.266 kB
39.944 kB
react-charting
Legends
151.485 kB
46.4 kB
react-charting
MultiStackedBarChart
181.737 kB
55.262 kB
react-charting
PieChart
134.305 kB
42.299 kB
react-charting
Sparkline
87.616 kB
29.671 kB
react-charting
StackedBarChart
175.418 kB
52.858 kB
react-charting
TreeChart
84.809 kB
26.636 kB
react-charts
DonutChart
322.798 kB
96.987 kB
react-charts
FunnelChart
314.351 kB
94.048 kB
react-charts
GaugeChart
322.229 kB
96.435 kB
react-charts
HorizontalBarChart
302.525 kB
89.127 kB
react-charts
HorizontalBarChartWithAxis
63 B
83 B
react-charts
Legends
242.471 kB
71.602 kB
react-charts
Sparkline
91.393 kB
28.708 kB
react-checkbox
Checkbox
33.522 kB
11.407 kB
react-color-picker
ColorArea
47.538 kB
16.698 kB
react-color-picker
ColorPicker
16.169 kB
6.523 kB
react-color-picker
ColorSlider
39.712 kB
14.744 kB
react-combobox
Combobox (including child components)
105.208 kB
34.168 kB
react-combobox
Dropdown (including child components)
105.832 kB
34.1 kB
react-components
react-components: Button, FluentProvider & webLightTheme
70.397 kB
19.96 kB
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
236.65 kB
68.725 kB
react-components
react-components: FluentProvider & webLightTheme
43.612 kB
14.022 kB
react-datepicker-compat
DatePicker Compat
225.158 kB
63.633 kB
react-dialog
Dialog (including children components)
102.12 kB
30.394 kB
react-divider
Divider
16.354 kB
5.928 kB
react-field
Field
22.083 kB
8.337 kB
react-image
Image
13.608 kB
5.533 kB
react-input
Input
26.28 kB
8.702 kB
react-jsx-runtime
Classic Pragma
1.101 kB
550 B
react-jsx-runtime
JSX Dev Runtime
1.914 kB
908 B
react-jsx-runtime
JSX Runtime
2.268 kB
1.019 kB
react-label
Label
12.904 kB
5.241 kB
react-link
Link
16.128 kB
6.441 kB
react-list
List
87.11 kB
25.762 kB
react-list
ListItem
110.695 kB
32.627 kB
react-menu
Menu (including children components)
170.313 kB
51.895 kB
react-menu
Menu (including selectable components)
173.491 kB
52.475 kB
react-message-bar
MessageBar (all components)
23.294 kB
8.63 kB
react-motion
@fluentui/react-motion - createMotionComponent()
4.156 kB
1.818 kB
react-motion
@fluentui/react-motion - createPresenceComponent()
5.908 kB
2.442 kB
react-motion
@fluentui/react-motion - PresenceGroup
1.727 kB
823 B
react-overflow
hooks only
12.117 kB
4.627 kB
react-persona
Persona
55.322 kB
17.279 kB
react-popover
Popover
133.719 kB
41.451 kB
react-portal
Portal
15.55 kB
5.398 kB
react-portal-compat
PortalCompatProvider
8.386 kB
2.624 kB
react-positioning
usePositioning
28.889 kB
10.158 kB
react-positioning
useSafeZoneArea
12.445 kB
5 kB
react-progress
ProgressBar
15.7 kB
6.214 kB
react-provider
FluentProvider
23 kB
8.194 kB
react-radio
Radio
30.905 kB
9.611 kB
react-radio
RadioGroup
13.994 kB
5.688 kB
react-select
Select
26.085 kB
9.437 kB
react-slider
Slider
36.356 kB
12.08 kB
react-spinbutton
SpinButton
33.637 kB
11.067 kB
react-spinner
Spinner
23.539 kB
7.815 kB
react-swatch-picker
@fluentui/react-swatch-picker - package
104.305 kB
29.944 kB
react-switch
Switch
36.105 kB
11.011 kB
react-table
DataGrid
159.313 kB
44.939 kB
react-table
Table (Primitives only)
40.997 kB
13.172 kB
react-table
Table as DataGrid
130.528 kB
35.943 kB
react-table
Table (Selection only)
68.916 kB
19.309 kB
react-table
Table (Sort only)
67.559 kB
18.924 kB
react-tag-picker
@fluentui/react-tag-picker - package
186.596 kB
55.849 kB
react-tags
InteractionTag
13.666 kB
5.459 kB
react-tags
Tag
29.521 kB
9.389 kB
react-tags
TagGroup
82.211 kB
24.143 kB
react-teaching-popover
TeachingPopover
112.414 kB
34.219 kB
react-text
Text - Default
15.295 kB
5.965 kB
react-text
Text - Wrappers
18.455 kB
6.292 kB
react-textarea
Textarea
24.668 kB
8.969 kB
react-theme
Single theme token import
69 B
89 B
react-theme
Teams: all themes
37.985 kB
7.895 kB
react-theme
Teams: Light theme
20.803 kB
5.851 kB
react-timepicker-compat
TimePicker
108.174 kB
35.695 kB
react-toast
Toast (including Toaster)
102.56 kB
30.608 kB
react-tooltip
Tooltip
57.1 kB
19.696 kB
react-tree
FlatTree
147.635 kB
42.134 kB
react-tree
PersonaFlatTree
149.463 kB
42.517 kB
react-tree
PersonaTree
145.523 kB
41.338 kB
react-tree
Tree
143.701 kB
40.972 kB
react-utilities
SSRProvider
180 B
160 B
🤖 This report was generated against 109610e4667712e7f93bf0ec3bc5d3052c900288

@@ -38,7 +38,7 @@ runs:
cache: 'yarn'
Copy link

@github-actions github-actions bot Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/CalendarCompat 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/CalendarCompat.multiDayView - Dark Mode.default.chromium.png 1094 Changed
vr-tests-react-components/CalendarCompat.multiDayView - High Contrast.default.chromium.png 1197 Changed
vr-tests-react-components/CalendarCompat.multiDayView.default.chromium_1.png 479 Changed
vr-tests-react-components/CalendarCompat.multiDayView.default.chromium.png 478 Changed
vr-tests-react-components/Charts-DonutChart 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic - Dark Mode.default.chromium.png 7530 Changed
vr-tests-react-components/Charts-DonutChart.Dynamic - RTL.default.chromium.png 5570 Changed
vr-tests-react-components/Charts-DonutChart.Dynamic.default.chromium.png 5581 Changed
vr-tests-react-components/Menu 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Menu.Nested Submenus Small Viewport Stacked.nested menu.chromium.png 399 Changed
vr-tests-react-components/Menu Converged - submenuIndicator slotted content 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default - RTL.submenus open.chromium.png 404 Changed
vr-tests-react-components/Positioning 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.chromium.png 882 Changed
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 149 Changed
vr-tests-react-components/TagPicker 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/TagPicker.disabled - Dark Mode.disabled input hover.chromium.png 658 Changed
vr-tests-react-components/TagPicker.disabled - RTL.chromium.png 635 Changed
vr-tests-react-components/TagPicker.disabled - High Contrast.chromium.png 1319 Changed
vr-tests-react-components/TagPicker.disabled.disabled input hover.chromium.png 677 Changed
vr-tests-web-components/Accordion 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-web-components/Accordion. - Dark Mode.normal.chromium_1.png 3154 Changed
vr-tests-web-components/Avatar 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-web-components/Avatar. - Dark Mode.normal.chromium_1.png 298 Changed
vr-tests-web-components/MenuList 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-web-components/MenuList. - Dark Mode.normal.chromium.png 498 Changed
vr-tests-web-components/MenuList. - RTL.1st selected.chromium_2.png 39384 Changed
vr-tests-web-components/MenuList. - RTL.normal.chromium_1.png 39083 Changed
vr-tests-web-components/MenuList. - RTL.2nd selected.chromium_3.png 38816 Changed
vr-tests-web-components/TextInput 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-web-components/TextInput. - Dark Mode.normal.chromium_1.png 288 Changed
vr-tests/Callout 9 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Callout.Bottom center.default.chromium.png 2128 Changed
vr-tests/Callout.Left top edge.default.chromium.png 2183 Changed
vr-tests/Callout.Bottom right edge - RTL.default.chromium.png 1124 Changed
vr-tests/Callout.Left bottom edge.default.chromium.png 3182 Changed
vr-tests/Callout.Gap space 25.default.chromium.png 2195 Changed
vr-tests/Callout.No beak.default.chromium.png 2192 Changed
vr-tests/Callout.No callout width specified.default.chromium.png 2143 Changed
vr-tests/Callout.Rendering callout attached to a rectangle.default.chromium.png 1835 Changed
vr-tests/Callout.Root.default.chromium.png 2195 Changed
vr-tests/Coachmark 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Coachmark.Collapsed.default.chromium.png 159 Changed
vr-tests/Keytip 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Keytip.Disabled.default.chromium.png 24 Changed
vr-tests/Keytip.Offset.default.chromium.png 86 Changed
vr-tests/Keytip.Root.default.chromium.png 55 Changed
vr-tests/react-charting-AreaChart 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/react-charting-AreaChart.Custom Accessibility.default.chromium.png 11 Changed
vr-tests/react-charting-GaugeChart 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/react-charting-GaugeChart.Basic.default.chromium.png 2 Changed
vr-tests/react-charting-MultiStackBarChart 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/react-charting-MultiStackBarChart.Basic_Absolute - RTL.default.chromium.png 343 Changed
vr-tests/react-charting-MultiStackBarChart.Basic_Absolute.default.chromium.png 359 Changed
vr-tests/react-charting-MultiStackBarChart.Basic_PartToWhole - RTL.default.chromium.png 343 Changed
vr-tests/react-charting-MultiStackBarChart.Basic_PartToWhole.default.chromium.png 359 Changed

There were 7 duplicate changes discarded. Check the build logs for more information.

@mainframev mainframev force-pushed the chore/migrate-to-yarn-modern-core branch 4 times, most recently from 7bdc1bc to 6b5f740 Compare February 16, 2026 20:37
@github-actions
Copy link

Pull request demo site: URL

@mainframev mainframev force-pushed the chore/migrate-to-yarn-modern-core branch 10 times, most recently from 5e16b71 to b40e143 Compare February 17, 2026 10:42
"packages/*",
"packages/react-components/*",
"packages/react-components/*/*",
"!packages/react-components/react-jsx-runtime/jsx-runtime",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yarn classic was silently skipping directories without name in package.json files, Yarn modern is more stricter and we need to exclude these sub paths explicitly

@mainframev mainframev force-pushed the chore/migrate-to-yarn-modern-core branch from 1435cc5 to 1e47bea Compare February 18, 2026 15:31
"nx": "21.6.10",
"p-queue": "6.6.2",
"parse-diff": "0.7.1",
"patch-package": "8.0.0",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn v4 has native support for patching, we can remove that

@mainframev mainframev force-pushed the chore/migrate-to-yarn-modern-core branch from f891481 to 4aff9a8 Compare February 18, 2026 16:06
"bin": {
"storybook-llms-extractor": "./bin/storybook-llms-extractor.js"
},
"bin": "./bin/storybook-llms-extractor.js",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn automatically makes bin as shorthand and removes empty peerDependencies

@mainframev mainframev force-pushed the chore/migrate-to-yarn-modern-core branch from a827a55 to 7adf9fc Compare February 20, 2026 13:54
mainframev and others added 3 commits March 23, 2026 22:43
Yarn Modern's `yarn run -T` only resolves scripts, not binaries.
NX infers test-ssr targets using `yarn run -T test-ssr` which fails
because test-ssr is a binary from @fluentui/scripts-test-ssr, not a
script. Adding it as a root script makes it resolvable.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Husky (git hook manager) and nano-staged (pre-commit lint runner)
were accidentally dropped during the Yarn Modern migration. The
.husky/ directory with hooks still existed but husky wasn't being
initialized on install.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move YARN_ENABLE_IMMUTABLE_INSTALLS: false from global workflow env
to individual generator steps that actually need it. The global env
contradicted the explicit --immutable flag on yarn install, making
the intent unclear. Now the install is unambiguously immutable, and
only NX generators (which create/remove packages and modify the
lockfile) opt out.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
"just": "just-scripts",
"lint": "just-scripts lint"
"build": "yarn run -T just-scripts build",
"clean": "yarn run -T just-scripts clean",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

classic yarn added all binaries to PATH, yarn modern resolves binaries from workspace's own dependencies. run -T (top-level) helps to explicitly resolve from root

Comment on lines -357 to -364
"**/prismjs": "^1.30.0",
"**/@tensile-perf/runner/express": "^4.22.1",
"**/tar-fs": "^2.1.4",
"jackspeak": "2.1.1",
"**/micromatch/braces": "^3.0.3",
"**/just-scripts-utils/tar": "^7.5.7",
"**/body-parser/qs": "^6.14.2",
"**/@cypress/request/qs": "^6.14.2"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn modern was silently dropping the **/ entries, flattened resolutions to keep security fixes

mainframev and others added 2 commits March 24, 2026 01:48
Remove 13 resolutions (@swc/helpers, tslib, 10 d3 packages, lodash)
that were added as a safety net during migration but are unnecessary.
yarn dedupe --strategy highest already prevents duplication. Some of
these resolutions were actually harmful — forcing tslib v2 onto
packages expecting v1, and d3-array v3 onto ranges requiring v2.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restore d3 library resolutions that were removed in the previous
commit. Without them, Yarn Modern resolves d3 packages to multiple
versions (e.g., d3-array 2.12.1 + 3.2.4) because transitive deps
use cross-major ranges like "1 - 2". The chart packages then bundle
both copies, adding ~13.6 kB to every chart component export.

The @swc/helpers, tslib, and lodash resolutions remain removed as
they don't affect bundle size.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
"d3-selection": "3.0.0",
"d3-shape": "3.2.0",
"d3-time": "3.1.0",
"d3-time-format": "3.0.0"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The chart packages (@fluentui/react-charting, @fluentui/react-charts) depend on d3 v3.x libraries. Some transitive dependencies use cross-major ranges like "d3-array": "1 - 2" or "d3-array": "2 - 3". Without resolutions, Yarn Modern resolves these to separate versions (e.g., d3-array@2.12.1 alongside d3-array@3.2.4)

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant