Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
21.4K subscribers
3.39K photos
272 videos
72 files
5.65K links
Все самое полезное для фронтенда в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/77178ed4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
🎯 Interest Invoker API — тултипы без единой строчки JS

Раньше, чтобы показать поповер по ховеру, нужен был JavaScript. Теперь — достаточно HTML.

➡️ Как работает:

interesttarget связывает элемент-триггер и поповер. Браузер сам обрабатывает hover, focus или long-press и показывает подсказку.

Можно совмещать с Popover API и Anchor Positioning для точного позиционирования.

⚠️ Поддержка:

Пока экспериментальная — работает в Chromium-браузерах (Chrome 135+, Edge 135+). В Firefox и Safari API ещё не реализован, поэтому стоит использовать фолбэк или JS-вариант для совместимости.

🐸 Библиотека фронтендера

#readme #html
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰73👍3
🧠 Три бага: LLM против ручного анализа

Разбираем кейс:
может ли LLM полноценно дебажить сложные проблемы в связке React + Next.js + TanStack Query + Zod?

🔴 Где AI действительно силён

Типовые проблемы:

• ошибки валидации Zod
• забытые null-check’и
• очевидные runtime-ошибки
• несовпадение типов

В этих кейсах AI часто:

Быстро находит причину
Предлагает рабочий фикс

⚠️ Но не всегда учитывает контекст продукта

🔴 Где начинаются проблемы

Когда баг связан с:

• Suspense и границами загрузки
• RSC payload и SPA-навигацией
• redirect в App Router
• Server Actions
• кэшированием и hydration


AI начинает:

предлагать противоречивые root cause
«уверенно галлюцинировать»
чинить симптом, а не архитектуру
создавать новый баг вместо старого

Особенно это видно в сложных сценариях Next.js App Router, где поведение зависит от того, сервер это, клиент, переход по Link или refresh.

🔴 Главный вывод

AI — отличный инструмент первого уровня:


«Вот лог, вот ошибка, почини»


Но если проблема требует понимания:

• как работает фреймворк под капотом
• как данные проходят через сервер и клиент
• какие UX-последствия создаёт решение


— здесь без человеческой модели системы не обойтись.

🧩 Реальность 2026 года

Навык больше не в том, чтобы «писать хорошие промпты». Навык — понимать, когда:

• AI действительно помогает
• AI надо остановить
• и пора включать собственное мышление


AI ускоряет. Но ответственность за root cause остаётся на разработчике.

🐸 Библиотека фронтендера

#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🌚1
🖥 Вышла бета TypeScript 6.0 от Microsoft

Это переходная версия перед крупным релизом 7.0, который будет основан на новом компиляторе на Go с поддержкой многопоточности. По сути, 6.0 — последний мажорный релиз на текущей JavaScript-кодовой базе и мост к новой архитектуре.

Что добавили:

🈂️ Типы для Temporal — новой модели работы с датами и временем

🈂️ Upsert-методы для Map и WeakMap: getOrInsert, getOrInsertComputed

🈂️ RegExp.escape — безопасная экранизация строк для регулярных выражений

🈂️ Поддержка es2025 в target и lib

🈂️ В dom теперь по умолчанию включены iterable и async iterable

Важные изменения по умолчанию:

• strict теперь включён
• module → esnext
• target → актуальная версия ECMAScript (сейчас es2025)
• types по умолчанию пустой массив — больше контроля и быстрее сборка
• Убраны и помечены deprecated устаревшие опции (es5, amd, classic, baseUrl и др.)


Установить бета-версию:

npm install -D typescript@beta


Если планируете переход на 7.0 — лучше протестировать проект уже сейчас: 6.0 помогает заранее убрать несовместимости и снизить шум при миграции.

🔗 Источник

🐸 Библиотека фронтендера

#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2
⚡️ 5 приёмов работы с объектами, которые снижают количество багов

Во фронтенде данные чаще всего представлены объектами. Проблемы возникают из-за мутаций, отсутствующих свойств и некорректного копирования.

Ниже — практики, которые помогают держать состояние под контролем.

🔴 Деструктуризация с дефолтами

Значение по умолчанию применяется только если свойство === undefined.


const { theme = "light", user = {} } = settings ?? {};


Защищает от падений
Убирает лишние проверки
Делает код предсказуемым

🔴 Optional chaining ?. + Nullish coalescing ??


const city = user?.profile?.address?.city ?? "Не указан»;


— ?. возвращает undefined, если часть цепочки отсутствует
— ?? подставляет значение только для null или undefined
— В отличие от ||, не ломает 0, false, ""

Без defensive-кода
Без неожиданных fallback’ов

🔴 Иммутабельное обновление через spread (shallow copy)


const updatedUser = {
...user,
settings: {
...user.settings,
darkMode: true
}
};


Spread создаёт поверхностную копию (вложенные объекты — по ссылке).

React корректно увидит изменения
Нет скрытых мутаций
Предсказуемый state

🔴 Удаление поля через rest (без мутации)


const { password, ...safeUser } = user;


Создаётся новый объект без password. Исходный объект не изменяется.

Без побочных эффектов
Удобно перед отправкой данных

🔴 structuredClone — глубокая копия по стандартному алгоритму


const copy = structuredClone(state);


— Делает глубокую копию
— Работает с Date, Map, Set и другими поддерживаемыми типами
— Основан на стандартном structured clone algorithm

Без JSON-костылей
Без ручной рекурсии

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Матовое стекло 2.0: правильный backdrop-filter

Размытие через filter: blur() — это про сам элемент. Если нужно размывать фон за ним — используйте backdrop-filter.

🔴 В статье разбирается:

— В чём разница между filter и backdrop-filter
— Почему стандартный blur выглядит «плоско»
— Как расширить зону размытия через mask-image
— Как избежать проблем с кликами, мерцанием и поддержкой браузеров


В конце — готовый код и интерактивная песочница. Если вы делаете glass-эффект в интерфейсах — этот материал поможет довести его до действительно аккуратного уровня.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🥰2
Агенты, которые управляют браузером? Да.

Frontend-разработка встречает AI. В новом курсе «Разработка AI-агентов» появился мощный модуль по Browser Use. Агенты теперь могут взаимодействовать с веб-интерфейсами так же, как пользователи.

Что внутри для фронтендера?

🔹 Browser Control. Управление браузером, визуальные подтверждения, работа с DOM через AI.

🔹 Взаимодействие. Как строить интерфейсы для Human-in-the-loop (человек в контуре принятия решений).

🔹 Архитектура. Как AI-бэкенд общается с клиентом: стриминг токенов, состояние, обработка ошибок.

🔹 Advanced RAG. Создание умного поиска по документации и базам знаний.

Стартуй сейчас!
Покупаешь курс — сразу получаешь доступ к материалам.

🎟 Промокод Agent — скидка 10 000 ₽ (до 28 февраля).

👉 Создавать умные интерфейсы
👍4🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 SQL на котиках

JOIN — это способ соединить данные из разных таблиц по общему полю.

В видео разбирают:

— разницу между INNER и LEFT JOIN
— почему строки могут «пропадать»
— как формируется итоговый результат


Подойдёт новичкам, тем, кто путается в JOIN, и всем, кто хочет перестать писать запросы вслепую.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#read_watch #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2🥰2
⚡️ Техника, которая спасает от половины UI-багов

Discriminated Union — это самый практичный инструмент в TypeScript, который многие недооценивают.

Суть:

Вы описываете состояние через общий дискриминатор (обычно status или type), и TypeScript гарантирует, что вы обработаете все варианты.


🔥 Почему это must-have

🔵 Безопасный switch

Если вы добавите новое состояние:


| { status: 'refreshing' }


TypeScript сразу подсветит ошибку — вы забыли обработать кейс. Без Discriminated Union это всплывёт только в продакшене.

🔵 Невозможно обратиться к несуществующему полю


state.data // ошибка, если status !== 'success’


Тип автоматически сужается внутри каждого case. Никаких undefined и падений в рантайме.

🔵 Убирает «магические boolean»

Плохой вариант:


{
isLoading: boolean;
isError: boolean;
data?: string;
}


Можно получить одновременно:
• isLoading = true
• isError = true

Нелогичное состояние, но типы это пропустят. Discriminated Union делает такие состояния невозможными.

📎 Где применять обязательно:

Если вы работаете с:

• React state
• API-запросами
• Redux / Zustand
• finite state machine
• сложными UI-формами


— это не «опциональная техника», это базовая архитектура состояния.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#hotfix #ts
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍3🥰2
🚨 Sentry React Native 8.0 — серьёзный апдейт

Теперь можно инициализировать Sentry на нативном уровне до загрузки JS.

— Ловит краши при старте приложения
— Закрывает «слепую зону» до Sentry.init()

⚠️ Breaking

Минималки выросли:

— iOS 15+
— AGP 7.4+
— Kotlin 1.8+


Если поддерживаете старые iOS — обновление может быть болезненным. Обновляться стоит, если критичны краши на cold start. Иначе — сначала проверить совместимость билд-пайплайна.

Вы уже на 8.x

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰2🔥1
🔥 Топ-вакансий недели для фронтендеров

Middle frontend-разработчик — 150 000 - 200 000 ₽, удаленно, Санкт-Петербург

Middle Frontend — ~ от 274 700 ₽, удаленно

Junior+ Frontend (React) Developer — 120 000 - 150 000 ₽, гибрид, Москва

➡️ Больше офферов в канале: @jsdevjob

🐸 Библиотека фронтендера
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
😳 Из разряда:

у меня localhost не открывается на проде


📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#pixel_pause
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🥰2🌚1
👩‍💻 npmx — быстрый браузер npm-пакетов

Альтернативный интерфейс для просмотра пакетов из npm registry. Работает быстрее стандартной страницы и показывает ключевые данные без лишнего шума.

❇️ Что видно сразу:

— Версии и частота обновлений
— Размер пакета
— Количество и состав зависимостей
— Формат модулей (ESM / CJS)
— Лицензия


❇️ Удобно сравнивать пакеты между собой по:

— размеру
— транзитивным зависимостям
— лицензии
— формату сборки

Полезно при выборе библиотеки в продакшен, чтобы не тащить лишний вес и риски.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰52🔥1
🤔 Вопрос с собеседования на Junior Frontend

Что такое reconciliation в React? Почему при изменении состояния не перерисовывается весь DOM?

👇 Правильный ответ (нажми, чтобы прочитать):

Reconciliation — это процесс, в ходе которого React сравнивает новое дерево элементов с предыдущим и определяет, какие изменения действительно нужно внести в DOM.

➡️ При обновлении состояния:

1) React вызывает компонент заново и создаёт новое дерево элементов (Virtual DOM)
2) Сравнивает его с предыдущим деревом
3) Вычисляет минимальный набор изменений
4) Обновляет только изменённые узлы в реальном DOM

Поэтому весь DOM не перерисовывается.

➡️ React использует эвристики:

— Элементы одного типа считаются «одними и теми же»
— key помогает корректно сопоставлять элементы в списках
— Компоненты сохраняют состояние, если остаются на той же позиции в дереве

Важно:

Re-render ≠ обновление всего DOM. Перерендер — это пересчёт UI, а не полная перерисовка страницы.

📌 Это основа производительности React и причина, почему мутация state напрямую ломает предсказуемость обновлений.

👍 — знал/а
🔥 — стало понятнее

💼 Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут

🐸 Библиотека фронтендера

#career_merge #junior
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥10🥰3😁1🥱1
👩‍💻 Что ждать от Angular 22

Angular продолжает курс на signals-first, отказ от Zone.js и более предсказуемую производительность.

Ключевые изменения:

🟣 Signal-based Forms

Формы на основе signals выходят на зрелый уровень:

— более точечные обновления
— меньше зависимости от RxJS в локальном состоянии
— лучше работает с zoneless-архитектурой



🟣 Selectorless Components

Компоненты без строковых селекторов — импорт прямо в шаблон. Плюсы: проще рефакторинг, меньше магии, лучше типизация.


🟣 OnPush по умолчанию

ChangeDetectionStrategy.OnPush может стать дефолтом для новых компонентов. Меньше случайных перерендеров, более явная реактивность.


🟣 DX и туллинг

— стабильнее HMR
— улучшения Angular Language Service
— DevTools лучше понимают signals


🟣 Тестирование и CI

Фокус на современные раннеры и интеграцию с актуальным JS-инструментарием без ломки старых проектов.


🟣 AI-интеграции

CLI и инструменты становятся удобнее для работы с AI-ассистентами. Не магия в рантайме, а помощь в разработке.


📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#angular #release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21❤‍🔥1🥰1
UI для ИИ: как агенты взаимодействуют с браузером и интерфейсами

В 2026 году ИИ-агенты вышли за пределы текстовых чатов. Теперь они сами ходят по сайтам, кликают по кнопкам и взаимодействуют с legacy-системами.

Мы пересобрали курс по AI-агентам, добавив отдельный модуль про управление браузером, визуальные подтверждения и контроль доменов. Учим создавать системы, которые видят интерфейсы и работают с ними стабильно.

Что ждёт на новом потоке:

— визуальные агенты: управление браузером и клики по старым интерфейсам;
— продвинутый LangGraph: интеграция человека в интерфейс (human-in-the-loop) для аппрува действий;
— стабильность пайплайнов: восстановление состояний, time-travel при ошибках;
— RAG высокого уровня: парсинг сканов, таблиц и разнородных документов;
— экономика: кэширование запросов к LLM и динамический роутинг на фронте и бэке.

Промокод Agent даёт скидку 10 000 рублей до 28 февраля.

Забирайте два дополнительных курса в подарок, активировав акцию «3 курса по цене 1».

Погрузиться в разработку AI-агентов
🥰4🥱1
🎬 Exit-анимации в React могут ломаться не там, где вы ждёте

Иногда компонент красиво уходит со сцены… и в этот же момент внутри него обновляется контент. Это создаёт визуальный шум и ощущение «глюка», хотя React работает корректно.

🔢 В карточках разберём, почему так происходит и как можно аккуратно «заморозить» DOM во время exit-анимации с помощью Suspense.

🔗 Источник

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#under_hood #react
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62👍1🥱1