---
title: "next/dynamic ssr: false in a Server Component (perf/dynamic-ssr-false)"
description: "Next.js fails the build: `ssr: false` is not allowed with next/dynamic in Server Components."
url: http://localhost:4173/rules/perf/dynamic-ssr-false
updated: 2026-11-11
---

# next/dynamic ssr: false in a Server Component

> `perf/dynamic-ssr-false` is a vetd rule. It flags: next/dynamic ssr: false in a Server Component. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `perf/dynamic-ssr-false` |
| Severity | error |
| Group | Performance: fonts, images, scripts and bundle |
| Tags | nextjs-16, correctness |

## Why it matters

Next.js fails the build: `ssr: false` is not allowed with next/dynamic in Server Components.

## How to fix it

Move the dynamic() call into a "use client" component and render that from the server.

## Credit

Based on work by:

- [Next.js team](https://nextjs.org): The lazy-loading guide says ssr: false is not allowed with next/dynamic in Server Components; put it in a Client Component.

## References

- [How to lazy load Client Components and libraries](https://nextjs.org/docs/app/guides/lazy-loading), Next.js
- [lazy](https://react.dev/reference/react/lazy), React

## See it

Demos in the vetd Lab:

- [Load heavy code on use](http://localhost:4173/lab/react-perf/lazy-load-heavy-code)

## Related rules

- [`perf/heavy-import`](http://localhost:4173/rules/perf/heavy-import.md)
- [`next/server-hooks`](http://localhost:4173/rules/next/server-hooks.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "perf/dynamic-ssr-false" }`. CLI: `npx vetd explain perf/dynamic-ssr-false`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`perf/heavy-import`](http://localhost:4173/rules/perf/heavy-import.md) · Next: [`data/await-in-loop`](http://localhost:4173/rules/data/await-in-loop.md)
