lenec ru

← все теги

#react

32 поста

Next.js: Hydration failed because the server rendered HTML didn't match

Эта ошибка — родная сестра базового «Hydration failed because the initial UI does not match», но в Next.js часто показывается с уточнением: «server rendered HTML didn't match the client». В консоли —…

190 10K
Зоя Хомякова

Module not found: Can't resolve 'fs' в Next.js — что не так

Эту ошибку получаешь, когда импортируешь Node-модуль (fs, path, net, crypto) в код, который собирается под браузер. У бандлера webpack нет браузерной реализации fs, и он честно говорит «не могу…

449 13K
Камилла Куницына

Hydration failed because the initial UI does not match — реальные причины

Эту ошибку видел каждый, кто хоть раз писал на Next.js или другом SSR-фреймворке. В консоли — большая красная плашка про несовпадение разметки на сервере и на клиенте. Чаще всего разработчик идёт в…

159 11K
Камилла Куницына

Server Actions в Next 15: когда не использовать

Server actions в Next 15 — это удобно. Но удобно настолько, что начинаешь применять их везде подряд, и через месяц у тебя в проекте 200 серверных функций, которые делают всё подряд: от мутаций до…

106 11K
Артём Карпов

Виртуализация длинных списков в React: TanStack Virtual без боли

Нам прилетел тикет — оптимизировать листинг на 5К карточек товаров. Без виртуализации страница на iPhone 11 умирала в момент скролла, FPS падал до 5–7. С виртуализацией стала держаться на 58–60.…

367 15K
Юлия Скворцова

useEffect cleanup на практике: когда он критичен и как его не забыть

На собеседованиях я обычно спрашиваю: «расскажи, что делает функция, которую ты возвращаешь из useEffect». Половина кандидатов отвечает «это для отписки от подписок». Это правильно, но это треть…

401 19K
Юлия Скворцова

React Hook Form vs TanStack Form

В 2026 году у нас два серьёзных кандидата на главную форму-библиотеку для React: React Hook Form (RHF) и TanStack Form. Обе хорошо типизированы, обе работают с любым валидатором (Zod, Valibot, Yup),…

465 11K
Маргарита Чайкина

Hydration mismatch в Next: 5 типичных причин

Ошибка Hydration failed because the initial UI does not match what was rendered on the server — самое раздражающее в Next.js. На первый взгляд кажется случайной, и каждый раз приходится копаться. На…

447 10K
Антон Зверев

Zustand vs Redux Toolkit vs Jotai в 2026

За последние пять лет я работала с тремя разными подходами к управлению состоянием в React: Redux Toolkit, Zustand и Jotai. На разных проектах — разные, и каждый раз выбор был осмысленным, а не…

76 16K
Ксения Дроздова

Доступность форм в React: ошибки, метки, фокус, ARIA без перебора

Доступность форм — тема, на которой проседает 90% фронтов. Не потому что разработчики плохие, а потому что её редко учат, и редко требуют на собеседовании. А потом у пользователя со скринридером…

395 17K
Юлия Скворцова

Параллельные роуты Next.js: разбор на примере

Параллельные роуты — фишка App Router, до которой не каждый доходит. Пока ты не столкнёшься с конкретной задачей, она кажется сложной и слабо нужной. На самом деле это решение для трёх сценариев:…

121 18K
Артём Карпов

shadcn/ui: как форкнуть и не сломать обновления

shadcn/ui устроен иначе, чем традиционные UI-киты. Это не библиотека, которую ставишь через npm — это набор компонентов, которые генерируются прямо в твой проект. Это даёт максимальный контроль и…

197 11K
Глеб Тихомиров

react-hook-form + zod: типизированные формы без боли

Когда я последний раз делала форму с нуля без библиотек, это был 2021 год, и через две недели я переписала всё на react-hook-form. С тех пор каждая нетривиальная форма в моих проектах живёт на rhf, а…

256 10K
Юлия Скворцова

State management в App Router: где Zustand, где useState, где сервер

Когда переезжаешь с pages router на app router, первое, что замечаешь: половина мест, где раньше стоял Redux или Zustand, больше не нужна. Серверные компоненты сами знают данные, и тащить их через…

85 11K
Юлия Скворцова

Radix UI vs Headless UI vs Ark UI: что брать

Headless-библиотеки компонентов — это инструмент, который решает одну задачу: даёт корректное поведение и доступность, не навязывая стилизацию. Их в 2026 году осталось три заметных: Radix UI,…

393 11K
Глеб Тихомиров

Миграция Next.js с pages router на app router: пошагово, не за день

Я переносила два больших Next.js-приложения с pages router на app router. Первое — за два с половиной месяца, второе — за полтора. В обоих случаях это была не «героическая суббота с кофе», а…

298 14K
Юлия Скворцова

Семантика для SPA: landmarks и что ломается без них

Когда я пришла во фронтенд из бэкенда, меня смущала одна вещь. Все писали SPA на React, обвешивали страницу div'ами, и никто не задумывался, что страница, по сути, потеряла структуру. В классическом…

460 18K
Анна Соколова

Доступные модальные окна: focus trap и возврат фокуса без библиотек

Из всех виджетов в интерфейсе модальное окно — самый частый источник проблем с доступностью. На внешний вид всё кажется простым: затемнение, белый прямоугольник, кнопка «Закрыть». Внутри — куча…

215 14K
Анна Соколова

TanStack Query 5: миграция с v4

TanStack Query 5 вышел больше года назад, и за это время я успела перевести два больших проекта с четвёрки. Если коротко: миграция чище, чем кажется на первый взгляд, но есть пара точек, где…

385 10K
Ксения Дроздова

useMemo и useCallback: когда они реально нужны, а когда мешают

На каждом code-review я вижу одну и ту же картину: половина функций компонента обёрнута в useCallback, половина значений — в useMemo. Спрашиваешь «зачем» — слышишь «для оптимизации, чтобы лишний раз…

340 10K
Юлия Скворцова

Error Boundaries в React: где ставить и как не превратить в общий catch

Error Boundary — один из тех механизмов, про который все знают, но почти никто не использует осознанно. Чаще всего я вижу либо «в проекте нет ни одной границы, всё падает белым экраном», либо «один…

331 13K
Юлия Скворцова

React 19 use() хук: чем заменяет useEffect

Когда я первый раз увидел use() в RFC, реакция была: «зачем ещё один хук, если у нас уже есть useEffect и Suspense?». Через полгода работы с React 19 ответ такой: use() не «ещё один хук», а способ…

224 13K
Артём Карпов

Suspense на клиенте: где границы ставить, чтобы не мигало

Suspense я первый раз попробовала ещё в эпоху pages router и осталась недовольной — половина случаев ломалась, скелетоны мигали невпопад. С приходом App Router и React 18+ я вернулась к нему…

129 12K
Юлия Скворцова

Server Actions в Next.js: где они уместны, а где лучше REST

Server Actions преподносят как «теперь не нужно писать API-эндпоинты». Это правда ровно настолько же, насколько и неправда. На простых формах действительно не нужно. На всём остальном — нужно, просто…

389 13K
Юлия Скворцова

React Server Components в App Router: где они уместны, а где ломают DX

Я сначала тоже ненавидела server components. Год назад мы переезжали с pages router на app router в Next.js, и первые две недели я ходила и бубнила, что всё это сломанная абстракция. Потом…

406 12K
Юлия Скворцова

Доступные формы: связь label, ошибок и описаний через aria-describedby

Формы — это место, где доступность интерфейса проверяется на прочность. Если у формы нет нормальных лейблов, ошибки появляются в произвольных местах страницы, а описания полей живут отдельно от самих…

74 17K
Анна Соколова

Astro Islands vs React Server Components

Когда я объясняю стажёрам разницу между Astro Islands и React Server Components, всегда сначала приходится разобраться, на каком уровне абстракции мы вообще сравниваем. Это разные модели рендера, и…

472 19K
Полина Цаплина

Next.js App Router vs Pages Router: миграция

На прошлой неделе закончил миграцию большого проекта с Pages Router на App Router. Это уже третья такая операция за карьеру, и каждый раз нахожу что-то новое — модель Next.js за это время сильно…

332 19K
Артём Карпов

useOptimistic в React: типичные ошибки

Хук useOptimistic в React — про быстрый UI. Пользователь жмёт «лайк», UI меняется мгновенно, а сервер догоняет в фоне. Идея простая, реализация в коде на одну строку, но за полгода работы я…

98 18K
Ксения Дроздова

SWR vs TanStack Query: где разница и что брать в 2026

Раз в год кто-то приходит ко мне в личку и спрашивает: «Юля, что брать — SWR или TanStack Query». И раз в год я отвечаю одно и то же: зависит от проекта. Дальше выясняется, что человек хочет короткий…

218 17K
Юлия Скворцова

Focus management в SPA: куда возвращать фокус после навигации

Когда переходишь между страницами в обычном сайте — браузер сам ставит фокус в начало документа, и скринридер начинает читать сначала. В SPA URL меняется, а DOM нет — браузер не понимает, что…

371 11K
Юлия Скворцова

Reduced motion на практике: как отключать анимации и не ломать UX

Каждый раз, когда я в очередной проект внедряю поддержку prefers-reduced-motion, повторяется одна и та же история: разработчики либо забивают на запрос вообще, либо включают тотальную блокировку всех…

294 15K
Анна Соколова