Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions examples/app/commerce/src/elements.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

/**
* Eagerly loaded custom element definitions.
*
* All elements are imported in a single module so that every
* customElements.define() call runs before any element upgrades.
* This avoids staggered upgrade batches that each trigger a separate
* style recalc + layout pass.
*/

// Atoms
import '#atoms/mp-price/mp-price.js';
import '#atoms/mp-product-image/mp-product-image.js';

// Molecules
import '#molecules/mp-product-label/mp-product-label.js';
import '#molecules/mp-search-bar/mp-search-bar.js';

// Organisms — shell
import '#organisms/mp-navbar/mp-navbar.js';
import '#organisms/mp-mobile-menu/mp-mobile-menu.js';
import '#organisms/mp-cart-panel/mp-cart-panel.js';
import '#organisms/mp-footer/mp-footer.js';
import '#organisms/mp-app/mp-app.js';

// Organisms — content
import '#organisms/mp-category-nav/mp-category-nav.js';
import '#organisms/mp-filter-list/mp-filter-list.js';
import '#organisms/mp-product-card/mp-product-card.js';
import '#organisms/mp-product-grid/mp-product-grid.js';

// Pages — eagerly loaded for SSR hydration
import '#pages/mp-page-search/mp-page-search.js';
9 changes: 3 additions & 6 deletions examples/app/commerce/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,9 @@ function onHydrationComplete(): void {
});
}

// Shell component — eagerly loaded (child imports are co-located in each component)
import '#organisms/mp-app/mp-app.js';

// Search page components — eagerly loaded for SSR hydration of nested routes.
import '#pages/mp-page-search/mp-page-search.js';
import '#organisms/mp-product-grid/mp-product-grid.js';
// All element definitions — single import so every define() runs before any
// element upgrades, producing one layout pass instead of three staggered batches.
import './elements.js';

// Fallback: if hydration already completed before the listener, log now
if (performance.getEntriesByName('webui:hydrate:total', 'measure').length > 0) {
Expand Down
Loading