Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
How to optimize nike.com
The LCP image is not discoverable in the initial HTML, causing a 4-second resource load delay.
Move the hero image source from JavaScript-populated data attributes to the initial HTML src attribute. Add fetchpriority='high' to the LCP image element. Use Next.js Image component with priority={true} for above-the-fold images. Preload the hero image using <link rel='preload' as='image'> in the document head.
A score of 29 falls in the "Poor" range (50-89). While it is better than poor (0-49), you should aim for 90+ to provide an optimal user experience and maximize SEO benefits.
This site is slower than approximately 35% of similar sites. The main issues affecting performance are image optimization, JavaScript execution time, and layout stability.
Addressing these issues could improve your conversion rate by 15-20% and boost your search engine rankings.
Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
Interaction to Next Paint
Good: < 200ms
Measures how quickly the page responds to user interactions
Cumulative Layout Shift
Good: < 0.1
Measures visual stability - how much content shifts during page load
This Nike e-commerce site built with Next.js and React has severe performance problems with a score of only 29/100. The biggest issue is excessive JavaScript blocking the main thread for over 7 seconds, causing a painfully slow Largest Contentful Paint of 14.6 seconds and making the site nearly unusable on mobile devices. The site is loading 460KB of unused JavaScript and suffering from a complex chain of network requests that could be significantly optimized. Reducing unused code, implementing proper caching (currently saving 1.2MB), and fixing the redirect from nike.com to nike.com/gb could improve the score by 40+ points and dramatically enhance the shopping experience.
Why It Matters:
460 KiB of unused JavaScript is blocking the main thread for 7.3 seconds and delaying LCP by 2.4 seconds.
How to Fix:
Use webpack-bundle-analyzer to identify unused code in your bundles. Remove unnecessary polyfills for modern browsers by updating your Babel/SWC config to target ES2020+. Split code using Next.js dynamic imports for components not needed on initial load. Configure tree-shaking properly to eliminate dead code from Nike Design System components.
Why It Matters:
175 KiB of duplicated JavaScript from Nike Design System components is loaded multiple times across bundles.
How to Fix:
Configure webpack's SplitChunksPlugin to extract common modules into shared chunks. Use Next.js's built-in bundle analysis to identify duplicate dependencies. Implement a single shared bundle for Nike Design System components that can be cached across pages. Review your micro-frontend architecture to ensure shared dependencies are properly externalized.
Once your site is optimized, maintain that speed. Use DeployHQ for zero-downtime, automated deployments—so performance fixes and updates go live safely every time, without breaking your site.
Get AI-powered performance insights with actionable fixes in 30 seconds
More Next.js Speed Tests
The LCP element has a massive 2.5-second render delay, indicating JavaScript is blocking rendering of critical content.
24KB of unused JavaScript is wasting network resources and delaying LCP by 150ms.
Missing width/height attributes on images can cause layout shifts during loading.
386 KiB of unused JavaScript delays page interactivity by 1.8 seconds.