@techtipsvn
Next.js 16.4 · 06/10/2026

Next.js 16.4 ensureStatic: một dòng để build báo lỗi khi trang static lẫn phần dynamic

Next.js 16.4 có một dòng để chặn chuyện này.

2026-10-1708 slide2 phút đọcfeature
Slide bìa: Next.js 16.4 ensureStatic: một dòng để build báo lỗi khi trang static lẫn phần dynamicSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8
cuộn, vuốt, hoặc phím ←→01 / 08

Cùng một bài, đọc bằng chữ. Nhanh hơn và tìm lại được bằng Ctrl+F.

Static và dynamic

Làm sẵn một lần, hay làm lại mỗi lần mở

Lúc build, Next.js làm sẵn trang web trước khi đưa lên mạng. Trang static được làm xong ở bước này, ai mở cũng nhận cùng một bản. Phần dynamic thì server làm lại mỗi lần có người mở.

Ví dụ

Avatar của người đang đăng nhập là phần dynamic. Mỗi người thấy một ảnh khác.

Trước / Sau

Trước

Thêm component avatar <UserAvatar /> vào trang blog

Build vẫn chạy xong, không ai báo

Next.js 16.4

Thêm dòng ensureStatic ở đầu file

Lúc build gặp phần dynamic là dừng, báo lỗi

Cách bật

Thêm vào đầu file page

Cả site

Muốn cả site static thì đặt ở layout

File app/layout.tsx bọc ngoài mọi trang, chứa phần chung như header. Đặt dòng ensureStatic ở đó thì mọi trang bên trong đều phải static.

Giá trị

'navigation' là mức chặt nhất: cả trang phải làm sẵn.

Cần có

Phải bật Cache Components

ensureStatic chỉ chạy khi bật cacheComponents trong next.config.ts. App mới tạo bằng create-next-app từ bản 16.4 đã bật sẵn. App cũ thì phải tự bật.

Lưu ý

Chưa bật thì build cũng dừng, vì thiếu cấu hình này.

Khi dùng ensureStatic

Nên

Dùng cho trang ai mở cũng giống nhau: blog, shop

Có trang cần avatar thì đặt dòng ở layout của nhóm trang khác

Không nên

Thêm vào dashboard, nơi mỗi người thấy dữ liệu riêng

Chờ nó làm trang nhanh hơn: nó chỉ báo lỗi

Project của bạn có trang nào phải luôn static?

Thêm export const ensureStatic = 'navigation' vào trang đó rồi chạy next build.

techtipstechtipsvnnextjswebdevlaptrinh
Đọc tiếp

Bài khác cùng chủ đề

Slide bìa: React Native 0.88: thêm SceneDelegate trước khi build bằng Xcode 2709

React Native 0.88: thêm SceneDelegate trước khi build bằng Xcode 27

feature2′ đọc19.10
Slide bìa: Copilot ngừng Claude Opus 4.8, Opus 5 và GPT-5.6 Terra ngày 16/11: đổi sang model nào07

Copilot ngừng Claude Opus 4.8, Opus 5 và GPT-5.6 Terra ngày 16/11: đổi sang model nào

Tin1′ đọc18.10
Slide bìa: Review bằng AI khiến PostgreSQL 19 gỡ 8–10 tính năng? Người viết code kể lại09

Review bằng AI khiến PostgreSQL 19 gỡ 8–10 tính năng? Người viết code kể lại

Tin2′ đọc17.10
Slide bìa: AVIF nhẹ hơn, JPEG XL giữ ảnh .jpg cũ: chọn định dạng ảnh nào cho web?08

AVIF nhẹ hơn, JPEG XL giữ ảnh .jpg cũ: chọn định dạng ảnh nào cho web?

Giải thích2′ đọc17.10

Mỗi ngày một bài mới.

Mẹo, giải thích và tin công nghệ cho sinh viên và dev mới đi làm. Một người viết, đăng đều.

Bài cũng được đăng lên TikTok, ở dạng slide.

TikTok@techtipsvn