Back to Cal

Conditional Module Loading

agents/skills/vercel-react-best-practices/rules/bundle-conditional.md

6.2.0827 B
Original Source

Conditional Module Loading

Load large data or modules only when a feature is activated.

Example (lazy-load animation frames):

tsx
function AnimationPlayer({ enabled }: { enabled: boolean }) {
  const [frames, setFrames] = useState<Frame[] | null>(null)
  const [loadError, setLoadError] = useState(false)

  useEffect(() => {
    if (enabled && !frames && !loadError && typeof window !== 'undefined') {
      import('./animation-frames.js')
        .then(mod => setFrames(mod.frames))
        .catch(() => setLoadError(true))
    }
  }, [enabled, frames, loadError])

  if (loadError) return <ErrorMessage />
  if (!frames) return <Skeleton />
  return <Canvas frames={frames} />
}

The typeof window !== 'undefined' check prevents bundling this module for SSR, optimizing server bundle size and build speed.