Skip to content

[core] Strip proptypes from Production bundles#22750

Merged
sai6855 merged 8 commits into
mui:masterfrom
sai6855:core-size-2
Jun 17, 2026
Merged

[core] Strip proptypes from Production bundles#22750
sai6855 merged 8 commits into
mui:masterfrom
sai6855:core-size-2

Conversation

@sai6855

@sai6855 sai6855 commented Jun 11, 2026

Copy link
Copy Markdown
Member

This PR adds ensureBabelPluginTransformReactRemovePropTypesIntegration:true to properly strip prop-types from prod bundles even for components that aren't detected by babel plugin.

I followed material-ui convention for adding flag https://github.com/mui/material-ui/blob/0f9b43f4e001102e9aa94f10c3882e15277908a5/scripts/generateProptypes.ts#L227

It's based off from mui/material-ui#25261.

babel-plugin-transform-react-remove-prop-types only wraps the propTypes
of components it detects as functions returning JSX. Components
returning portals, arrays, or the result of a render callback (the
pickers' renderPicker() pattern, ChartsAxisHighlightValue) were not
detected, so their full propTypes objects, and the prop-types runtime
they kept alive, shipped in production bundles.

Add a small babel plugin that wraps any remaining top-level
'Component.propTypes = ...' assignment in the same
process.env.NODE_ENV guard. propTypes remain available in development.
@code-infra-dashboard

code-infra-dashboard Bot commented Jun 11, 2026

Copy link
Copy Markdown

Deploy preview

https://deploy-preview-22750--material-ui-x.netlify.app/

Bundle size

Bundle Parsed size Gzip size
@mui/x-data-grid 0B(0.00%) 0B(0.00%)
@mui/x-data-grid-pro 0B(0.00%) 0B(0.00%)
@mui/x-data-grid-premium 0B(0.00%) 0B(0.00%)
@mui/x-charts ▼-1.56KB(-0.39%) ▼-683B(-0.57%)
@mui/x-charts-pro 0B(0.00%) 0B(0.00%)
@mui/x-charts-premium 0B(0.00%) 0B(0.00%)
@mui/x-date-pickers ▼-19.5KB(-8.90%) ▼-1.76KB(-3.00%)
@mui/x-date-pickers-pro ▼-39.7KB(-12.81%) ▼-2.98KB(-3.75%)
@mui/x-tree-view 0B(0.00%) 0B(0.00%)
@mui/x-tree-view-pro 0B(0.00%) 0B(0.00%)
@mui/x-license 0B(0.00%) 0B(0.00%)

Details of bundle changes

Performance

Total duration: 1,910.89 ms -169.06 ms(-8.1%) | Renders: 67 (+0) | Paint: 2,786.56 ms -233.11 ms(-7.7%)

Test Duration Renders
HeatmapPremium: 100x100 grid (webgl renderer) 38.44 ms ▼-9.91 ms(-20.5%) 5 (+0)
ScatterChart with big data amount 24.32 ms ▼-6.34 ms(-20.7%) 2 (+0)
Area chart with big data amount (no marks) 21.56 ms ▼-5.94 ms(-21.6%) 2 (+0)
SankeyChart with big data amount 8.78 ms ▼-3.81 ms(-30.2%) 2 (+0)
LineChart with date axis and big data amount 14.15 ms ▼-3.75 ms(-20.9%) 2 (+0)

21 tests within noise — details


Check out the code infra dashboard for more information about this PR.

@sai6855 sai6855 added performance type: enhancement It’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature. labels Jun 11, 2026
@sai6855 sai6855 changed the title Core size 2 [core] Strip proptypes returned from render function Jun 11, 2026
Comment thread babel.config.mjs Outdated
* result of a render callback (e.g. the pickers' `renderPicker()`) are not detected, and
* their `propTypes` would ship in production bundles.
* This plugin wraps any remaining top-level `Component.propTypes = {...}` assignment in the
* same `process.env.NODE_ENV !== "production"` guard, so bundlers can strip them.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Isn't this a use-case for /* remove-proptypes */?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we then get rid of this plugin?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Done here 92cdae8

babel-plugin-transform-react-remove-prop-types only wraps the propTypes
of components it detects as functions returning JSX. Components
returning portals, arrays, or the result of a render callback (the
pickers' renderPicker() pattern, ChartsAxisHighlightValue, DataGrid)
were not detected, so their full propTypes objects, and the prop-types
runtime they kept alive, shipped in production bundles.

Enable ensureBabelPluginTransformReactRemovePropTypesIntegration in the
propTypes generation script, so every generated propTypes assignment is
annotated with /* remove-proptypes */ and the babel plugin wraps it in
a process.env.NODE_ENV guard regardless of component detection.
propTypes remain available in development.
@sai6855 sai6855 changed the title [core] Strip proptypes returned from render function [core] Strip proptypes returned from Production bundles Jun 11, 2026
@sai6855 sai6855 changed the title [core] Strip proptypes returned from Production bundles [core] Strip proptypes from Production bundles Jun 11, 2026
@sai6855
sai6855 marked this pull request as ready for review June 12, 2026 02:38
Copilot AI review requested due to automatic review settings June 12, 2026 02:38
@sai6855
sai6855 requested a review from a team June 12, 2026 02:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR aims to ensure React propTypes objects are not shipped in production bundles across MUI X packages, including for components that babel-plugin-transform-react-remove-prop-types cannot automatically detect.

Changes:

  • Annotates generated Component.propTypes assignments with /* remove-proptypes */ across many components so the remove-prop-types Babel plugin can wrap them for production stripping.
  • Updates the proptypes generation script to always emit the /* remove-proptypes */ annotation going forward.
  • Adds a Babel plugin (wrapRemainingPropTypesPlugin) to wrap any remaining top-level *.propTypes = ... assignments in a NODE_ENV !== 'production' guard.

Reviewed changes

Copilot reviewed 202 out of 202 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/x-tree-view/src/TreeItem/TreeItem.tsx Annotate propTypes assignment for production stripping.
packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx Annotate propTypes assignment for production stripping.
packages/x-tree-view/src/RichTreeView/RichTreeView.tsx Annotate propTypes assignment for production stripping.
packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/week-view/StandaloneWeekView.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/standalone-event/StandaloneEvent.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/month-view/StandaloneMonthView.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/event-calendar/EventCalendar.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/day-view/StandaloneDayView.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler/src/agenda-view/StandaloneAgendaView.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/week-view-premium/StandaloneWeekViewPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/month-view-premium/StandaloneMonthViewPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/event-timeline-premium/EventTimelinePremium.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/event-calendar-premium/EventCalendarPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/day-view-premium/StandaloneDayViewPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-scheduler-premium/src/agenda-view-premium/StandaloneAgendaViewPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/TimePicker/TimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/TimeField/TimeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/TimeClock/TimeClock.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersTextField/PickersTextField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersTextField/PickersInput/PickersInput.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersTextField/PickersFilledInput/PickersFilledInput.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersSectionList/PickersSectionList.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/PickerDay/PickerDay.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/MonthCalendar/MonthCalendar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/LocalizationProvider/LocalizationProvider.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePickerLayout.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DatePicker/DatePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DateField/DateField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/TimeRangePicker/TimeRangePickerToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/TimeRangePicker/TimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/PickersRangeCalendarHeader/PickersRangeCalendarHeader.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MobileTimeRangePicker/MobileTimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DesktopTimeRangePicker/DesktopTimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx Annotate propTypes assignment for production stripping.
packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbarV8/ToolbarButton.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbarV8/Toolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbarFilterButton.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbarExportContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbarExport.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbarColumnsButton.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/toolbar/GridToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/quickFilter/QuickFilterTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/quickFilter/QuickFilterControl.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/quickFilter/QuickFilterClear.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/panel/GridPanel.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/panel/filterPanel/GridFilterPanel.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/panel/filterPanel/GridFilterForm.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenuContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenu.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridShadowScrollArea.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridSelectedRowCount.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridRowCount.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridRow.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridNoRowsOverlay.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridNoColumnsOverlay.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridLoadingOverlay.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridFooter.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/GridColumnHeaders.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/filterPanel/FilterPanelTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/export/ExportPrint.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/export/ExportCsv.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/containers/GridToolbarContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/containers/GridRoot.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/containers/GridOverlay.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/containers/GridFooterContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/columnsPanel/ColumnsPanelTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/columnSelection/GridRowCheckbox.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/columnSelection/GridCellCheckboxRenderer.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid/src/components/cell/GridCell.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-pro/src/components/GridColumnHeaders.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/promptField/PromptFieldSend.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/promptField/PromptFieldRecord.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/promptField/PromptFieldControl.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/promptField/PromptField.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/pivotPanel/PivotPanelTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/GridEmptyPivotOverlay.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/export/ExportExcel.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/chartsPanel/ChartsPanelTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-data-grid-premium/src/components/aiAssistantPanel/AiAssistantPanelTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatSuggestions/ChatSuggestions.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessageSources/ChatMessageSources.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessageSources/ChatMessageSource.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessageSkeleton/ChatMessageSkeleton.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessageList/ChatMessageList.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageMeta.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageGroup.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageContent.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageAvatar.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageAuthorLabel.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessageActions.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatMessage.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatMessage/ChatDateDivider.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatIndicators/ChatUnreadMarker.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatIndicators/ChatTypingIndicator.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatIndicators/ChatScrollToBottomAffordance.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversationList/ChatConversationList.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversationTitle.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversationSubtitle.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversationHeaderInfo.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversationHeaderActions.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversationHeader.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConversation/ChatConversation.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatConfirmation/ChatConfirmation.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerToolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerTextArea.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerSendButton.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerLabel.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerHelperText.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerAttachmentList.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposerAttachButton.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatComposer/ChatComposer.tsx Annotate propTypes assignment for production stripping (multiple components).
packages/x-chat/src/ChatCodeBlock/ChatCodeBlock.tsx Annotate propTypes assignment for production stripping.
packages/x-chat/src/ChatBox/ChatBox.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/Toolbar/ToolbarButton.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/Toolbar/Toolbar.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/SparkLineChart/SparkLineChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ScatterChart/ScatterChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/RadarChart/RadarChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/PieChart/PieChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/PieChart/PieArcLabel.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/PieChart/PieArc.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/LineChart/LineChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/LineChart/AnimatedLine.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/Gauge/GaugeContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/Gauge/Gauge.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ChartsWrapper/ChartsWrapper.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ChartsSvgLayer/ChartsSvgLayer.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ChartsSurface/ChartsSurface.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ChartsLayerContainer/ChartsLayerContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/ChartsContainer/ChartsContainer.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/BarChart/BarPlot.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/BarChart/BarLabel/BarLabel.tsx Annotate propTypes assignment for production stripping.
packages/x-charts/src/BarChart/BarChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/SankeyChart/SankeyChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/RadarChartPro/RadarChartPro.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/PieChartPro/PieChartPro.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/Heatmap/HeatmapPlot.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/Heatmap/HeatmapCell.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/Heatmap/Heatmap.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/FunnelChart/FunnelChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarZoomInTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarRangeButtonTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/ChartsToolbarPro/ChartsToolbarImageExportTrigger.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/ScatterChartPremium/ScatterChartPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/RadialLineChart/RadialLineChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/RadialBarChart/RadialBarPlot.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/RadialBarChart/RadialBarChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/HeatmapPremium/HeatmapPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/ChartsRenderer/ChartsRenderer.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/CandlestickChart/CandlestickChart.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/BarChartPremium/RangeBar/RangeBarPlot.tsx Annotate propTypes assignment for production stripping (multiple assignments).
packages/x-charts-premium/src/BarChartPremium/BarPlotPremium.tsx Annotate propTypes assignment for production stripping.
packages/x-charts-premium/src/BarChartPremium/BarChartPremium.tsx Annotate propTypes assignment for production stripping.
docs/scripts/generateProptypes.ts Enable generation of /* remove-proptypes */ annotations in injected propTypes.
babel.config.mjs Add Babel plugin to wrap remaining propTypes assignments for production DCE.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread babel.config.mjs Outdated
Comment on lines +79 to +83
@@ -34,6 +80,7 @@ export default function getBabelConfig(api) {
removePropTypesPlugin[1].mode = 'unsafe-wrap';
removePropTypesPlugin[1].ignoreFilenames ??= [];
removePropTypesPlugin[1].ignoreFilenames.push('DataGrid.tsx', 'DataGridPro.tsx');
baseConfig.plugins.push(wrapRemainingPropTypesPlugin);
@alexfauquette

Copy link
Copy Markdown
Member

Thanks 👍

I'm surprised that the pro and premium charts are not impacted at all. For exampel this line should be impacted

@sai6855

sai6855 commented Jun 15, 2026

Copy link
Copy Markdown
Member Author

Thanks 👍

I'm surprised that the pro and premium charts are not impacted at all. For exampel this line should be impacted

Plugin infact added /remove-proptypes to pro and premium but looks like, bundle size is not effected for those packages (Not really sure why)

check below diff

https://github.com/mui/mui-x/pull/22750/changes#diff-639887f39f69dc28509081293bfb751dfd86a01864fc2956d306138a93b99822

sai6855 added 3 commits June 15, 2026 14:14
Removed the wrapRemainingPropTypesPlugin function and its associated comments from the Babel configuration.

Signed-off-by: sai chand <[email protected]>
@sai6855
sai6855 requested a review from Janpot June 15, 2026 08:53

@Janpot Janpot left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Added one more missing propTypes comment that resulted in bundle size reduction. Together with #22727 I believe we will emulate everything the custom plugin would strip away.

This makes me wonder though whether we should update the proptypes generator to standard add the comment on every proptypes it injects. Such that it works for all components, even the ones that return a portal.
Secondary, the comment remains in the build output. I think the babel plugin should strip them automatically.

Anyway, with proptypes on its way out, these are probably not problems we should focus on atm

@zannager zannager added the internal Behind-the-scenes enhancement. Formerly called “core”. label Jun 16, 2026
@sai6855
sai6855 merged commit cd9e496 into mui:master Jun 17, 2026
23 checks passed
mbrookes pushed a commit to mbrookes/mui-x that referenced this pull request Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal Behind-the-scenes enhancement. Formerly called “core”. performance type: enhancement It’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants