Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
How to optimize dev.happythoughts.in
Legacy JavaScript polyfills add 20KB of unnecessary code since modern browsers support these features natively.
Update your Next.js config to target modern browsers by setting target: 'es2017' or higher in next.config.js. Remove unnecessary polyfills from your babel configuration. Use browserslist to define supported browser versions and exclude outdated ones.
A score of 92 falls in the "Good" 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 Next.js site performs quite well with a score of 92/100, but there are some optimization opportunities to achieve excellent performance. The biggest issue is render-blocking CSS that's delaying both First Contentful Paint and Largest Contentful Paint by 300ms, causing the LCP to reach 2.8 seconds. The site is also carrying about 78 KiB of unused JavaScript code and using legacy JavaScript polyfills that aren't needed for modern browsers, which could save an additional 20 KiB. Addressing the render-blocking CSS by inlining critical styles or deferring non-critical CSS would provide the most immediate performance boost for your users.
Why It Matters:
The blocking CSS file is delaying both LCP and FCP by 300ms, directly impacting user experience.
How to Fix:
Use Next.js dynamic imports to code-split CSS or inline critical CSS in the <head>. Move non-critical styles to load after first paint using next/dynamic with ssr: false. Consider using CSS-in-JS libraries like styled-components for component-specific styles.
Why It Matters:
79KB of unused JavaScript is delaying LCP by 350ms and consuming unnecessary bandwidth.
How to Fix:
Use Next.js bundle analyzer (@next/bundle-analyzer) to identify unused code. Implement dynamic imports for heavy components that aren't immediately needed. Enable tree-shaking by using named imports instead of default imports from libraries.
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
CLS score of 0.123 caused by carousel and cookie banner shifting content during load.
Unused JavaScript totals 1.6MB and blocks main thread for 4.7 seconds, causing 630ms input delay.
Images consume over 22MB with the largest being 4.5MB, severely impacting LCP at 8.3 seconds.
The LCP element (H1 heading) has a massive 4.3 second render delay, severely impacting page load performance.