✨ Команда Angular выпустила официальные скиллы для AI-ассистентов
Теперь они умеют:
🚀 Создавать новые приложения через Angular CLI
🧩 Генерировать компоненты, сервисы и модули
⚡️ Работать с современной реактивностью: signals, linkedSignal, resource
🛠 Давать архитектурные рекомендации по формам, роутингу, SSR, DI, анимациям, Tailwind CSS, тестированию и доступности
👉 https://github.com/angular/skills
Теперь они умеют:
🚀 Создавать новые приложения через Angular CLI
🧩 Генерировать компоненты, сервисы и модули
⚡️ Работать с современной реактивностью: signals, linkedSignal, resource
🛠 Давать архитектурные рекомендации по формам, роутингу, SSR, DI, анимациям, Tailwind CSS, тестированию и доступности
👉 https://github.com/angular/skills
🔥37👍13❤5
✨ Чистые функции в html шаблонах Angular
Начиная с Angular 21.2, в HTML-шаблонах можно использовать чистые JS-функции напрямую, без объявления методов в классе компонента.
Несмотря на удобство, фича остается дискуссионной. Классические подходы диктуют минимизацию логики в шаблонах для улучшения читаемости. Кроме того, остается открытым вопрос производительности.
Чтобы избежать пересоздания функций при каждом цикле change detection, компилятор применяет несколько оптимизаций:
Если стрелочная функция обращается только к своим собственным параметрам, она выносится в константу верхнего уровня и передается по всем местам использования.
Если стрелочная функция обращается к контексту шаблона, она сохраняется во вью и при необходимости читается из него.
👉 https://habr.com/ru/articles/1013922/
Начиная с Angular 21.2, в HTML-шаблонах можно использовать чистые JS-функции напрямую, без объявления методов в классе компонента.
Несмотря на удобство, фича остается дискуссионной. Классические подходы диктуют минимизацию логики в шаблонах для улучшения читаемости. Кроме того, остается открытым вопрос производительности.
Чтобы избежать пересоздания функций при каждом цикле change detection, компилятор применяет несколько оптимизаций:
Если стрелочная функция обращается только к своим собственным параметрам, она выносится в константу верхнего уровня и передается по всем местам использования.
Если стрелочная функция обращается к контексту шаблона, она сохраняется во вью и при необходимости читается из него.
👉 https://habr.com/ru/articles/1013922/
👎22🤔4👍3❤1
✨ 10 Web-API, заменяющих многие библиотеки JavaScript
Браузеры активно обрастают функционалом, делая многие привычные npm-зависимости неактуальными. Разработчики часто по инерции продолжают тянуть в проекты сторонние библиотеки, хотя нативные API уже отлично справляются с теми же задачами из коробки.
Отказ от лишних пакетов в пользу встроенных решений дает 0 КБ дополнительного веса в бандле.
👉 https://habr.com/ru/articles/1015134/
Браузеры активно обрастают функционалом, делая многие привычные npm-зависимости неактуальными. Разработчики часто по инерции продолжают тянуть в проекты сторонние библиотеки, хотя нативные API уже отлично справляются с теми же задачами из коробки.
Отказ от лишних пакетов в пользу встроенных решений дает 0 КБ дополнительного веса в бандле.
👉 https://habr.com/ru/articles/1015134/
👍13🤡6
✨ Higher-Kinded Types в TypeScript
TypeScript предлагает крайне мощную систему типов, но одной ключевой возможности в ней до сих пор нет, нативной поддержки типов высшего рода (Higher-Kinded Types, HKT).
Эта концепция, знакомая по Haskell и Scala, дает возможность абстрагироваться не только над значениями типов, но и над самими конструкторами типов (Array<T>, Set<T>, Promise<T> и т.д.).
На практике отсутствие HKT проявляется, когда мы хотим описать универсальный интерфейс, например, функцию map, которая работала бы с любыми контейнерами данных.
👉 https://habr.com/ru/articles/1015632/
TypeScript предлагает крайне мощную систему типов, но одной ключевой возможности в ней до сих пор нет, нативной поддержки типов высшего рода (Higher-Kinded Types, HKT).
Эта концепция, знакомая по Haskell и Scala, дает возможность абстрагироваться не только над значениями типов, но и над самими конструкторами типов (Array<T>, Set<T>, Promise<T> и т.д.).
На практике отсутствие HKT проявляется, когда мы хотим описать универсальный интерфейс, например, функцию map, которая работала бы с любыми контейнерами данных.
👉 https://habr.com/ru/articles/1015632/
👍5❤1🔥1
✨ DOOM на CSS
Недавно в сети появился проект с рендеринг DOOM полностью на CSS. Каждая стена, пол, бочка и монстр это <div>, спозиционированный в 3D-пространстве через CSS-трансформации.
Данные карты (вершины, линии, секторы) извлекаются из оригинального WAD-файла и передаются через CSS-переменные, а геометрия стен рассчитывается прямо в CSS. Проект наглядно показывает, насколько мощным стал современный CSS.
👉 https://nielsleenheer.com/articles/2026/css-is-doomed-rendering-doom-in-3d-with-css/
Недавно в сети появился проект с рендеринг DOOM полностью на CSS. Каждая стена, пол, бочка и монстр это <div>, спозиционированный в 3D-пространстве через CSS-трансформации.
Данные карты (вершины, линии, секторы) извлекаются из оригинального WAD-файла и передаются через CSS-переменные, а геометрия стен рассчитывается прямо в CSS. Проект наглядно показывает, насколько мощным стал современный CSS.
👉 https://nielsleenheer.com/articles/2026/css-is-doomed-rendering-doom-in-3d-with-css/
🤯14🔥4👍3❤1
🚨 Axios взломан
Сегодня был скомпрометирован npm-аккаунт ведущего мейнтейнера и вручную опубликованы релизы axios@1.14.1 и axios@0.30.4.
Вредоносный код не был внедрен в сам axios. Вместо этого в package.json обеих версий была добавлена фиктивная зависимость plain-crypto-js@4.2.1, пакет, который нигде не импортируется в исходниках. Его единственная цель, выполнить postinstall-хук и скачать троян.
Это отличный повод наконец перейти на нативные решения.
Источник: новость первым принес канал @igor_katsuba. Спасибо за оперативность.
👉 https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
Сегодня был скомпрометирован npm-аккаунт ведущего мейнтейнера и вручную опубликованы релизы axios@1.14.1 и axios@0.30.4.
Вредоносный код не был внедрен в сам axios. Вместо этого в package.json обеих версий была добавлена фиктивная зависимость plain-crypto-js@4.2.1, пакет, который нигде не импортируется в исходниках. Его единственная цель, выполнить postinstall-хук и скачать троян.
Это отличный повод наконец перейти на нативные решения.
Источник: новость первым принес канал @igor_katsuba. Спасибо за оперативность.
👉 https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
🤯22👍5❤2
✨ Google продал Angular Павлу Дурову
Сегодня ночью произошла самая неожиданная сделка в мире фронтенда. Google отказывается от поддержки Angular, передавая репозиторий и всю инфраструктуру разработчикам Telegram.
Что ждет фреймворк в ближайших релизах:
📦 Отказ от NPM. Из-за множественных уязвимостей в npm Angular теперь ставится только через официального бота.
💎 Angular Premium. В бесплатной версии ng serve ограничивает сборку до 10 компонентов и показывает рекламу каналов в консоли.
🤖 Новый ng new. Каждый новый проект по умолчанию создается как Mini App с TON-кошельком и авторизацией через Telegram Login.
⭐️ Новый ng build. Чтобы ускорить сборку, купите Angular Stars или пригласите 5 друзей-джуниоров по реферальной ссылке.
🎥 Новый формат логов. Все ошибки теперь приходят видеокружочками.
🔄 За Change Detection отвечают смарт-контракты. Компонент перерисовывается только после того, как валидаторы сети TON подтвердят изменение стейта.
👉 https://angular.dev/telegram
Сегодня ночью произошла самая неожиданная сделка в мире фронтенда. Google отказывается от поддержки Angular, передавая репозиторий и всю инфраструктуру разработчикам Telegram.
Что ждет фреймворк в ближайших релизах:
📦 Отказ от NPM. Из-за множественных уязвимостей в npm Angular теперь ставится только через официального бота.
💎 Angular Premium. В бесплатной версии ng serve ограничивает сборку до 10 компонентов и показывает рекламу каналов в консоли.
🤖 Новый ng new. Каждый новый проект по умолчанию создается как Mini App с TON-кошельком и авторизацией через Telegram Login.
⭐️ Новый ng build. Чтобы ускорить сборку, купите Angular Stars или пригласите 5 друзей-джуниоров по реферальной ссылке.
🎥 Новый формат логов. Все ошибки теперь приходят видеокружочками.
🔄 За Change Detection отвечают смарт-контракты. Компонент перерисовывается только после того, как валидаторы сети TON подтвердят изменение стейта.
👉 https://angular.dev/telegram
😁167🤡92🤣16💩5🔥4👎3🥱3🥰2
✨ Signality
Signality предлагает обширный набор утилит, готовых к SSR и созданных для удобной композиции.
Библиотека вдохновлена VueUse, популярным набором утилит для Vue и следует той же философии компонуемых, реактивных решений, адаптированных под систему сигналов Angular.
Несмотря на то что первый релиз вышел под версией 0.1, количество уже реализованных функций впечатляет.
👉 https://signality.dev
Signality предлагает обширный набор утилит, готовых к SSR и созданных для удобной композиции.
Библиотека вдохновлена VueUse, популярным набором утилит для Vue и следует той же философии компонуемых, реактивных решений, адаптированных под систему сигналов Angular.
Несмотря на то что первый релиз вышел под версией 0.1, количество уже реализованных функций впечатляет.
👉 https://signality.dev
👍16🤔5💩2🔥1
🎉 Taiga UI 5 уже здесь!
Команда Taiga UI выпустила мажорный релиз.
🆕 Что нового
Timeline - новый компонент временной шкалы для размещения событий на линейной оси.
Carousel - полностью переработан.
Expand, Accordion, InputPhoneInternational - вышли из статуса экспериментальных и теперь готовы к продакшену.
💎 Главные фишки релиза
Полная миграция на Signals: токены, пайпы и инпуты компонентов.
RTL-поддержка для Avatar, Switch, Pin, ThumbnailCard.
Иконки позволяют менять толщину линий и масштабируются со шрифтом.
addon-doc: новый дизайн, оглавление, отложенная подсветка синтаксиса.
addon-table: новый pipe tuiSorter.
Инфраструктура порталов переписана.
Поддержка BigInt.
⚙️ Требования
Убедитесь, что в вашем проекте есть: Angular 19+, Maskito v5+,
🔄 Как мигрировать
Полный список изменений в CHANGELOG.
👉 https://medium.com/p/fef85dde3fc7
Команда Taiga UI выпустила мажорный релиз.
🆕 Что нового
Timeline - новый компонент временной шкалы для размещения событий на линейной оси.
Carousel - полностью переработан.
Expand, Accordion, InputPhoneInternational - вышли из статуса экспериментальных и теперь готовы к продакшену.
💎 Главные фишки релиза
Полная миграция на Signals: токены, пайпы и инпуты компонентов.
RTL-поддержка для Avatar, Switch, Pin, ThumbnailCard.
Иконки позволяют менять толщину линий и масштабируются со шрифтом.
addon-doc: новый дизайн, оглавление, отложенная подсветка синтаксиса.
addon-table: новый pipe tuiSorter.
Инфраструктура порталов переписана.
Поддержка BigInt.
⚙️ Требования
Убедитесь, что в вашем проекте есть: Angular 19+, Maskito v5+,
@angular/animations больше не нужен, все анимации переписаны на CSS и Web Animations API.🔄 Как мигрировать
ng update @taiga-ui/cdk
Полный список изменений в CHANGELOG.
👉 https://medium.com/p/fef85dde3fc7
🔥44🤨5❤4👍3👎1
✨ Как работают Signals
Хотя концепция сигналов кажется простой, мало кто может уверенно объяснить внутренний механизм.
Статья подробно разбирает, с иллюстрациями, push-pull алгоритм и основу мелкозернистой реактивности, которая автоматически распространяет изменения по графу зависимостей.
👉 https://willybrauner.com/journal/signal-the-push-pull-based-algorithm
Хотя концепция сигналов кажется простой, мало кто может уверенно объяснить внутренний механизм.
Статья подробно разбирает, с иллюстрациями, push-pull алгоритм и основу мелкозернистой реактивности, которая автоматически распространяет изменения по графу зависимостей.
👉 https://willybrauner.com/journal/signal-the-push-pull-based-algorithm
🔥18👍6
✨ ngxtension
Постоянно пишите одни и те же хелперы в новых проектах? Проект ngxtension собирает всю полезную рутину в одном месте.
Библиотека закрывает пробелы Angular. Как только фича появляется в самом фреймворке, из ngxtension ее аккуратно выпиливают.
Несмотря на то что ngxtension поставляется как единый пакет (чтобы его было удобно устанавливать), пайплайн сборки Angular корректно обрабатывает code-splitting и tree-shaking для всех точек входа, которые входят в состав ngxtension.
👉 https://ngxtension.dev/
Постоянно пишите одни и те же хелперы в новых проектах? Проект ngxtension собирает всю полезную рутину в одном месте.
Библиотека закрывает пробелы Angular. Как только фича появляется в самом фреймворке, из ngxtension ее аккуратно выпиливают.
Несмотря на то что ngxtension поставляется как единый пакет (чтобы его было удобно устанавливать), пайплайн сборки Angular корректно обрабатывает code-splitting и tree-shaking для всех точек входа, которые входят в состав ngxtension.
👉 https://ngxtension.dev/
❤10👍1
✨ TypeScript врёт
Многие разработчики считают, что раз они описали интерфейс и TypeScript не ругается, все в порядке. Но TypeScript существует только на этапе компиляции. В рантайме его нет.
Когда с сервера прилетает реальный ответ, никакой проверки типов не происходит, компилятор просто верит вашей аннотации. Узнаете об этом обычно из Sentry или от пользователей.
Решение: библиотеки для рантайм-валидации.
👉 https://habr.com/ru/articles/1020268/
Многие разработчики считают, что раз они описали интерфейс и TypeScript не ругается, все в порядке. Но TypeScript существует только на этапе компиляции. В рантайме его нет.
Когда с сервера прилетает реальный ответ, никакой проверки типов не происходит, компилятор просто верит вашей аннотации. Узнаете об этом обычно из Sentry или от пользователей.
Решение: библиотеки для рантайм-валидации.
👉 https://habr.com/ru/articles/1020268/
💩30👍5😴1
✨ Утечки памяти во фронтенде
Исследование показало, что 86 % открытых фронтенд-проектов содержат хотя бы один случай отсутствующей очистки ресурсов. Проблемы найдены в 430 из 500 репозиториев.
Среди 55 864 находок лидируют: setTimeout/setInterval без clearTimeout/clearInterval (43,9%), addEventListener без removeEventListener (19%), .subscribe() без .unsubscribe() или takeUntil (13,9%), useEffect без возврата cleanup-функции, requestAnimationFrame без cancelAnimationFrame и т.д.
👉 https://stackinsight.dev/blog/memory-leak-empirical-study/
Исследование показало, что 86 % открытых фронтенд-проектов содержат хотя бы один случай отсутствующей очистки ресурсов. Проблемы найдены в 430 из 500 репозиториев.
Среди 55 864 находок лидируют: setTimeout/setInterval без clearTimeout/clearInterval (43,9%), addEventListener без removeEventListener (19%), .subscribe() без .unsubscribe() или takeUntil (13,9%), useEffect без возврата cleanup-функции, requestAnimationFrame без cancelAnimationFrame и т.д.
👉 https://stackinsight.dev/blog/memory-leak-empirical-study/
🤯11👎5❤1
⏪ Назад в прошлое
Если вы когда-нибудь скучали по скрипу 56k-модема.
Opera запустили Web Rewind, интерактивный цифровой архив, посвященный самым знаковым моментам истории интернета: от визга модема при подключении до наших дней.
👉 https://web-rewind.com/
Если вы когда-нибудь скучали по скрипу 56k-модема.
Opera запустили Web Rewind, интерактивный цифровой архив, посвященный самым знаковым моментам истории интернета: от визга модема при подключении до наших дней.
👉 https://web-rewind.com/
🔥9❤5👍1🙏1
✨ Основные элементы экосистемы JavaScript
В 2026 году экосистема JavaScript делает ставку на нативную производительность и отказ от лишних зависимостей.
Новые стандарты внедряют фичи, которые раньше требовали сторонних библиотек, главные рантаймы научились запускать TypeScript из коробки, а базовый тулинг массово переписывается на низкоуровневых языках вроде Rust и Go для кратного ускорения работы.
👉 https://habr.com/ru/articles/1021182/
В 2026 году экосистема JavaScript делает ставку на нативную производительность и отказ от лишних зависимостей.
Новые стандарты внедряют фичи, которые раньше требовали сторонних библиотек, главные рантаймы научились запускать TypeScript из коробки, а базовый тулинг массово переписывается на низкоуровневых языках вроде Rust и Go для кратного ускорения работы.
👉 https://habr.com/ru/articles/1021182/
👍10🔥4
✨ Oxc Angular Compiler
VoidZero представила экспериментальный компилятор Oxc Angular Compiler, написанный на Rust с использованием ИИ-агентов. Он компилирует Angular-приложения до 20x быстрее по сравнению с текущими решениями.
Прирост производительности достигнут за счет изменения подхода к анализу кода. Стандартный компилятор Angular генерирует из HTML-шаблонов TypeScript-код, а затем использует TypeScript Compiler для глубокого семантического анализа и проверки типов. Oxc Angular Compiler выполняет трансформацию шаблонов нативно на Rust, снижая зависимость от семантического чекера TypeScript.
Важно: Компилятор создан в исследовательских целях. Проект не будет поддерживаться, и не предназначен для использования в продакшене. Воспринимайте его как прототип для проверки гипотезы.
👉 https://voidzero.dev/posts/oxc-angular-compiler
VoidZero представила экспериментальный компилятор Oxc Angular Compiler, написанный на Rust с использованием ИИ-агентов. Он компилирует Angular-приложения до 20x быстрее по сравнению с текущими решениями.
Прирост производительности достигнут за счет изменения подхода к анализу кода. Стандартный компилятор Angular генерирует из HTML-шаблонов TypeScript-код, а затем использует TypeScript Compiler для глубокого семантического анализа и проверки типов. Oxc Angular Compiler выполняет трансформацию шаблонов нативно на Rust, снижая зависимость от семантического чекера TypeScript.
Важно: Компилятор создан в исследовательских целях. Проект не будет поддерживаться, и не предназначен для использования в продакшене. Воспринимайте его как прототип для проверки гипотезы.
👉 https://voidzero.dev/posts/oxc-angular-compiler
🔥14🤡8🤔3🥰2⚡1❤1👏1😁1🙏1
✨ Новый
В Angular появится более удобная альтернатива
Ключевые отличия:
По умолчанию использует providedIn: 'root'. Если вы хотите регистрировать сервис вручную, установите autoProvided: false.
Не поддерживает инжекцию через конструктор, только через функцию inject.
Не поддерживает сложную сигнатуру
👉 https://github.com/angular/angular/pull/68195
@Service декоратор В Angular появится более удобная альтернатива
@Injectable. Причина добавления нового декоратора в том, что @Injectable существует с самого начала Angular и несет в себе много багажа, создающего лишние сложности для разработчиков, которым, как правило, нужно просто объявить синглтон-сервис, доступный во всем приложении. Ключевые отличия:
По умолчанию использует providedIn: 'root'. Если вы хотите регистрировать сервис вручную, установите autoProvided: false.
Не поддерживает инжекцию через конструктор, только через функцию inject.
Не поддерживает сложную сигнатуру
@Injectable (useClass, useValue и т.д.). Вместо этого поддерживается единственная функция factory.👉 https://github.com/angular/angular/pull/68195
🔥29👍11👎6❤2💩2😇2✍1
✨ Формы в Angular
Знаем, знаем, вы уже успели соскучиться по очередной статье про формы. Тема не новая, обсуждений хватает, и большинство из вас уже в курсе, куда движется Angular, так что без предисловий.
Молчанов Егор сравнил подходы Reactive Forms и Signal Forms на конкретных примерах: от базовой формы с валидацией до динамических списков и асинхронных проверок.
👉 https://habr.com/ru/companies/domclick/articles/1018180/
Знаем, знаем, вы уже успели соскучиться по очередной статье про формы. Тема не новая, обсуждений хватает, и большинство из вас уже в курсе, куда движется Angular, так что без предисловий.
Молчанов Егор сравнил подходы Reactive Forms и Signal Forms на конкретных примерах: от базовой формы с валидацией до динамических списков и асинхронных проверок.
👉 https://habr.com/ru/companies/domclick/articles/1018180/
👍13🥱5💯1
🚨 Уязвимость SSRF в Angular Platform-Server
Обнаружена серьезная уязвимость Server-Side Request Forgery в
Как работает атака?
Злоумышленник отправляет запрос вида:
Сервер передаёт строку в Angular SSR, парсер нормализует обратный слэш в прямой и приложение начинает считать
👉 https://github.com/angular/angular/security/advisories/GHSA-45q2-gjvg-7973
Обнаружена серьезная уязвимость Server-Side Request Forgery в
@angular/platform-server, связанная с некорректной обработкой URL при SSR.Как работает атака?
Злоумышленник отправляет запрос вида:
GET /\evil.com/ HTTP/1.1
Сервер передаёт строку в Angular SSR, парсер нормализует обратный слэш в прямой и приложение начинает считать
evil.com своим текущим origin. В результате все относительные запросы через HttpClient и обращения к PlatformLocation.hostname уходят на сервер атакующего.👉 https://github.com/angular/angular/security/advisories/GHSA-45q2-gjvg-7973
🤯17😁11👍2👏1🤬1💯1🤣1
✨ Как находить XSS
Учитывая, что число выявляемых уязвимостей продолжает расти, понимание методов их обнаружения становится обязательным навыком.
XSS (Cross-Site Scripting) — одна из самых распространенных проблем веб-приложений, позволяющая выполнять произвольный JavaScript в браузере.
Статья обобщает реальные практики поиска таких дыр: от классических способов до неочевидных сценариев, которые могут привести к утечкам данных.
👉 https://www.hackerone.com/blog/how-find-xss-techniques-security-researchers-use-real-environments
Учитывая, что число выявляемых уязвимостей продолжает расти, понимание методов их обнаружения становится обязательным навыком.
XSS (Cross-Site Scripting) — одна из самых распространенных проблем веб-приложений, позволяющая выполнять произвольный JavaScript в браузере.
Статья обобщает реальные практики поиска таких дыр: от классических способов до неочевидных сценариев, которые могут привести к утечкам данных.
👉 https://www.hackerone.com/blog/how-find-xss-techniques-security-researchers-use-real-environments
👍7👏1
✨ Как превращать дизайнерские требования в архитектуру UI-компонента
При проектировании UI-кита или компонентов дизайн-системы часто возникает разница подходов. Дизайнеры описывают поведение элементов через призму пользовательского опыта, в то время как фронтендерам необходимо строгое разделение ответственности между компонентом и бизнес-логикой.
Даниил Замешаев разобрал подход, который помогает переводить требования от дизайнеров в чистую, масштабируемую архитектуру компонентов.
👉 https://habr.com/ru/companies/moysklad/articles/1020848/
При проектировании UI-кита или компонентов дизайн-системы часто возникает разница подходов. Дизайнеры описывают поведение элементов через призму пользовательского опыта, в то время как фронтендерам необходимо строгое разделение ответственности между компонентом и бизнес-логикой.
Даниил Замешаев разобрал подход, который помогает переводить требования от дизайнеров в чистую, масштабируемую архитектуру компонентов.
👉 https://habr.com/ru/companies/moysklad/articles/1020848/
👍9❤2