Вам не потрібен NextJS
Next.js — це стандартне рішення для створення React-додатків. Це чудовий фреймворк. Але «стандартне» не означає «необхідне».
Використання його для невідповідного проєкту коштувало нам швидкості та спричинило тертя в команді. Ми розробляли продукт із великою кількістю даних, дашбордами та графіками. Майже кожен екран був доступний лише після авторизації.
Для такого типу додатків серверний рендеринг (SSR) додавав витрат, не приносячи жодної користі.
Правильний інструмент залежить від того, що саме ви створюєте.
Проєкти, орієнтовані на контент: • Маркетингові сайти • Блоги • Вітрини інтернет-магазинів • Документація • Використовуйте тут Next.js. SEO має значення, а контент є статичним.
Проєкти, орієнтовані на застосунок: • Внутрішні інструменти • Дашборди • Панелі адміністратора • Консолі SaaS • Використовуйте тут SPA на базі Vite. Ці додатки працюють за авторизацією та покладаються на API.
Ми перейшли з Next.js на Vite SPA. Ось чому:
Простіше налагодження Помилки сервера не завжди чітко пов'язані з вашими компонентами. Помилки на стороні клієнта виникають у браузері з чіткими трасуваннями стеку (stack traces). Це дозволяє швидко виправляти баги.
Краще тестування Ви не можете легко провести модульне тестування серверного компонента, який рендерить інші серверні компоненти. Ми робили певні дизайнерські рішення лише для того, щоб зберегти можливість тестування. Це було помилкою.
Простіша авторизація SSR вимагає від сервера перевірки токенів при кожному запиті. Це створює більше векторів атак і складну логіку роботи з cookie. Додаток, орієнтований на клієнта, обробляє авторизацію в одному місці: в API.
Нижчі витрати на інфраструктуру SSR потребує постійно працюючого сервера для кожного запиту. Статичний фронтенд постачається у вигляді файлів через CDN. У вас з'являється на одну службу менше, яку потрібно запускати та захищати.
Менша складність Next.js змушує розділяти сервер і клієнт. Фронтенд-інженерам доводилося займатися серверними питаннями, такими як middleware та кешування. Це сповільнювало нас.
Ми здійснювали міграцію поетапно. Ми залишили Next.js для публічних сторінок, критичних для SEO. Все інше ми перенесли на Vite SPA.
Компроміси були незначними: • SEO: Дашбордам за авторизацією не потрібне SEO. • Початкове завантаження: Додатки з великою кількістю даних зазвичай повільні через базу даних, а не через фреймворк.
Використовуйте Next.js, якщо SEO та прев'ю для соцмереж мають значення. Використовуйте Vite SPA, якщо ваш додаток інтерактивний, орієнтований на дані та працює за авторизацією.
Досить використовувати стандартні рішення. Запитайте себе, що саме ви насправді будуєте.
Джерело: https://dev.to/moruno21/you-dont-need-nextjs-heres-why-708
