Skip to content
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: Dynamically import BreadcrumbBase internal components #2611

Merged
merged 3 commits into from
Jan 9, 2025

Conversation

lariciamota
Copy link
Contributor

@lariciamota lariciamota commented Jan 8, 2025

What's the purpose of this pull request?

This PR is part of the performance initiative and aims to lazy load BreadcrumbBase internal components.

How does it work?

Since the BreadcrumbBase component is inside the components package, and Next isn't on this package, instead of using the dynamic function from next/dynamic it uses lazy and Suspense from React.

How to test it?

The breadcrumb should continue to work as before. The difference should be that the internal components (related to Dropdown) are dynamically imported.
You can test it using the preview and accessing the Handmade Cotton Computer product, which has a long list of breadcrumbs - that way the breadcrumb gets collapsed and the Dropdown components are used.
In the Network tab you'll be able to see a Dropdown.<code>.js - this doesn't happen on other pages that don't have a collapsed breadcrumb list.

Screen.Recording.2025-01-09.at.10.32.20.mov

Starters Deploy Preview

https://sfj-135f210--starter.preview.vtex.app/ (PR)

References

@lariciamota lariciamota self-assigned this Jan 8, 2025
Copy link

vercel bot commented Jan 8, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
faststore-site ✅ Ready (Inspect) Visit Preview Jan 9, 2025 1:25pm

Copy link

codesandbox-ci bot commented Jan 8, 2025

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.

@lariciamota lariciamota added the performance Pull requests related to perfomance issues label Jan 8, 2025
@lariciamota lariciamota marked this pull request as ready for review January 9, 2025 13:34
@lariciamota lariciamota requested a review from a team as a code owner January 9, 2025 13:34
@lariciamota lariciamota requested review from hellofanny and eduardoformiga and removed request for a team January 9, 2025 13:34
Copy link
Member

@eduardoformiga eduardoformiga left a comment

Choose a reason for hiding this comment

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

Nicee!

@lariciamota lariciamota merged commit 0992d10 into main Jan 9, 2025
9 checks passed
@lariciamota lariciamota deleted the chore/dynamic-breadcrumb-base branch January 9, 2025 18:03
eduardoformiga pushed a commit that referenced this pull request Jan 15, 2025
## What's the purpose of this pull request?

This PR is part of the performance initiative and aims to lazy load
`BreadcrumbBase` internal components.

## How does it work?

Since the `BreadcrumbBase` component is inside the `components` package,
and Next isn't on this package, instead of using the `dynamic` function
from `next/dynamic` it uses `lazy` and `Suspense` from React.

## How to test it?

The breadcrumb should continue to work as before. The difference should
be that the internal components (related to Dropdown) are dynamically
imported.
You can test it using the
[preview](https://sfj-135f210--starter.preview.vtex.app/) and accessing
the [Handmade Cotton
Computer](https://sfj-135f210--starter.preview.vtex.app/handmade-cotton-computer-21395412/p)
product, which has a long list of breadcrumbs - that way the breadcrumb
gets collapsed and the Dropdown components are used.
In the Network tab you'll be able to see a `Dropdown.<code>.js` - this
doesn't happen on other pages that don't have a collapsed breadcrumb
list.


https://github.com/user-attachments/assets/20863bcb-14b8-4ad3-bf0d-a34c2cd75abd


### Starters Deploy Preview

https://sfj-135f210--starter.preview.vtex.app/
([PR](vtex-sites/starter.store#645))

## References

- [Jira
task](https://vtex-dev.atlassian.net/jira/software/c/projects/SFS/boards/1051?selectedIssue=SFS-1860)
- [`Next` doc: Lazy
loading](https://nextjs.org/docs/pages/building-your-application/optimizing/lazy-loading)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Pull requests related to perfomance issues
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants