Q23: How does the server-only package safeguard private backend utility code?
Importing import 'server-only' into utility files guarantees that private code (API tokens, database credentials) is never accidentally imported into Client Components. If a Client Component imports a server-only file, Next.js throws a build-time error.
Enforcing Server-Only Boundary
// lib/db-queries.js
import 'server-only'; // Guarantees this file cannot be bundled for client
export async function getSensitiveData() {
return db.query('SELECT * FROM secret_table');
}💡 Importing server-only breaks builds instantly if client code attempts to import db-queries.js.
Key Takeaways
- Protects sensitive server logic from leaking into client JavaScript bundles.
- Throws explicit compilation errors during build time if boundary leaks occur.
Knowledge Check
What occurs during build time if a Client Component ('use client') imports a module containing import 'server-only'?