lenec ru

← все теги

#frontend

25 постов

Vite Failed to resolve import — что не так и как починить

Vite швыряет в консоль ровно такое:[plugin:vite:import-analysis] Failed to resolve import "./button" from "src/App.tsx". Does the file exist?Сообщение конкретное: модуль не нашёлся по указанному…

76 15K
Демид Песцов

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

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

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

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

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

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

Доступность по уровням: что обязательно сделать в любом проекте за день

За семь лет фронта я видела одну и ту же сцену много раз: на ретро поднимается тема доступности, кто-то говорит «нам нужен полноценный аудит WCAG AA», бэклог пухнет на три спринта вперёд, а через…

428 19K
Анна Соколова

Astro 4 → 5: что сломалось и как чинить

Я мигрировал три проекта с Astro 4 на 5. Один — контент-сайт со статикой, второй — гибрид с серверным рендером и API-роутами, третий — большой монорепозиторий с собственными интеграциями. Опыт у…

167 12K
Никита Воробьёв

CSS Container Queries: где они уже работают

Контейнерные запросы (CSS Container Queries) — это инструмент, который ждали пятнадцать лет. Раньше адаптивная вёрстка строилась только на ширине viewport, и компонент в боковой панели и в основной…

86 17K
Глеб Тихомиров

Vite 6 environment API: гайд

Vite 6 принёс Environment API — новый способ описывать сборку для нескольких сред (браузер, Node, Worker, edge). Раньше это решалось монолитной конфигурацией с условиями, что приводило к запутанным…

145 13K
Алина Боброва

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

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

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

View Transitions API в Astro: реальные кейсы

View Transitions появились в Astro ещё в третьей версии и за это время превратились из красивой демки в рабочий инструмент. Я их использую в трёх проектах: сайте конференции, корпоративном блоге и…

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

Astro vs Next.js 15: когда что выбрать в 2026

Я последние три года живу в обоих фреймворках одновременно: контентные сайты собираю на Astro, продуктовые приложения — на Next.js. К 2026 году стало проще объяснять разницу: фреймворки разъехались…

276 18K
Никита Воробьёв

next/image на практике: как не получить раздутую галерею

Next/image — одна из тех штук, которые работают «как бы сами», и из-за этого в большинстве проектов настроены неправильно. Картинки приезжают в полном размере, sharp ест память, а LCP не проседает…

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

LCP в реальном проекте: топ-5 причин и как чинить

За последние два года я разбирала LCP в десятке проектов: e-commerce каталоги, медиа-главные, лендинги. Если посмотреть на распределение причин, картина получается на удивление однообразная. На пять…

432 13K
Дарья Перепёлкина

Собеседование на джуна Frontend: 50 вопросов с разбором

Я провожу собеседования джунов на фронт пять лет, в среднем 6–8 интервью в неделю. За это время вопросы кочуют от компании к компании, повторяются, и собрать список типовых — задача решаемая. Ниже 50…

473 17K
Дина Кречетова

TypeScript satisfies: когда вместо as

Оператор satisfies в TypeScript появился в 4.9 и уже к 2026 году стал привычным. Но тренд я наблюдаю до сих пор: разработчики, особенно из мира JS, путают satisfies с as и иногда применяют их…

208 10K
Глеб Тихомиров

Анализ JS-бандла в Next.js: где искать лишний вес

Раз в полгода я сажусь и проверяю, что у меня в бандле. Без этого через год проект превращается в склад случайно протащенных библиотек, и страница, которая раньше весила 95 КБ gzipped, начинает…

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

Дизайн-токены без Tailwind: организация CSS custom properties в больших проектах

Каждые полгода кто-то в моём окружении предлагает «всё переписать на Tailwind». Аргумент один и тот же — у нас стилей слишком много, разработчики придумывают новые отступы, бардак растёт. Я не против…

79 12K
Анна Соколова

Visual regression в Playwright: screenshot baseline без боли

Visual regression — это тесты, которые проверяют, что страница выглядит так же, как раньше. Не «работает» (это делают функциональные тесты), а именно «выглядит». Сценарий из жизни: разработчик правит…

155 16K
Елена Воронова

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

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

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

ARIA: когда нужна, когда вреднее не использовать

Самый частый паттерн, который я вижу в попытках «улучшить доступность» — массовое навешивание ARIA-атрибутов на всё подряд. role="button" на ссылке, aria-label="Кнопка" на кнопке с текстом…

394 10K
Анна Соколова

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

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

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

Container queries vs media queries: где какие выбирать в 2026

Когда container queries только-только зарелизились в Chromium и Safari, в твиттере и блогах прокатилась волна «media queries умерли». Год спустя стало понятно — нет, не умерли. Container queries не…

297 19K
Анна Соколова

Адаптивная типографика на clamp() без JavaScript

Когда я в первый раз увидела clamp() в продовом коде, у меня была ровно одна мысль: «зачем это месиво из трёх чисел, если есть простые media queries». Через полгода работы я перешла на clamp на 90%…

234 10K
Анна Соколова

Strict TypeScript на проекте: какие флаги дают ценность, а какие шумят

Я работаю с TypeScript шесть лет, и за это время три раза включала strict: true на чужих проектах. Все три раза первая реакция команды была одна: «у нас же десять тысяч ошибок, мы что, всё это будем…

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

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

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

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

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

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

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