Skip to main content

Bundle Defer Third Party

Source: .agents/references/coding-standard/vercel-react-best-practices/rules/bundle-defer-third-party.md

Metadata

  • title: Defer Non-Critical Third-Party Libraries
  • impact: MEDIUM
  • impactDescription: loads after hydration
  • tags: bundle, third-party, analytics, defer

Content

Defer Non-Critical Third-Party Libraries

Analytics, logging, and error tracking don't block user interaction. Load them after hydration.

Incorrect (blocks initial bundle):

import { Analytics } from '@vercel/analytics/react'

export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Analytics />
</body>
</html>
)
}

Correct (loads after hydration):

import dynamic from 'next/dynamic'

const Analytics = dynamic(
() => import('@vercel/analytics/react').then(m => m.Analytics),
{ ssr: false }
)

export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Analytics />
</body>
</html>
)
}