21509
Все самое полезное для фронтенда в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/77178ed4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
📎 6 полезных CSS-фич для современного frontend
В карточках собрали CSS-сниппеты, которые реально встречаются в production и помогают писать более гибкий интерфейс без лишних костылей.
➖ Полезно как для джунов, так и для тех, кто давно не следил за новыми возможностями CSS.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme
🎯 Большинство CSS-багов начинаются не со сложных фич
Обычно всё ломается из-за мелочей:
— блок внезапно стал шире
— z-index перестал работать
— shorthand сбросил половину стилей
— !important начал воевать сам с собой
🤔 Почему ARIA может навредить интерфейсу
ARIA часто воспринимают как «быстрый способ сделать accessibility». Но проблема в том, что неправильные роли могут запутать screen reader сильнее, чем их отсутствие.
🔤 Например:
html <div role="button">Save</div>
🧩 Прозрачный <image> без градиентных костылей
В CSS готовят функцию image(). Она позволит описывать одноцветное или прозрачное изображение как полноценное значение типа <image>.
Сейчас для «пустой картинки» часто используют обходной путь:
css background-image: linear-gradient(transparent);
css background-image: image(transparent);
🐸 Библиотека фронтендера
#pixel_pause
📌 Полезные JS-инструменты, о которых знают не все
Во frontend быстро накапливается рутина:
— ручные API-клиенты
— синхронизация state с URL
— мёртвый код
— бесконечные ESLint-конфиги
— валидация данных в нескольких местах сразу
🐸 Библиотека фронтендера
#pixel_pause
🗺 Roadmap для фронтендера
На этой карте собраны основные направления, через которые обычно проходит frontend-разработчик: от HTML/CSS/JS до архитектуры, SSR, тестирования и оптимизации.
Удобно использовать как:
— карту для обучения
— чеклист по пробелам
— навигатор перед собеседованием
— обзор современного frontend-стека
🧩 Микрофронтенды без привязки к Webpack
Module Federation позволяет нескольким JavaScript-приложениям делиться кодом, зависимостями и модулями во время выполнения. Изначально паттерн стал известен через Webpack 5, но теперь вырос в более самостоятельную платформу для микрофронтендов и больших frontend-приложений.
Что даёт:
→ разделение монолита на micro-frontends
→ загрузку remote-модулей в runtime
→ переиспользование общих зависимостей
→ независимую разработку и деплой частей приложения
🤔 Вопрос с собеседования
Почему в React нельзя использовать index как key в списке?
👇 Правильный ответ (нажми, чтобы прочитать):
key нужен React для правильного сопоставления элементов между рендерами.
Если использовать index, то при удалении, сортировке или вставке элементов React может переиспользовать state не того компонента.
Из-за этого:
— input может «потерять» значение
— UI начнёт вести себя странно
— сломаются анимации и focus
➖➖➖➖➖➖➖
items.map(item => (
<Row key={item.id} />
))
➖➖➖➖➖➖➖
🔜 Идеальный короткий ответ:
index как key безопасен только для статичных списков, которые не меняются и не сортируются.
👍 — знал/а
🔥 — стало понятнее
💼 Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут
🐸 Библиотека фронтендера
#career_merge
🐸 Библиотека фронтендера
#pixel_pause
🔥 Почему интерфейс «прыгает» при открытии модалки
При блокировке скролла браузер убирает scrollbar. Из-за этого меняется ширина viewport, и layout может сдвинуться на несколько пикселей.
Особенно заметно:
— в модалках
— drawer/sidebar
— fullscreen overlay
🎤 Ваши знания по ИИ-агентам + наша аудитория в 1 млн человек = профит
Мы в Proglib активно качаем тему ИИ-агентов. Если вы в теме, то у нас есть предложение 👇
Что с нас?
- Огромный охват: пропиарим ваши соцсети и продукты на 1 000 000+ айтишников.
- Личный бренд: станете узнаваемым экспертом в самой горячей нише 2026 года.
- Никакой рутины: наши редакторы сами упакуют ваши мысли в крутые посты.
Что с вас?
Любой экспертный контент по ИИ-агентам: кейсы из прода, шпаргалки, статьи, наработки по стеку (LangGraph, CrewAI, AutoGen и др.) или просто мысли по архитектуре.
👉 Стать экспертом и заявить о себе
❔ Как правильно форматировать числа в JSIntl.NumberFormat помогает форматировать числа под конкретную локаль: с правильными разделителями, символами валют и единицами измерения.
Вместо ручной склейки строк можно использовать встроенный API:
new Intl.NumberFormat("de-DE", {
style: "currency",
currency: "EUR"
}).format(123456789);
// 123.456.789,00 €
new Intl.NumberFormat("pt-PT", {
style: "unit",
unit: "kilometer-per-hour"
}).format(50);
// 50 km/h
new Intl.NumberFormat("fr-FR", {
style: "unit",
unit: "kilobyte",
unitDisplay: "long"
}).format(123456);
// 123 456 kilooctets
👩💻 HTML в Canvas: новый playground для UI
Экспериментальный API позволяет отрисовывать обычный HTML внутри canvas и дальше работать с ним как с пикселями: добавлять эффекты, анимации и шейдеры через WebGL/WebGPU, не теряя семантику, формы и DOM.
В статье:
— как перенести DOM в canvas через drawElementImage()
— как управлять рендерингом через requestPaint()
— как работать с пикселями и делать эффекты
— как подключать GPU и шейдеры
— и почему это может поменять подход к UI
⚡️ Astro 6.2
Что нового:
➖ experimental SVG optimizer API
➖ JSON logger и кастомные логгеры для structured logging
➖ experimental_getFontFileURL() для работы со шрифтами при генерации OG-image
➖ alpha Astro 7 с Vite 8
➖ Rust compiler теперь станет дефолтным
➖ allowedHosts для preview server
➖ новый jsx-режим для compressHTML
Astro продолжает двигаться в сторону более быстрых билдов, tooling для AI/coding agents и гибкой asset-инфраструктуры.
🔗 Источник
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#release_digest #astro
😕 TypeScript невозможно нормально выучить только через туториалы
Пока не начинаешь писать сложные generic-типы, разбирать infer, conditional types и narrowing — кажется, что TS заканчивается на interface и type.
🔤 TypeHero — платформа для практики TS через реальные задачи. Можно решать готовые челленджи, прокачивать понимание type system и даже публиковать собственные задачи.
Особенно полезно тем, кто:
✅ готовится к frontend-собесам
✅ хочет лучше понимать TS inference
✅ постоянно натыкается на странные ошибки типов
✅ хочет выйти за пределы «базового TypeScript»
🔗 Ссылка
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#stack #typescript
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев
Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.
🏃♀️ Уже 14 мая Эмиль проведет открытый вебинар!
Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».
🗓 Когда: 14 мая в 19:00 (Мск)
Почему Эмиля стоит послушать:
🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
🟥 Визуализация методов массивов в JavaScript
map, filter, slice, flat, push, pop — большинство знает их по названию, но на практике многие всё ещё путаются:
что мутирует массив, что возвращает новый, а что вообще меняет тип данных.
🔴 На шпаргалке — наглядное сравнение популярных array methods: как именно меняется массив после каждого вызова.
Особенно полезно:
— джунам
— перед собеседованием
— чтобы быстро освежить базу по JS
🐸 Библиотека фронтендера
#code_challenge
📄 Базовая шпаргалка по CSS
Селекторы, псевдоклассы, box model, позиционирование, текст и основные свойства — всё, что постоянно всплывает в вёрстке и на собеседованиях.
Подойдёт:
🔴 новичкам как краткая база
🔴джунам перед собесом
🔴как быстрый рефреш перед работой
🐸 Библиотека фронтендера
#readme #css
🗓 14 мая в 19:00 (Мск) встречаемся в онлайне.
Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.
В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.
Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.
🔊 В Safari DevTools можно поставить «звуковой» breakpoint
Вместо console.log и постоянных остановок debugger Safari умеет проигрывать звук при выполнении строки кода.
🔵 Как включить:
→ Sources → поставьте breakpoint → ПКМ по breakpoint → Edit Breakpoint... → Add Action → Play Sound
🧩 Почему GitHub не разваливается от количества информации
PR, issues, diff, CI, review, notifications, discussions — в GitHub одновременно живут десятки сущностей. Но интерфейс всё равно остаётся читаемым.
🔵 Разберём в карточках, как GitHub управляет сложностью через UX: от diff-view и review flow до labels, статусов и навигации внутри репозитория.
Полезно для любого продукта, где много данных, действий и состояний.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#ux_review
🪟 Удобный CLI для localhost и dev-серверов
Port Whisperer — CLI-инструмент для тех случаев, когда локально запущено слишком много dev-серверов, Docker-контейнеров и фоновых процессов.
Он показывает, что именно слушает порты на машине: процесс, PID, проект, framework, uptime и статус.
npx port-whisperer
npm install -g port-whisperer
🧩 Почему крупные приложения всё чаще рендерят UI с сервера
В обычной схеме даже небольшое изменение layout может превратиться в несколько PR и отдельные релизы для web, iOS и Android.
Server-Driven UI решает это по-другому: backend отправляет JSON с описанием экрана, а клиент собирает интерфейс из уже известных компонентов.
В карточках разобрали:
— как выглядит SDUI
— зачем нужен component registry
— как JSON превращается в React tree
— и где такой подход реально даёт пользу
🔥 Что нового в Chrome 147 и Firefox 150
🔜 contrast-color()
CSS-функция для автоматического выбора чёрного или белого текста в зависимости от фона. Полезно для accessibility и динамических UI.
color: contrast-color(#8b5cf6);
Math.sumPrecise()
Math.sumPrecise([0.1, 0.2]);
// 0.3
element.startViewTransition()border-shapeariaNotify()
document.ariaNotify("Saved successfully»);
sizes="auto" для lazy-loaded изображений@supports at-rule()
🔥 Топ-вакансий недели для фронтендеров
Middle Frontend-разработчик (React / React Admin) — от 180 000 ₽, гибрид (Москва)
Senior Frontend Engineer (React / Next.js) — remote (Europe)
Frontend-разработчик — от 2 000 до 2 500 $, удаленно (Москва)
➡️ Больше офферов в канале: @jsdevjob
🐸 Библиотека фронтендера
⚡️ Опенсорсный viewer для больших зумируемых изображений на JS
Подходит для карт, архивных снимков, медицинских изображений, музейных коллекций и других сценариев, где нужно плавно приближать картинку без загрузки огромного файла целиком.
🔴 Что умеет:
— zoom и pan для изображений высокого разрешения
— работа на desktop и mobile
— поддержка DZI, IIIF, Zoomify, OpenStreetMap, TMS и других tile-источников
— overlays, navigator, rotation, toolbar
— плагины для аннотаций, SVG/Canvas/HTML-оверлеев, WebGL-фильтров и скриншотов
🔗 Посмотреть демо
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#stack
📂 Короткая шпаргалка по циклам в JavaScript
На картинке — базовые отличия, которые часто всплывают в коде и на собеседованиях.
Сохраняйте, чтобы быстро освежить в памяти 🎈
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme #js