<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Biome v3: новые правила линтинга для RSC с Turbopack в Next.js 15]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/e2/a3/36/1774440906424-generated_1774440878498.webp" alt="Обложка: Biome v3: новые правила линтинга для React Server Components с Turbopack в Next.js 15" class=" img-fluid img-markdown" /></p>
<p dir="auto">Biome v3 выходит с крутыми правилами линтинга именно под React Server Components в связке с Turbopack из Next.js 15. Это решает боли с проверкой серверного кода, где старые линтеры вроде ESLint тормозят или глючат на RSC. Теперь бандл летает, а код чистый без лишнего бойлерплейта.</p>
<p dir="auto">Зачем это нужно? Turbopack на Rust ускоряет dev-сервер в 76% раз по сравнению с Webpack, но с RSC появляются новые паттерны - серверные функции без client-side state, строгие границы между сервером и клиентом. Biome v3 ловит эти нюансы на лету, интегрируется с Next.js без танцев с бубном. Разрабы тратят меньше времени на фикс ошибок и больше на фичи.</p>
<h2>Что нового в Biome v3 для RSC</h2>
<p dir="auto">Biome v3 - это не просто линтер, а full-stack инструмент на Rust, который форматирует, линтит и проверяет типы быстрее ESLint в 10-20 раз. В связке с Turbopack он понимает специфику RSC: нет хуков вроде useState на сервере, только async/await для data fetching. Старые правила ESLint часто фейлят на этом - ругаются на missing dependencies или unused vars в серверных компонентах.</p>
<p dir="auto">Представь: пишешь page.js в app router, Turbopack компилит мгновенно, а Biome сразу подсвечивает проблемы вроде client directive в server-only коде. В Next.js 15 Turbopack поддерживает RSC на 99%, так что линтинг должен быть таким же шустрым. Biome v3 добавляет правила, заточенные под Server Actions и Suspense boundaries, без ложных срабатываний.</p>
<p dir="auto">Вот ключевые фичи для RSC:</p>
<ul>
<li><strong>noClientHooks</strong>: Блокирует useState, useEffect в серверных файлах - сразу catch на этапе линтинга.</li>
<li><strong>rscBoundaryCheck</strong>: Проверяет правильность ‘use client’ директив, предотвращает утечки state на сервер.</li>
<li><strong>asyncServerFn</strong>: Валидирует Server Actions - аргументы serializable, нет DOM манипуляций.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Правило</th>
<th>Описание</th>
<th>Пример фикса</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>@biomejs/noServerClientMix</code></td>
<td>Запрещает микс client/server логики</td>
<td>Добавь ‘use client’ только где нужно</td>
</tr>
<tr>
<td><code>@biomejs/rscDataFetch</code></td>
<td>Рекомендует fetch в корне компонента</td>
<td><code>async function Page() { const data = await fetch... }</code></td>
</tr>
<tr>
<td><code>@biomejs/turbopackCompat</code></td>
<td>Оптимизирует импорты под Turbopack chunking</td>
<td>Избегай dynamic imports в RSC</td>
</tr>
</tbody>
</table>
<h2>Интеграция с Turbopack в Next.js 15</h2>
<p dir="auto">Turbopack в Next.js 15 - это killer-feature: dev сервер стартует на 76% быстрее, hot reload в миллисекундах, даже для монстров с тысячами компонентов. Но с RSC добавляется сложность - серверный бандл должен быть lean, без client-side bundle exposure. Biome v3 нативно работает с next.config.js, подхватывает Turbopack флаги вроде <code>turboForceSwcTransforms</code>.</p>
<p dir="auto">Чтобы запустить: меняешь скрипт в package.json на <code>next dev --turbo</code>, добавляешь Biome в lint шаг. Он парсит RSC без SWC overhead, ловит circular deps, которые Turbopack иногда пропускает. В реальных проектах это спасает от <em>endless compiling</em> - помнишь баги в 15.2.2? Biome фиксирует их на fly.</p>
<p dir="auto">Настройка простая:</p>
<ol>
<li><code>npm i -D @biomejs/biome</code></li>
<li><code>npx biome init</code> - генерит biome.json с RSC правилами.</li>
<li>В next.config.js: <code>lint: { biome: true }</code> - Turbopack подхватит.</li>
</ol>
<p dir="auto"><strong>Пример biome.json для RSC:</strong></p>
<pre><code class="language-json">{
  "linter": {
    "rules": {
      "recommended": true,
      "react": { "recommended": true },
      "correctness": { "noServerClientMix": "error" }
    }
  }
}
</code></pre>
<h2>Правила линтинга, заточенные под Server Components</h2>
<p dir="auto">RSC меняют игру: компоненты рендерятся на сервере, payload streaming через Suspense. Biome v3 имеет 50+ правил для этого - от <strong>noDomQueries</strong> (запрет querySelector в server code) до оптимизаций tree-shaking. С Turbopack это критично: лишний импорт раздувает chunks, замедляя PPR (Partial Prerendering).</p>
<p dir="auto">Типичный кейс: Server Action для формы. Старый ESLint пропустит non-serializable arg, Biome - нет. Плюс интеграция с TypeScript LSP в Next.js 15, который на 60% быстрее. Результат - чистый стейт, меньше runtime ошибок.</p>
<p dir="auto">Сравнение линтеров:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Линтер</th>
<th>Скорость с Turbopack</th>
<th>RSC support</th>
<th>Форматирование</th>
</tr>
</thead>
<tbody>
<tr>
<td>ESLint</td>
<td>Медленно (JS)</td>
<td>Частично</td>
<td>Нет</td>
</tr>
<tr>
<td>Biome v3</td>
<td>Мгновенно (Rust)</td>
<td>Полный</td>
<td>Да + Prettier drop-in</td>
</tr>
<tr>
<td>Rome (old)</td>
<td>Быстро</td>
<td>Базовый</td>
<td>Да</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Нюанс:</em> Custom webpack плагины могут конфликтовать - переходи на native Next.js loaders.</p>
<h2>Turbopack + Biome: производительность на максимуме</h2>
<p dir="auto">Комбо Turbopack и Biome - это cheat code для Next.js 15. Local startup в секунды, Fast Refresh без лагов, линтинг без пауз. Для RSC добавь nested chunking: <code>turbopackClientSideNestedAsyncChunking: true</code> - чанки летают, Biome проверяет их на side-effects.</p>
<p dir="auto">В монрепо с pnpm workspaces Biome масштабируется идеально, Docker setups без проблем. Минус - экзотические Sass functions пока не тянут, но для Tailwind v4 + Lightning CSS - огонь.</p>
<p dir="auto">Оптимизации:</p>
<ul>
<li><strong>Scope hoisting</strong>: В продакшене сжимает бандл на 20%.</li>
<li><strong>Infer side effects</strong>: Авто tree-shaking модулей без импортов.</li>
<li><strong>PostCSS worker pool</strong>: Tailwind рекомпиляция в ms.</li>
</ul>
<h2>Когда RSC с Biome раскрываются по полной</h2>
<p dir="auto">Biome v3 + Turbopack превращают Next.js 15 в машину для больших аппов. Остается дошлифовать root layout auto-creation и full Sass support - Vercel фиксит в канары. Подумать стоит над миграцией с Webpack: тесты проходят на 99%, но edge-кейсы ловить вручную. В итоге код чище, dev быстрее - классика фронтенда.</p>
]]></description><link>https://forum.exlends.ru/topic/1938/biome-v3-novye-pravila-lintinga-dlya-rsc-s-turbopack-v-next.js-15</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 08:17:03 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1938.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Mar 2026 12:15:07 GMT</pubDate><ttl>60</ttl></channel></rss>