Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
How to optimize linear.app
Multiple CSS files are blocking initial paint, contributing to the poor 4.5s First Contentful Paint score.
Inline critical above-the-fold CSS directly in the HTML document head. Use Next.js built-in CSS optimization to automatically split and load non-critical CSS asynchronously. Consider reducing the number of CSS chunks by consolidating smaller stylesheets.
A score of 36 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 Next.js/React site has severe performance issues with a critically low score of 36/100. The biggest problem is an extremely slow Largest Contentful Paint of 22.7 seconds, caused primarily by JavaScript blocking the main thread for 4.8 seconds and inefficient image delivery. The site is loading 371 KB of unused JavaScript and has poorly optimized images that could be reduced by 542 KB, while CSS files are render-blocking and adding 2.1 seconds to load time. Addressing these JavaScript and image optimization issues could dramatically improve the score by 40+ points and provide a much better user experience.
Why It Matters:
The LCP image has lazy loading enabled, delaying critical content painting by 4.5 seconds and causing massive element render delay.
How to Fix:
Remove loading='lazy' from the hero background image and add fetchpriority='high' attribute. In Next.js, use priority={true} prop on the Image component. Preload this critical image using <link rel='preload' as='image'> in the document head.
Why It Matters:
371 KiB of unused JavaScript is blocking the main thread for 2.4 seconds and delaying interactivity by 18+ seconds.
How to Fix:
Implement code splitting in Next.js using dynamic imports for non-critical components. Use Next.js bundle analyzer to identify unused chunks. Remove legacy polyfills for modern JavaScript features like Array.prototype.at and Object.fromEntries that have 95%+ browser support.
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
371 KiB of unused JavaScript is blocking the main thread for 2.4 seconds and delaying interactivity by 18+ seconds.
The LCP image has lazy loading enabled, delaying critical content painting by 4.5 seconds and causing massive element render delay.
92KB of unused JavaScript is adding 750ms to LCP and blocking the main thread unnecessarily.
Three oversized images (1.4MB total) are severely impacting LCP by loading at 3840px width when only 665px is needed.