Skip to content

[docs] Fallback for searchbar during SSR #46364

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

Merged
merged 7 commits into from
Jun 18, 2025

Conversation

Janpot
Copy link
Member

@Janpot Janpot commented Jun 17, 2025

Was looking into this code for another purpose and this annoyed me, had Claude Code update it to show a proper fallback for the searchbar. We can just extract the presentational part of the searchbutton and show as fallback, it won't affect the bundle size much. Only the shortcut is hidden until after hydration.

Not sure why, but for me this improves the perceived performance.

- Extract SearchButton styled component and related components into separate SearchButton.tsx file
- Add TypeScript interfaces with optional onClick prop that disables button when not provided
- Use React state for keyboard shortcut to prevent SSR hydration errors
- Update AppFrame to use SearchButton as Suspense fallback for better UX

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@Janpot Janpot changed the title Extract SearchButton component from AppSearch [docs] Fallback for searchbar Jun 17, 2025
@Janpot Janpot added the docs Improvements or additions to the documentation label Jun 17, 2025
@mui-bot
Copy link

mui-bot commented Jun 17, 2025

Netlify deploy preview

https://deploy-preview-46364--material-ui.netlify.app/

Bundle size report

@mui/materialparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/labparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/systemparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/utilsparsed: 0B(0.00%) gzip: 0B(0.00%)

Show details for 100 more bundles (86 more not shown)

@mui/lab/AdapterDateFnsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/AdapterDayjsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/AdapterLuxonparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/AdapterMomentparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/CalendarPickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/CalendarPickerSkeletonparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/ClockPickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DatePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DateRangePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DateRangePickerDayparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DateTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DesktopDatePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DesktopDateRangePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DesktopDateTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/DesktopTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/LoadingButtonparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/LocalizationProviderparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/Masonryparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/MobileDatePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/MobileDateRangePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/MobileDateTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/MobileTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/MonthPickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/PickersDayparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/StaticDatePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/StaticDateRangePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/StaticDateTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/StaticTimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TabContextparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TabListparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TabPanelparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/Timelineparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineConnectorparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineContentparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineDotparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineItemparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineOppositeContentparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimelineSeparatorparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TimePickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TreeItemparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/TreeViewparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/useAutocompleteparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/lab/YearPickerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Accordionparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AccordionActionsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AccordionDetailsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AccordionSummaryparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Alertparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AlertTitleparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AppBarparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Autocompleteparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Avatarparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/AvatarGroupparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Backdropparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Badgeparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/BottomNavigationparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/BottomNavigationActionparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Boxparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Breadcrumbsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Buttonparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ButtonBaseparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ButtonGroupparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Cardparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CardActionAreaparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CardActionsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CardContentparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CardHeaderparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CardMediaparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Checkboxparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Chipparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CircularProgressparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ClickAwayListenerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Collapseparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Containerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/CssBaselineparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/DefaultPropsProviderparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Dialogparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/DialogActionsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/DialogContentparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/DialogContentTextparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/DialogTitleparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Dividerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Drawerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Fabparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Fadeparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FilledInputparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FormControlparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FormControlLabelparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FormGroupparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FormHelperTextparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/FormLabelparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/GlobalStylesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Gridparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/GridLegacyparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Growparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/Iconparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/IconButtonparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ImageListparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ImageListItemparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/material/ImageListItemBarparsed: 0B(0.00%) gzip: 0B(0.00%)

Details of bundle changes

Generated by 🚫 dangerJS against 7ce3219

@Janpot Janpot changed the title [docs] Fallback for searchbar [docs] Fallback for searchbar during SSR Jun 17, 2025
Janpot added 2 commits June 17, 2025 11:03
The esmExternals experimental option is no longer needed in modern Next.js versions and has been removed from the docs configuration.
@Janpot Janpot requested a review from siriwatknp June 17, 2025 09:34
Copy link
Member

@siriwatknp siriwatknp left a comment

Choose a reason for hiding this comment

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

much better!

@Janpot Janpot merged commit 454e2f4 into mui:master Jun 18, 2025
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Improvements or additions to the documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants