React Server Components (RSC) — компоненты, рендерящиеся только на сервере. Не попадают в client bundle → меньше JS на клиенте. Могут быть async (fetch прямо в компоненте). Next.js 13+ App Router — default RSC. Paradigm: data fetching рядом с UI, streaming через Suspense, client components только где нужна интерактивность (use client).
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
// app/posts/page.tsx (Server Component)
async function PostList() {
const posts = await db.post.findMany(); // direct DB access
return posts.map(p => <Post key={p.id} {...p} />);
}
// Client component
'use client';
function LikeButton({ postId }) {
const [liked, setLiked] = useState(false);
return <button onClick={() => setLiked(true)}>♥</button>;
}React Server Components (RSC) — это новая концепция в экосистеме React, позволяющая разработчикам создавать компоненты, которые рендерятся на сервере. Это упрощает процесс разработки, улучшает производительность и снижает время загрузки страниц, так как позволяет отправлять клиенту только необходимый HTML-код. Основная идея заключается в том, что серверные компоненты могут извлекать данные и выполнять логику, не загружая лишние ресурсы на клиент.
Использование React Server Components предлагает множество преимуществ для разработчиков и пользователей:
Также стоит отметить, что RSC поддерживает использование React Suspense, что позволяет более гибко управлять асинхронными загрузками данных.
Рассмотрим пример реализации React Server Component. Допустим, у нас есть серверный компонент, который извлекает данные о пользователях из API и отображает их на странице. Создадим файл UserList.server.js:
import React from 'react';
const UserList = async () => {
const response = await fetch('https://api.example.com/users');
const users = await response.json();
return (
{users.map(user => (
- {user.name}
))}
);
};
export default UserList;В этом примере мы используем fetch для получения данных о пользователях. Обратите внимание, что компонент возвращает JSX, который будет рендериться на сервере. Теперь, чтобы использовать этот компонент в клиентском приложении, мы можем просто импортировать его:
import UserList from './UserList.server';
const App = () => {
return (
Список пользователей
);
};
export default App;Важно помнить, что серверные компоненты не могут использовать состояния и эффекты, присущие клиентским компонентам. Это позволяет избежать проблем с синхронизацией данных и улучшает производительность приложения.
Classic SSR: render HTML на сервере + hydrate весь React client-side. RSC: серверные компоненты НЕ hydrate, только клиентские = меньше JS.
Когда нужен useState, useEffect, onClick, onChange. Всё остальное — по умолчанию server.
Next.js 13+ (App Router) — production. Remix — planned. Vanilla React — нет (нужен bundler + framework).
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.