[core] Strip proptypes from Production bundles#22750
Conversation
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.
Deploy previewBundle size
PerformanceTotal duration: 1,910.89 ms -169.06 ms(-8.1%) | Renders: 67 (+0) | Paint: 2,786.56 ms -233.11 ms(-7.7%)
21 tests within noise — details Check out the code infra dashboard for more information about this PR. |
render function
| * 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. |
There was a problem hiding this comment.
Added this line and re-generated proptypes. https://github.com/mui/mui-x/pull/22750/changes#diff-e88cb2640240ca36c8ac8b06aa9b42c8ff03bc8f0c5831f985745e690f5f6350R196, Can you check diff now? Is it what you are expecting?
I guess now this PR change is in line to material-ui repo change https://github.com/mui/material-ui/blob/0f9b43f4e001102e9aa94f10c3882e15277908a5/scripts/generateProptypes.ts#L227
There was a problem hiding this comment.
Can we then get rid of this plugin?
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.
render functionThere was a problem hiding this comment.
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.propTypesassignments 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 aNODE_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.
| @@ -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); | |||
|
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 |
Removed the wrapRemainingPropTypesPlugin function and its associated comments from the Babel configuration. Signed-off-by: sai chand <[email protected]>
Signed-off-by: sai chand <[email protected]>
Janpot
left a comment
There was a problem hiding this comment.
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
Signed-off-by: sai chand <[email protected]> Co-authored-by: Jan Potoms <[email protected]>
This PR adds
ensureBabelPluginTransformReactRemovePropTypesIntegration:trueto 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.