Коля Шабалин и великий аттрактор кода
338 subscribers
230 photos
2 videos
328 links
Некий Коля Шабалин рассказывать про фронтенд, обучение, CSS-спецификации и фичи

Чат для общения: https://t.me/+W80kxMBPKvAwNzBi

Поддержать на Бусти - https://boosty.to/css-space
Download Telegram
Странные дела

Странный вчера пост вышел, да? Сейчас будет ещё страннее.

Моя короткая история дайджестов

Где-то в 2015 году я понял, что вообще никак не успеваю за развитием фронтенда. Что я только ни делал — всё равно мимо пролетали важные события, новые технологии, подходы и прочее. Тогда я решил, что надо как-то это фиксить. Я нашёл парочку дайджестов и выработал правила, следуя которым я не буду грустить. С ними я поделился в прошлом посте. Всё успеть невозможно, но нужно хотя бы двигаться вместе с индустрией.

В 2020 году я начал делать дайджесты для себя. Даже собрал базу данных с группировкой по темам, по которой мог найти пул статей на определённую тему. Золотые деньки. Тут я понял, что могу делать это регулярно и на постоянной основе. Просто так, ни для кого — а для себя.

В 2022 году я начал публиковать свои дайджесты от лица компании — но не срослось.
В 2023 году я начал публиковать дайджесты внутри компании, от лица компании — но снова не срослось.
В 2024 году я перешёл в другую команду и там продолжил постить дайджесты внутри компании для фронтендеров. Отклика было 0. Как вы поняли — не срослось.

К этому моменту я понял, что делать дайджесты от лица компании для меня не имеет смысла. Для компании это просто очередная метрика, столбик в дашборде. А я-то делаю для души. Компания позволяет делать это на большую аудиторию — которой у меня нет, а хотелось бы.

Ну что, пора начать публиковать для всех, делая это для себя. Учиться монетизировать и не расстраивать читателя.

Сегодня я выпускаю публичную бета-версию:
👉 https://shabalin.online/blog/digest/weekly-digest-1/

Посмотрите, пожалуйста, и дайте мне обратную связь. Я вам за неё буду искренне благодарен.
👍7🔥1
css-properties v4

👉 https://nikolai-shabalin.github.io/css-properties/

Вышла новая версия моего любименького пет-проекта css-properties. Как же он похорошел при мне.

Теперь есть тёмная тема. Появилось приветственное окно. Также есть чарт по добавлению CSS-фич по годам. Высота сайта уменьшилась втрое.

Всё прошло не без проблем, которые я буду решать позже. Размер проекта вырос в 2.5 раза. А самое страшное для этого проекта это то, что выросло количество DOM-нод. В проекте сейчас отрисовываются 2467 карточки. В каждой куча информации и ненужной вложенности, которая сильна аффектит рендеринг. Особенно пострадают мобльные девайсы. Но всё это новые вызовы, которые можно решить.

Если интересно приходите в issue проекта https://github.com/nikolai-shabalin/css-properties
👍8👏31
🗞 С понедельника запускаю рассылку с новостями из мира фронтенда
Выпуски начнут попадать в рассылки. Это важный момент для следующего повествования.

🎯
Если вы в поиске работы фронтенд-разработчиком — есть идея!
Добавлю ваш баннер с ссылкой на резюме прямо в выпуск. Смотрите на пример в посте. Это возможность рассказать о себе коллегам, рекрутерам и потенциальным работодателям.

📐
Что нужно:
- Баннер 960×300 пикселей (PNG или WebP)
- Одна ссылка на резюме (hh, habr.career, GitHub и так далее)

🎨
Креатив приветствуется: скругления, волны, прозрачность - всё можно. Выделяйтесь среди остальных.
Главное — избегайте кислотных цветов, делайте в спокойной палитре.

💸
Это бесплатно.
📩 Присылайте до воскресенья включительно, чтобы попасть в ближайший выпуск.

Давайте делать фронтенд-сообщество полезным друг для друга 🙌
👍17🔥5
Привет, фронтендер! 🦊

Меня зовут Фронти, и я только начинаю свой путь в мире веб-разработки — вместе с тобой!

Каждую неделю я буду делиться с тобой самым интересным из мира фронтенда: статьи, инструменты, подходы, которые действительно помогают расти. Будет и серьёзно, и весело — потому что учиться должно быть интересно.

Я обожаю нативные технологии браузера: Web APIs, семантику HTML, чистый CSS и всё, что можно сделать без лишней магии. Но и за новыми штуками вроде Wasm, React Server Components и AI-инструментами я слежу с большим интересом — ведь это отличная возможность научиться новому и прокачаться! 🚀

Так что подписывайся, читай, задавай вопросы и не бойся пробовать. Мы все тут, чтобы расти. Я тоже учусь каждый день — вместе с вами 🙌

Сегодня ждите от меня несколько новостей. До встречи в ленте!

— твой лис и проводник по фронтенду,
Фронти 🦊💻
🔥17🥰21👍1🥴1
🦊 Фронти снова на связи!

Ура! Второй выпуск еженедельного фронтенд-дайджеста уже готов и ждёт тебя!
👉 https://shabalin.online/blog/digest/weekly-digest-2/

На этой неделе я подобрал самые вкусные статьи, свежие фичи и полезные тулзы, которые стоит заценить.

📬 Листай, читай, сохраняй и делись с командой. А если что-то особенно зацепило — пиши мне, мне интересно, что тебе нравится!

До встречи в следующем выпуске!
Твой лис и код-доброволец — Фронти 🦊💡
29👍4🔥1
Как синхронизировать визуальный и таб-порядок в адаптивной вёрстке — без tabindex и JavaScript?

Когда дизайнер "перекидывает" блоки на десктопе с помощью флексов или гридов, порядок фокуса по Tab остаётся прежним — DOM никуда не менялся. В итоге клавиатурный пользователь прыгает по странице в хаотичном порядке. Обычно это пытались лечить через tabindex, вручную или через JS.

В CSS Display Module Level 4 появились новые CSS-свойства reading-flow и reading-order. Теперь можно задать логический маршрут фокуса на уровне контейнера:
.header {
display: grid;
grid-template-areas: "logo social nav";
reading-flow: grid-columns; /* фокус идёт слева направо */
}


Для точной настройки есть reading-order: можно явно указать, какой элемент получает фокус первым.

PS: работает это только в свежем Хроме, а почитать подробнее можно как всегда
👉 https://shabalin.online/blog/ally/tabindex/
👍8🔥2
🦊 Фронти снова в эфире! Выпуск #3 уже тут!

Пока вы писали npm install, я собрал для вас свежайший фронтенд-дайджест — третий выпуск готов! 🎉

На этой неделе — особенно жарко:
🍏 Apple с WWDC 2025 просто выкатили пушку: WebGPU, scroll-анимации, declarative push без JS и Safari 26 (да-да, сразу 26!).
🎨 В CSS — контрастный текст, частичные keyframes и стилизация форм без боли.
🧠 В JS — ностальгия по коду 2007-го и здравый взгляд на Angular 20.
⚛️ React в разрезе: RSC, Dan Abramov, Remix, SolidJS — всё меняется, и это интересно.
⚙️ Node.js — новые версии, hot reload без библиотек, OAuth и даже Jest 30!
🚀 Плюс десятки свежих библиотек: Ink, MSW, Storybook 9, Astro 5.9 и даже новый ORM.


📬 Забирай выпуск здесь: https://shabalin.online/blog/digest/weekly-digest-3/

Хочу похвастаться - прошлый выпуск посмотрели 2290 раз! Я в восторге =3

До следующей недели, фронтендер!
Не забывай: браузер — твой фреймворк, а я — твой лис 🦊💻

— Фронти
3👍9🔥2
Принципы доступности

Опубликовал ещё 4 принципа доступности
👉https://shabalin.online/blog/category/ally/

Хотел отдельными постами опубликовать, но что-то пока не выходит. Вообще, всего их 12. Так что будет ещё порция.
🦊 Хэй-хэй, это снова Фронти на связи!

Напоминаю: если ты активно ищешь работу фронтенд-разработчиком — у тебя ещё есть шанс попасть в дайджест Frontend Weekly! В новый выпуск я добавлю баннеры от тех, кто хочет рассказать о себе сообществу и рекрутерам. Пример уже можно глянуть в актуальном выпуске - https://shabalin.online/blog/digest/weekly-digest-3/

Что нужно:
📐 Баннер размером 960×300 пикселей (PNG или WebP)
🔗 Ссылка на твоё резюме — подойдёт hh, Habr Career, GitHub и т.п.

🎨 Можно добавить немного креатива — выделяйся среди остальных.

Прошлый выпуск посмотрели свыше 2 000 раз.

📅 Приём заявок до воскресенья включительно, не опоздай!

Твой 🦊 Фронти
Мобилки уже давно победили

Просто напоминаю, что пользователи уже давно чаще всего заходят на ваш проект с помощью смартфона.

Первый скриншот тысячи посетителей в месяц.

Второй скриншот миллионы посетителей в месяц.

Как видите цифры не особо отличаются в процентном соотношении
👍5👎1
Layout highlighter

В 2018 я опубликовал своё первое расширение для браузера. Это было прекрасное чувство, так как я использовал стандартные веб-технологии HTML+CSS+JS+manifest, а получил штуку, которая работает поверх сайтов в браузере.

Недавно у меня появилась потребность подсветить границы элементов, чтобы проверить сетку проекта. Там была особенность, что все элементы были position: absolute. Проставлять руками outline или создать утилитарные классы это было бы нормальное решение, но я создал расширение, чтобы просто кликать кнопочки на любом сайте. Всё равно меня скоро ждёт ещё один подобный сайт с абсолютами =(

Вот делюсь своей наработкой - https://chromewebstore.google.com/detail/layout-highlighter/afnlmfcnkkmgmkklnjlbijphkncglplf
А если найдёте баги или есть, что сказать, то приходите в issue - https://github.com/nikolai-shabalin/layout-highlighter
🦊 Йо-хо-хо, фронтендеры!
Это снова я, Фронти, и у меня для тебя свеженький выпуск дайджеста #4 — ещё горячее, ещё сочнее, ещё насыщеннее! 💥

Вот что я накопал для тебя на этой неделе:

📘 JavaScript в 2025? — Новая книга от Акселя Раушмайера про современные фишки языка. Бесплатно и с карточками для практики!

🧠 Biome v2 — линтер, который понимает типы без tsc. Да-да, звучит как магия, и почти так и работает.

🎨 CSS и интерфейсы:

- Новый способ украшать gap между элементами (никаких больше псевдоэлементов!).
- Анимация зума, пазлы из SCSS — очень визуальный выпуск!

🦾 React & React Native:

- Марк Эриксон рассуждает, куда катится React.
- Вышел React Native 0.80 — с новыми типами и сборкой.
- Relay, React Aria Tree, даже видеоинтервью о CTO, уходящих от React 👀

🛠 Node.js и инструменты:

- Amaro 1.0 — шаг к полноценной поддержке TypeScript в Node.
- pnpm 10.12 теперь умеет глобально шарить зависимости!
- Обновления Git, Fastify, Mongoose и целая пачка крутых либ для продакшна.

🧪 И конечно, эксперименты!
Liquid Glass в React, SVG-анимации, чат-боты, RampenSau — даже Critical CSS Generator для перфекционистов.

🤖 Немного про AI, безопасность расширений и MCP-хуки — всё, что нужно, чтобы оставаться на гребне волны.

📬 Листай, вдохновляйся и не забудь сохранить понравившееся.

Выпуск ждёт тебя на https://shabalin.online/blog/digest/weekly-digest-4/

До встречи в следующем выпуске,
твой пушистый проводник по миру фронтенда — Фронти 🦊
47🔥3
🦊 Что сказал лис?

Это снова я, Фронти, и я вернулся с выпуском #5 — пока ты дебажил useEffect, я собрал всё самое важное и вдохновляющее из мира фронтенда 💻

Вот что у нас на этой неделе:

📜 ECMAScript 2025 принят официально!
TC39 утвердил новую версию стандарта. Подробности — в статье, а если хочешь быстро врубиться — вот обзор от Dr. Axel. Спойлер: будет интересно.

🎨 CSS & визуал
- Scroll-анимации на чистом CSS — красиво и доступно.
- Liquid Glass — Apple-стиль, но в CSS.
- if() в Chrome 137 — условные правила прямо в стилях!
- BEM vs utility vs cascade layers — сравнение для тех, кто устал от !important.
- Цветовые функции lab() и oklch() — контроль над палитрой как у профи.

⚛️ React & друзья
- Recharts 3.0 — теперь ещё больше графиков и лучше архитектура.
- Погружаемся в повторные рендеры — что вызывает их и как их приручить.
- Next.js против WordPress — реальный кейс миграции.
- ИИ vs. Rails: можно ли пересобрать страницу на Next.js? (спойлер: можно, но не без сюрпризов)

🛠 Node.js & инструменты
- Потоки в Node — теперь ты можешь распараллеливать задачи без боли.
- MongoDB в памяти для тестов — юнит-тесты без поднятия настоящей базы.
- CommonJS + ESM — дружим правильно.
- AdonisJS 7 на подходе — Roadmap с фичами, которые хочется уже сейчас.

📚 Бонусы и вдохновение
- 3D-визуализация звука на Three.js — просто must-see!
- Почему визуальные редакторы так и не взлетели — мнение Salma Alam-Naylor.
- JavaScript "сломал веб" — провокационная колонка, которую стоит прочитать.

📬 Листай, сохраняй, делись — и, конечно, не забывай подписаться.
Выпуск уже ждёт тебя на https://shabalin.online/blog/digest/weekly-digest-5/

До скорого,
твой пушистый курьер по миру технологий — Фронти 🦊💼
5👏43🔥2
✂️ Как работать с буфером обмена на сайте?

Хотите сделать копирование удобнее, вставку умнее, а взаимодействие с пользователем приятнее? Тогда пора познакомиться с Clipboard API!

🚀 Мини-пример: переопределение копирования с добавлением источника

document.addEventListener('copy', (e) => {
const selection = document.getSelection().toString();
e.clipboardData.setData('text/plain', `${selection}\nИсточник: example.com`);
e.preventDefault();
});


🔥 Async Clipboard API:
Можно копировать и вставлять контент программно (по кнопке, без выделения вручную).

navigator.clipboard.writeText('Скопировано программно!');


Больше в статье
👉 https://shabalin.online/blog/other/clipboard-api/
👍5🔥3
Отдых

На следующей неделе буду на Кольском полуострове: Мурманск, Мончегорск, Кировск, Апатиты, Териберка
🔥15👍3
🦊 Йо-хо-хо, фронтендеры!
С вами снова я, Фронти, и вот дайджест #6 — свежий, сочный, технологичный 💥

Пока ты стилями gap'ы выравнивал, мир фронтенда не стоял на месте:

🎨 CSS-штучки
💥 Gap теперь можно СТИЛИЗОВАТЬ! Никаких псевдоэлементов — только красота.
🎨 Blob-формы, corner-shape и кастомные углы — скучному border-radius конец.
🌈 Цветовые пространства oklch, srgb, lab() — будущее дизайна уже здесь.

📦 JS & ECMAScript 2025
🚀 Новый стандарт утверждён! Новые фичи, упрощения синтаксиса.
🤖 Deno снова умеет bundle — собирает всё в один файл.
💡 Proxy + Reactive State — делаем свой MobX с нуля.

React & рядом
🧩 React всё ещё путает? Ты не один — вот честный разбор.
📄 Классные статьи: useOptimistic, Reactylon (3D!), загрузка данных, Signals, Storybook 9 и даже Claude-приложения на React.
🎭 Стоит ли учить новый фреймворк? TL;DR — не всегда 😅

⚙️ Node.js & инструменты
🔧 Node 22.17 с Web API, import maps и улучшенным ассертом.
☁️ Cloudflare запускает контейнеры — альтернатива Workers.
🛡 Защита API с помощью Cedar — права доступа за 5 минут.
💬 Почему игра тормозит при 500+ игроков? Разбор.
📦 dotenv 17, Undici, NestJS + WebRTC, Astro 5.11, Bun 1.2.18 — всё обновляется!

👉https://shabalin.online/blog/digest/weekly-digest-6/

📬 Подписывайся и не пропускай свежие выпуски.
А я — твой лис-курьер Фронти — уже собираю следующий! 🦊💼
6🔥8👍3😍21🤯1
Опрос дня

Что-то подумалось, что оффлайн по фронтенду в Питере практически мёртв, но я могу хоть как-то поспособствовать его оживлению.
Есть идея провести пару мастер-классов в оффлайне по фронтенду этим летом в Петербурге. Отличная возможность узнать что-то новое и пообщаться на тему фронтенда не в кругу коллег. Завести новые знакомства и создать новый фреймворк

Ниже будет опрос, чтобы я смог понять нужно это хоть кому-то кроме меня или нет. Поучаствуйте в нём пожалуйста, даже если вы не из Питера.
🔥11
🦊 Привет-привет, фронтендеры!
Это снова я, Фронти, и у меня для тебя дайджест #507 — как всегда, с самыми свежими и технологичными находками недели! 🔥

Вот что бросилось мне в лапы:

💡 popover="hint" — подсказки без JS
Теперь можно делать всплывашки без скриптов. Красиво, понятно, удобно!

🧩 CSS с if() — условные стили в браузере
Да, прямо в CSS! Пиши условия — без препроцессоров и JS. Пока в Chrome, но революция уже рядом.

🎨 Градиенты с зернистой текстурой?
SVG + displacement map творят чудеса. Спасибо Ана Тудор за вдохновение.

🥊 Cascade Layers vs BEM vs Tailwind
Глубокий разбор специфичности — какой подход победит?

🚀 JavaScript 2025 всё ближе
Подробный отчёт с TC39: Array.fromAsync, Temporal, AsyncContext, и много будущего.

⚠️ Parcel и hoisting — осторожно!
Автоматический подъём кода может ломать приложение. Автор Parcel подумывает отключить это поведение.

🌌 React Three Fiber + WebGL = магия
Кинетические анимации, облачный рендер КТ-сканов и даже 3D для научных проектов.

🪄 Node чинит JSON сам!
Появился jsonrepair — инструмент, который сам исправляет сломанный JSON. Must-have для работы с AI и API.

🌀 Tailwind снова в центре споров
"Худшая форма CSS, кроме всех остальных". Спорим — читаем — делаем выводы 😉

🤖 Copilot Chat теперь доступен всем
VS Code + ИИ = мощный комбо. А теперь ещё и с открытым кодом.

🛠 Обновления Babel, Faker, Oxlint, Recharts, Material UI и ещё 20+ либ

👉 https://frontend-weekly.ru/weekly-digest-7/

До следующего выпуска,
твой цифровой курьер по миру фронтенда — Фронти 🦊
70🔥1021
Новая ссылка на фронтенд-дайджест

Я решил выделить дайджест из блога. Теперь дайджест это полноценный отдельный проектик, который будет жить по адресу 127.0.0.1 😄

Это позволит мне чуть увереннее изменять проект без наследования от блога, а также проработать мобильную версию проекта. Всё ещё считаю, что мобилка - это давно дефолтное состояние проектов. Ну, а блог тоже скоро ждут изменения.

👉https://frontend-weekly.ru/
какое красивое и подходящее доменное имя, скажите? =)

PS: все предыдущие выпуски навсегда остаются в блоге, а также продублированы в отдельном проекте, так что ссылки не протухнут.
👍9