uk
Feedback
Frontender's notes [ru]

Frontender's notes [ru]

Відкрити в Telegram

Ведущий канал о современном фронтенде: статьи, новости, практики, вайбкодинг и автоматизация фронта ИИ-агентами. Личный блог автора - @just_genych По вопросам рекламы или разработки - @g_abashkin

Показати більше

📈 Аналітичний огляд Telegram-каналу Frontender's notes [ru]

Канал Frontender's notes [ru] (@frontendnoteschannel_ru) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 32 535 підписників, посідаючи 4 220 місце в категорії Технології та додатки та 20 044 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 32 535 підписників.

За останніми даними від 11 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -128, а за останні 24 години на 27, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.56%. Протягом перших 24 годин після публікації контент зазвичай збирає 4.93% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 112 переглядів. Протягом першої доби публікація в середньому набирає 1 604 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 30.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як браузер, api, css, интерфейс, загрузка.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
Ведущий канал о современном фронтенде: статьи, новости, практики, вайбкодинг и автоматизация фронта ИИ-агентами. Личный блог автора - @just_genych По вопросам рекламы или разработки - @g_abashkin

Завдяки високій частоті оновлень (останні дані отримано 12 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

32 535
Підписники
+2724 години
-177 днів
-12830 день
Залучення підписників
червень '26
червень '26
+73
в 0 каналах
травень '26
+239
в 22 каналах
Get PRO
квітень '26
+300
в 0 каналах
Get PRO
березень '26
+136
в 1 каналах
Get PRO
лютий '26
+156
в 1 каналах
Get PRO
січень '26
+250
в 60 каналах
Get PRO
грудень '25
+319
в 28 каналах
Get PRO
листопад '25
+379
в 69 каналах
Get PRO
жовтень '25
+210
в 32 каналах
Get PRO
вересень '25
+265
в 90 каналах
Get PRO
серпень '25
+111
в 6 каналах
Get PRO
липень '25
+223
в 2 каналах
Get PRO
червень '25
+247
в 9 каналах
Get PRO
травень '25
+255
в 4 каналах
Get PRO
квітень '25
+266
в 1 каналах
Get PRO
березень '25
+285
в 24 каналах
Get PRO
лютий '25
+449
в 27 каналах
Get PRO
січень '25
+380
в 36 каналах
Get PRO
грудень '24
+612
в 53 каналах
Get PRO
листопад '24
+576
в 40 каналах
Get PRO
жовтень '24
+439
в 27 каналах
Get PRO
вересень '24
+470
в 34 каналах
Get PRO
серпень '24
+466
в 24 каналах
Get PRO
липень '24
+458
в 34 каналах
Get PRO
червень '24
+431
в 33 каналах
Get PRO
травень '24
+442
в 30 каналах
Get PRO
квітень '24
+371
в 26 каналах
Get PRO
березень '24
+374
в 13 каналах
Get PRO
лютий '24
+846
в 4 каналах
Get PRO
січень '24
+590
в 22 каналах
Get PRO
грудень '23
+786
в 34 каналах
Get PRO
листопад '23
+431
в 8 каналах
Get PRO
жовтень '23
+522
в 1 каналах
Get PRO
вересень '23
+842
в 0 каналах
Get PRO
серпень '23
+1 001
в 0 каналах
Get PRO
липень '23
+1 476
в 0 каналах
Get PRO
червень '23
+1 096
в 0 каналах
Get PRO
травень '23
+916
в 0 каналах
Get PRO
квітень '23
+908
в 0 каналах
Get PRO
березень '23
+878
в 0 каналах
Get PRO
лютий '23
+584
в 0 каналах
Get PRO
січень '23
+1 454
в 0 каналах
Get PRO
грудень '22
+638
в 0 каналах
Get PRO
листопад '22
+1 656
в 0 каналах
Get PRO
жовтень '22
+536
в 0 каналах
Get PRO
вересень '22
+537
в 0 каналах
Get PRO
серпень '22
+857
в 0 каналах
Get PRO
липень '22
+1 735
в 0 каналах
Get PRO
червень '22
+523
в 0 каналах
Get PRO
травень '22
+218
в 0 каналах
Get PRO
квітень '22
+268
в 0 каналах
Get PRO
березень '22
+186
в 0 каналах
Get PRO
лютий '22
+424
в 0 каналах
Get PRO
січень '22
+734
в 0 каналах
Get PRO
грудень '21
+816
в 0 каналах
Get PRO
листопад '21
+663
в 0 каналах
Get PRO
жовтень '21
+1 410
в 0 каналах
Get PRO
вересень '21
+565
в 0 каналах
Get PRO
серпень '21
+1 525
в 0 каналах
Get PRO
липень '21
+1 531
в 0 каналах
Get PRO
червень '21
+1 533
в 0 каналах
Get PRO
травень '21
+2 084
в 0 каналах
Get PRO
квітень '21
+1 811
в 0 каналах
Get PRO
березень '21
+8 672
в 0 каналах
Get PRO
лютий '21
+1 828
в 0 каналах
Get PRO
січень '21
+1 309
в 0 каналах
Get PRO
грудень '20
+12 495
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
12 червня+7
11 червня+30
10 червня+20
09 червня+6
08 червня+1
07 червня0
06 червня0
05 червня+2
04 червня+3
03 червня+1
02 червня+1
01 червня+2
Дописи каналу
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ сборник курсов, инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой бесплатного о
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ сборник курсов, инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков 🎓 Практические курсы и задания 🪽 Книги и статьи известных авторов 😮‍💨 Полезные инструменты и ресурсы 🌟 IT-новости и инсайды Обучение по всем направлениям: SQL, Python, Frontend, PHP, C++, Golang, GIT, Linux, QA, Java, Vibe-coding, Infosec и др. Ценишь знания, подпишись: Terminal_tg

2
AbortSignal.any() и AbortSignal.timeout(): единая отмена fetch, таймеров и async-операций в production Promise.race([fetch(),
AbortSignal.any() и AbortSignal.timeout(): единая отмена fetch, таймеров и async-операций в production Promise.race([fetch(), timeout]) часто маскирует проблему: ждать перестали, но работа могла не остановиться. В SPA, SSR, Node.js-сервисах, SDK и API clients это приводит к висящим запросам, таймерам и retry/backoff ниже по стеку. Собирайте отмену вокруг AbortSignal AbortSignal.timeout(ms) сам отменится по таймауту. AbortSignal.any([...signals]) отменится, когда отменится любой входной signal. Так в один контракт попадают: * caller отменил операцию * истек timeout * клиент закрыл соединение * сервис уходит в graceful shutdown const shutdown = new AbortController(); async function loadUser(id: string, opts: { signal?: AbortSignal } = {}) { const signal = AbortSignal.any([ AbortSignal.timeout(1500), shutdown.signal, ...(opts.signal ? [opts.signal] : []), ]); signal.throwIfAborted(); const res = await fetch(`https://api.example.com/users/${id}`, { signal }); await sleep(100, signal); // backoff тоже отменяем const data = await res.json(); signal.throwIfAborted(); return data; } Типичная ошибка Не останавливайтесь на fetch. Один и тот же signal стоит передавать в retry, polling, очереди, sleep/timer helpers и свои async-функции. Иначе верхний слой "отменился", а нижний продолжает держать ресурсы. Практические нюансы * AbortSignal одноразовый: если aborted === true, нужен новый controller или timeout * AbortSignal.any() - это fan-in, а не fan-out: он не отменяет исходные контроллеры * смотрите на reason: timeout часто дает TimeoutError, abort - AbortError или ваш reason * при обертках над setTimeout, stream, listener или socket чистите ресурсы при abort Вывод: Отмена должна быть частью контракта async-функции, а не локальным Promise.race на краю системы.
1 400
3
Нейросети, IT и AI — в одной папке 💬 С коллегами собрали новые каналы про: 💠 промпты для нейросетей и готовые решения 💠 AI
Нейросети, IT и AI — в одной папке 💬 С коллегами собрали новые каналы про: 💠 промпты для нейросетей и готовые решения 💠 AI-фотосессии, генерация изображений и контента 💠 новости искусственного интеллекта без лишнего шума 💠 применение AI в работе, бизнесе и повседневной жизни 💠 Python, JavaScript, Data Science и системный анализ 💠 вакансии и возможности для специалистов в IT Посмотреть и подписаться тут 👉 https://t.me/addlist/c_rbhnzprbAwMmFi 💌 Добавить свой канал в папку
1 591
4
Страшная тайна российского айти ✖️ xCode Journal
Страшная тайна российского айти ✖️ xCode Journal
2 230
5
Хватит гадать — DeepSeek за тебя уже всё решил 🐳 * Сейчас все только про Claude, но я перешёл на DeepSeek и не жалею. Беспла
Хватит гадать — DeepSeek за тебя уже всё решил 🐳 * Сейчас все только про Claude, но я перешёл на DeepSeek и не жалею. Бесплатно, контекст 1 млн токенов — закинул целую книгу, помнит всё. Код пишет отлично, а рассуждения (Reasoning) выдают логику, как у архитектора. Решил протестировать агентский режим на задаче, которую вечно откладывал — собрать чистое инфополе с нуля. Чтобы не перебирать паблики вручную, зашёл через функцию похожих каналов в Telegram. Скормил DeepSeek ссылки на качественных авторов по IT и AI, которых читаю сам, и попросил проанализировать сотни рекомендаций. Агент изучил контент на каналах и оставил только тех, кто делится практическим опытом по: AI-воркфлоу, автоматизации, вайб-кодингу, промт-инжинирингу, RAG-syst. нейрогенерации и др. DeepSeek собрал полезную подборку экспертов в одну папку. Делюсь списком — внутри только полезный контент про IT & AI. 🔗Забирай в один клик: 👉 https://t.me/addlist/FYyQj91I8jJiMzg0
2 283
6
Диктовка для Mac вместо клавиатуры Кодишь с Claude/Cursor и устал печатать промпты и сообщения? Зажал горячую клавишу, сказал
Диктовка для Mac вместо клавиатуры Кодишь с Claude/Cursor и устал печатать промпты и сообщения? Зажал горячую клавишу, сказал - текст сам встал туда, где курсор. В любом приложении: редактор, браузер, мессенджер. - отдельная русская модель: распознаёт русский с пунктуацией, тянет смесь рус/англ-терминов - распознавание локально, на твоём маке - голос не уходит в облако, в отличие от облачных сервисов - от 290 ₽/мес - дешевле зарубежных аналогов - оплата картой РФ, без VPN и зарубежных карт macOS, Apple Silicon 🎁 Промокод FNOTES - месяц Pro бесплатно! → www.taptalk.team/
2 316
7
⁣Variadic tuple types — сложные сигнатуры без боли До variadic tuple types многие сложные сигнатуры в TypeScript выглядели как наказание. Особенно: 👉 curry 👉 compose 👉 middleware 👉 typed event emitter 👉 любые функции с «прокинь аргументы дальше» Приходилось писать overload на overload и дублировать типы вручную. Как было раньше Обычно появлялись: 👉 overload на overload 👉 ручные tuple-типы 👉 тонны дублирования Типы быстро превращались в нечитаемую простыню. Что изменили variadic tuples С их появлением стало намного проще работать с остаточными аргументами на уровне типов. Например: type Fn<T extends unknown[]> = (...args: [...T]) => void Или собирать сигнатуры: type Append<Args extends unknown[], Arg> = [...Args, Arg] Типы наконец научились нормально работать с «переменным количеством аргументов». Почему это важно На практике это одна из тех TS-фич, которые реально упростили жизнь библиотекам. Без variadic tuples: 👉 Redux middleware typings 👉 router APIs 👉 compose/curry utilities были бы ещё страшнее. Где начинается тёмная магия Проблемы начинаются, когда variadic tuples комбинируют с: 👉 infer 👉 recursive types 👉 conditional types Типовая система очень быстро превращается в тёмный лес. IDE начинает тормозить, ошибки становятся нечитаемыми, а compile time — расти. Главная мысль Variadic tuple types — это действительно мощная фича. Главное — вовремя остановиться и не превратить типы в отдельный язык программирования.
2 178
8
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в T
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram @jobs_js_fronted для фронтов @jobs_js_back для бека Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
2 171
9
🤣 Не баг, а фича ✖️ xCode Journal
🤣 Не баг, а фича ✖️ xCode Journal
3 820
10
Мой код после сотен правок и костылей
Мой код после сотен правок и костылей
4 501
11
⁣ES2025: Импорт JSON-файлов как модулей Введение С выходом ECMAScript 2025 (ES2025) разработчики получили возможность напрямую импортировать JSON-файлы как модули в JavaScript-коде. Это упрощает работу с конфигурационными данными и другими статическими ресурсами, представленными в формате JSON. Синтаксис импорта JSON-модулей Для импорта JSON-файла используется ключевое слово import с указанием атрибута with { type: 'json' }. Это гарантирует, что импортируемый файл будет обработан как JSON-модуль. Пример использования Рассмотрим пример импорта конфигурационного файла config.json и обращения к его свойствам в коде. import config from './config.json' with { type: 'json' }; .log(config.apiUrl); // Выводит значение свойства apiUrl из config.json console.log(config.timeout); // Выводит значение свойства timeout из config.json ❗️Добавление поддержки импорта JSON-файлов как модулей в ES2025 упрощает работу с данными в формате JSON, делая код более чистым и понятным. Источники JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow. New Features in ES2025 – BooleanBuffer.
5 253
12
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в T
Стажировки и вакансии для JavaScript разработчиков - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram @jobs_js_fronted для фронтов @jobs_js_back для бека Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
1 879
13
⁣Recursive type limits — почему TS иногда «умирает» В TypeScript можно написать тип, который выглядит красиво, но заставляет компилятор страдать. Особенно когда начинаются рекурсивные типы. Например: 👉 глубокий DeepPartial 👉 парсинг строк на уровне типов 👉 сложные conditional types 👉 infer внутри infer На маленьком примере всё работает. В реальном проекте IDE внезапно начинает думать по 5 секунд. Почему так происходит TypeScript не вычисляет типы «бесплатно». Каждый: 👉 conditional type 👉 union 👉 recursive шаг нужно реально посчитать. А если тип разворачивается слишком глубоко, компилятор упирается в лимиты. Отсюда знакомое: Type instantiation is excessively deep and possibly infinite И это не всегда баг TypeScript. Часто это сигнал, что типовая модель стала слишком умной. Где обычно всё ломается Особенно опасны: 👉 рекурсивные mapped types 👉 огромные union’ы 👉 type-level parser’ы 👉 deeply nested generics 👉 utility types поверх utility types Типы начинают взрываться комбинаторно. Что обычно помогает 👉 не делать type-level акробатику без нужды 👉 ограничивать глубину рекурсии 👉 разбивать типы на более простые 👉 добавлять явные промежуточные типы 👉 не тащить сложные generic-типы в публичный API Почему это важно Сложные типы бьют не только по компиляции. Они ухудшают: 👉 autocomplete 👉 responsiveness IDE 👉 читаемость кода 👉 onboarding новых людей Иногда самый дорогой runtime — это compile time. Главная мысль Хороший TypeScript — это не когда типы поражают воображение. Хороший TypeScript — это когда их можно понять через полгода, а IDE при этом не превращается в обогреватель.
3 801
14
Привет, друзья! Собрали с коллегами новую папку с каналами Здесь AI-новости, нейросети, полезные инструменты, примеры внедрен
Привет, друзья! Собрали с коллегами новую папку с каналами Здесь AI-новости, нейросети, полезные инструменты, примеры внедрения ИИ в крупный бизнес, разработка, JS, Node.js, frontend, QA, Data Science, кибербезопасность и IT-вакансии. Посмотреть и подписаться можно тут 👉 https://t.me/addlist/XttiKDt6lhUwMzEy 💌 записаться в папку
1 797
15
⁣Isolated declarations — ускорение больших monorepo В TypeScript есть флаг isolatedDeclarations. Он нужен не для красоты типов, а для скорости. Проблема простая: в больших monorepo генерация .d.ts может становиться узким местом. TypeScript часто должен анализировать соседние файлы, чтобы понять, какие декларации вывести. На маленьком проекте это почти незаметно. На большом — начинает болеть. Что делает isolatedDeclarations isolatedDeclarations заставляет писать код так, чтобы декларации можно было генерировать по файлам независимо. Из-за этого TypeScript чаще требует явные типы. Было: export function getUser() { return { id: 1, name: 'Alex' } } Лучше так: type User = { id: number name: string } export function getUser(): User { return { id: 1, name: 'Alex' } } Меньше магии для компилятора — быстрее и предсказуемее сборка. Почему это важно Когда проект растёт: 👉 TypeScript начинает сильнее зависеть от соседних файлов 👉 инкрементальная сборка замедляется 👉 генерация типов становится дорогой Изоляция помогает компилятору работать параллельно и проще. Где это особенно полезно 👉 большие monorepo 👉 библиотеки 👉 project references 👉 параллельная сборка 👉 CI, где каждая минута стоит денег Главный trade-off Ты немного платишь: 👉 более явными типами 👉 меньшим type inference 👉 дополнительным boilerplate Но взамен получаешь: 👉 более быстрые сборки 👉 стабильный compile pipeline 👉 меньше скрытой сложности Главная мысль Это хороший пример взрослого engineering trade-off: чуть больше явности в коде ради скорости и предсказуемости системы.
2 994
16
⁉️ Устал искать интересные каналы с новостями про искусственный интеллект? 📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ В этой папке соб
⁉️ Устал искать интересные каналы с новостями про искусственный интеллект? 📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ В этой папке собраны каналы про ИИ, которые помогают быстрее разобраться в сфере, находить идеи и экономить время на поиске информации. 😏 ЗАБИРАЙ ПАПКУ ТУТ ⏰ Папка действует 72 часа. 🤩 Организаторы: Green.Papka
2 328
17
🤣 Мем отлично отражает настроения в сообществе прямо сейчас ✖️ xCode Journal
🤣 Мем отлично отражает настроения в сообществе прямо сейчас ✖️ xCode Journal
3 340
18
⁣starting-style — правильные enter animations без JS В CSS появился @starting-style. Он решает старую проблему: анимацию появления элемента, который только что добавили в DOM. Раньше для этого обычно: 👉 делали setTimeout 👉 дёргали классы через JS 👉 ловили reflow-хаки Теперь можно нативно: .modal { opacity: 1; transition: opacity .2s; } @starting-style { .modal { opacity: 0; } } Элемент появляется сразу с анимацией. Без двойного рендера и JS-костылей. Почему это важно Раньше браузер не успевал увидеть начальное состояние элемента. Из-за этого приходилось: 👉 форсить reflow 👉 откладывать изменение класса 👉 городить лишнюю логику Теперь CSS сам понимает: 👉 с какого состояния начинать transition Где особенно полезно 👉 dialog 👉 popover 👉 conditional rendering 👉 enter animations в UI Почему это ощущается приятно Анимации становятся: 👉 чище 👉 предсказуемее 👉 без лишнего JS CSS постепенно забирает себе всё, что раньше приходилось городить через JavaScript.
4 085
19
Приглашаем на Frontend Mix — бесплатный митап ЮMoney для всех, кто интересуется фронтенд-разработкой 🤩 🔔 28 мая, четверг, 1
Приглашаем на Frontend Mix — бесплатный митап ЮMoney для всех, кто интересуется фронтенд-разработкой 🤩 🔔 28 мая, четверг, 19:00 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн. Спикеры из ЮMoney поделятся, как работают над задачами и улучшают процессы в команде. Вот о чём будут рассказывать: 🟣 Как спят вкладки в браузере. На живом примере разберём, как браузер усыпляет вкладки, почему из-за этого ломается real-time и какие приёмы дебага и resync помогают находить и чинить их в продакшене. 🟣 Как построить Spec-Driven платформу для генерации писем. Используя OpenAPI как единый источник правды, покажем, как описывать контракты электронных писем через спецификацию и автоматически генерировать консистентный HTML. 🟣 Подключение модуля шумоподавления в рабочее место оператора. Рассмотрим инструменты React, WebSockets, WebRTC, а также архитектуру и логику работы модуля шумоподавления. 🟣 Круглый стол — AI во фронтенде: вызовы и реальность. Обсудим влияние нейросетей на фронтенд с трёх позиций: рынка, разработки и образования. Чтобы попасть на митап, нужна регистрация. Все подробности — на сайте Frontend Mix 👈
0
20
⁣Promise.withResolvers() — новый способ работы с Promise В JavaScript появился Promise.withResolvers(). Штука маленькая, но код с Promise реально становится чище. Раньше обычно писали так: let resolve let reject const promise = new Promise((res, rej) => { resolve = res reject = rej }) Работает, но выглядит странно. Особенно это: «вынесем resolve наружу» Теперь можно нормально: const { promise, resolve, reject } = Promise.withResolvers() 👉 без лишнего конструктора 👉 без мутаций переменных 👉 без промежуточного boilerplate Где это особенно полезно 👉 очереди 👉 event-based логика 👉 deferred pattern 👉 кастомные async abstractions Почему это приятно Раньше приходилось: 👉 создавать Promise вручную 👉 тащить resolve/reject наружу 👉 писать шаблонный код снова и снова Теперь API делает это нативно. Мелочь, а ощущается как функция, которая давно должна была появиться.
3 990