-
Notifications
You must be signed in to change notification settings - Fork 2.9k
feat: supports new automatic JSX runtime #28810
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: supports new automatic JSX runtime #28810
Conversation
Perf Analysis (
|
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| FluentProviderWithTheme | virtual-rerender-with-unmount | 72 | 80 | 10 | Possible regression |
All results
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| Avatar | mount | 628 | 614 | 5000 | |
| Button | mount | 312 | 303 | 5000 | |
| Field | mount | 1098 | 1140 | 5000 | |
| FluentProvider | mount | 671 | 682 | 5000 | |
| FluentProviderWithTheme | mount | 77 | 85 | 10 | |
| FluentProviderWithTheme | virtual-rerender | 60 | 61 | 10 | |
| FluentProviderWithTheme | virtual-rerender-with-unmount | 72 | 80 | 10 | Possible regression |
| InfoButton | mount | 9 | 12 | 5000 | |
| MakeStyles | mount | 842 | 838 | 50000 | |
| Persona | mount | 1731 | 1668 | 5000 | |
| SpinButton | mount | 1368 | 1329 | 5000 |
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 67b355f:
|
Perf Analysis (
|
| Scenario | Current PR Ticks | Baseline Ticks | Ratio | Regression Analysis |
|---|---|---|---|---|
| PortalMinimalPerf.default | 87 | 82 | 1.06:1 | analysis |
Perf tests with no regressions
| Scenario | Current PR Ticks | Baseline Ticks | Ratio |
|---|---|---|---|
| AccordionMinimalPerf.default | 86 | 80 | 1.08:1 |
| DividerMinimalPerf.default | 209 | 195 | 1.07:1 |
| ImageMinimalPerf.default | 221 | 207 | 1.07:1 |
| SegmentMinimalPerf.default | 210 | 196 | 1.07:1 |
| TextAreaMinimalPerf.default | 288 | 268 | 1.07:1 |
| CarouselMinimalPerf.default | 262 | 248 | 1.06:1 |
| FlexMinimalPerf.default | 161 | 153 | 1.05:1 |
| RefMinimalPerf.default | 116 | 111 | 1.05:1 |
| AvatarMinimalPerf.default | 113 | 109 | 1.04:1 |
| CheckboxMinimalPerf.default | 1172 | 1129 | 1.04:1 |
| DropdownManyItemsPerf.default | 400 | 383 | 1.04:1 |
| PopupMinimalPerf.default | 356 | 342 | 1.04:1 |
| ProviderMinimalPerf.default | 199 | 191 | 1.04:1 |
| TreeMinimalPerf.default | 477 | 460 | 1.04:1 |
| ChatMinimalPerf.default | 432 | 420 | 1.03:1 |
| LayoutMinimalPerf.default | 206 | 200 | 1.03:1 |
| ListNestedPerf.default | 324 | 316 | 1.03:1 |
| TableManyItemsPerf.default | 1110 | 1077 | 1.03:1 |
| TextMinimalPerf.default | 191 | 185 | 1.03:1 |
| VideoMinimalPerf.default | 431 | 420 | 1.03:1 |
| CardMinimalPerf.default | 325 | 319 | 1.02:1 |
| DialogMinimalPerf.default | 448 | 439 | 1.02:1 |
| DropdownMinimalPerf.default | 1426 | 1399 | 1.02:1 |
| ListMinimalPerf.default | 307 | 302 | 1.02:1 |
| ListWith60ListItems.default | 365 | 359 | 1.02:1 |
| SliderMinimalPerf.default | 745 | 733 | 1.02:1 |
| SplitButtonMinimalPerf.default | 2261 | 2224 | 1.02:1 |
| TableMinimalPerf.default | 232 | 227 | 1.02:1 |
| AttachmentMinimalPerf.default | 81 | 80 | 1.01:1 |
| BoxMinimalPerf.default | 193 | 191 | 1.01:1 |
| ChatWithPopoverPerf.default | 191 | 189 | 1.01:1 |
| DatepickerMinimalPerf.default | 3519 | 3500 | 1.01:1 |
| GridMinimalPerf.default | 182 | 181 | 1.01:1 |
| ItemLayoutMinimalPerf.default | 710 | 702 | 1.01:1 |
| LabelMinimalPerf.default | 217 | 215 | 1.01:1 |
| ListCommonPerf.default | 390 | 385 | 1.01:1 |
| ReactionMinimalPerf.default | 211 | 208 | 1.01:1 |
| InputMinimalPerf.default | 541 | 540 | 1:1 |
| MenuMinimalPerf.default | 485 | 483 | 1:1 |
| MenuButtonMinimalPerf.default | 958 | 958 | 1:1 |
| RosterPerf.default | 1551 | 1550 | 1:1 |
| RadioGroupMinimalPerf.default | 263 | 264 | 1:1 |
| TooltipMinimalPerf.default | 1232 | 1238 | 1:1 |
| ButtonOverridesMissPerf.default | 651 | 655 | 0.99:1 |
| ChatDuplicateMessagesPerf.default | 153 | 154 | 0.99:1 |
| AlertMinimalPerf.default | 151 | 154 | 0.98:1 |
| AnimationMinimalPerf.default | 285 | 291 | 0.98:1 |
| EmbedMinimalPerf.default | 1839 | 1883 | 0.98:1 |
| HeaderMinimalPerf.default | 200 | 205 | 0.98:1 |
| CustomToolbarPrototype.default | 1445 | 1477 | 0.98:1 |
| ToolbarMinimalPerf.default | 529 | 538 | 0.98:1 |
| ButtonMinimalPerf.default | 86 | 89 | 0.97:1 |
| ProviderMergeThemesPerf.default | 646 | 665 | 0.97:1 |
| SkeletonMinimalPerf.default | 188 | 194 | 0.97:1 |
| StatusMinimalPerf.default | 391 | 403 | 0.97:1 |
| HeaderSlotsPerf.default | 443 | 461 | 0.96:1 |
| LoaderMinimalPerf.default | 182 | 189 | 0.96:1 |
| AttachmentSlotsPerf.default | 593 | 624 | 0.95:1 |
| FormMinimalPerf.default | 213 | 225 | 0.95:1 |
| TreeWith60ListItems.default | 82 | 86 | 0.95:1 |
| ButtonSlotsPerf.default | 299 | 318 | 0.94:1 |
| IconMinimalPerf.default | 361 | 390 | 0.93:1 |
🕵 fluentuiv8 No visual regressions between this PR and main |
📊 Bundle size reportUnchanged fixtures
|
Asset size changesSize Auditor did not detect a change in bundle size for any component! Baseline commit: f9f2b69201c81811e8e4ce23f971d6174127d0ca (build) |
🕵 fluentuiv9 No visual regressions between this PR and main |
Perf Analysis (
|
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| BaseButton | mount | 620 | 616 | 5000 | |
| Breadcrumb | mount | 1681 | 1657 | 1000 | |
| Checkbox | mount | 1676 | 1672 | 5000 | |
| CheckboxBase | mount | 1494 | 1493 | 5000 | |
| ChoiceGroup | mount | 2886 | 2925 | 5000 | |
| ComboBox | mount | 649 | 649 | 1000 | |
| CommandBar | mount | 6283 | 6320 | 1000 | |
| ContextualMenu | mount | 11920 | 12143 | 1000 | |
| DefaultButton | mount | 740 | 745 | 5000 | |
| DetailsRow | mount | 2155 | 2207 | 5000 | |
| DetailsRowFast | mount | 2211 | 2164 | 5000 | |
| DetailsRowNoStyles | mount | 1970 | 1984 | 5000 | |
| Dialog | mount | 2798 | 2832 | 1000 | |
| DocumentCardTitle | mount | 224 | 222 | 1000 | |
| Dropdown | mount | 1968 | 1975 | 5000 | |
| FocusTrapZone | mount | 1114 | 1133 | 5000 | |
| FocusZone | mount | 1075 | 1081 | 5000 | |
| GroupedList | mount | 41086 | 40869 | 2 | |
| GroupedList | virtual-rerender | 19821 | 19714 | 2 | |
| GroupedList | virtual-rerender-with-unmount | 50225 | 50462 | 2 | |
| GroupedListV2 | mount | 227 | 216 | 2 | |
| GroupedListV2 | virtual-rerender | 213 | 207 | 2 | |
| GroupedListV2 | virtual-rerender-with-unmount | 226 | 227 | 2 | |
| IconButton | mount | 1049 | 1077 | 5000 | |
| Label | mount | 334 | 327 | 5000 | |
| Layer | mount | 2704 | 2737 | 5000 | |
| Link | mount | 386 | 381 | 5000 | |
| MenuButton | mount | 934 | 919 | 5000 | |
| MessageBar | mount | 21450 | 21617 | 5000 | |
| Nav | mount | 1956 | 1910 | 1000 | |
| OverflowSet | mount | 787 | 786 | 5000 | |
| Panel | mount | 1755 | 1775 | 1000 | |
| Persona | mount | 725 | 769 | 1000 | |
| Pivot | mount | 853 | 868 | 1000 | |
| PrimaryButton | mount | 836 | 839 | 5000 | |
| Rating | mount | 4598 | 4616 | 5000 | |
| SearchBox | mount | 902 | 903 | 5000 | |
| Shimmer | mount | 1858 | 1851 | 5000 | |
| Slider | mount | 1329 | 1274 | 5000 | |
| SpinButton | mount | 2826 | 2853 | 5000 | |
| Spinner | mount | 376 | 394 | 5000 | |
| SplitButton | mount | 1836 | 1817 | 5000 | |
| Stack | mount | 414 | 402 | 5000 | |
| StackWithIntrinsicChildren | mount | 846 | 860 | 5000 | |
| StackWithTextChildren | mount | 2583 | 2570 | 5000 | |
| SwatchColorPicker | mount | 6043 | 6040 | 5000 | |
| TagPicker | mount | 1467 | 1443 | 5000 | |
| Text | mount | 375 | 367 | 5000 | |
| TextField | mount | 941 | 944 | 5000 | |
| ThemeProvider | mount | 823 | 820 | 5000 | |
| ThemeProvider | virtual-rerender | 588 | 592 | 5000 | |
| ThemeProvider | virtual-rerender-with-unmount | 1290 | 1299 | 5000 | |
| Toggle | mount | 601 | 636 | 5000 | |
| buttonNative | mount | 189 | 183 | 5000 |
packages/react-components/react-jsx-runtime/src/utils/getMetadataFromSlotComponent.ts
Outdated
Show resolved
Hide resolved
packages/react-components/react-jsx-runtime/src/utils/getMetadataFromSlotComponent.ts
Show resolved
Hide resolved
packages/react-components/react-jsx-runtime/src/utils/DevRuntime.ts
Outdated
Show resolved
Hide resolved
packages/react-components/react-jsx-runtime/src/utils/Runtime.ts
Outdated
Show resolved
Hide resolved
packages/react-components/react-jsx-runtime/src/jsx-runtime.test.tsx
Outdated
Show resolved
Hide resolved
packages/react-components/react-jsx-runtime/src/jsx-dev-runtime.ts
Outdated
Show resolved
Hide resolved
c4f9d8c to
d1f331c
Compare
packages/react-components/react-jsx-runtime/etc/react-jsx-runtime.api.md
Show resolved
Hide resolved
d1f331c to
ad998e0
Compare
ad998e0 to
84dc573
Compare
change/@fluentui-react-jsx-runtime-911c855a-9f72-4f62-8d13-d9f768887ada.json
Show resolved
Hide resolved
84dc573 to
67b355f
Compare
marcosmoura
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved for files owned by @microsoft/fluentui-react-build!

Previous Behavior
Previously
@fluentui/react-jsx-runtimeonly supported the classic mode of declaring a JSX pragma, through a signature similar toReact.createElementNew Behavior
Add support for React 17's automatic JSX transform (works from React 16.14).
This PR adds support for the new "automatic" JSX runtime from React 16.14/17+
Related Issue(s)