NG Stream
248 subscribers
85 photos
4 videos
2 files
465 links
Авторский канал об Angular и новостях фронтенда. Мы рассказываем о том, с чем сталкиваемся в процессе разработки, делимся полезными, на наш взгляд, статьями.

Made by devs for 🅰️ devs

Авторы:
- @antoonG
- @basters

Чат: https://t.me/+JYGeE7HekO04Y2My
Download Telegram
Все же представлен экспериментальный компилятор Angular от OXC

VoidZero заявляют:
- об ускорении билда в 20 раз за счет переноса логики обработки и преобразования шаблонов на сторону Rust и интеграции с экосистемой Oxc и Vite.
- в 6 раз быстрее, чем Angular CLI и в 20 раз быстрее, чем Webpack.
- vitejs plugin с полной поддержкой HMR.

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

Из интересного - компилятор написан на Rust! И разработан с использованием искусственного интеллекта. Пишут, что инженеры использовали Claude и Codex. Агенты проанализировали проект Oxc и определили, как использовать его компоненты (Parser, Semantic, Transformer) для замены функционала TypeScript. Были внедрены высокопроизводительные паттерны Rust, такие как arena memory allocation и применение существующих SIMD crates.

Oxc Angular Compiler не планируют поддерживать в дальнейшем, поскольку задача была удостовериться в возможностях AI, его эффективности и переносе Angular single-file компиляции на Rust.

На мой взгляд, это немного подтверждает теорию, что даже крупные проекты могут быть переписаны с помощью ИИ , но их поддержка будет дорогой.

Команда Angular уже проводит собственные эксперименты, что позволит интегрировать решения для существующего компилятора и работать с Vite.

Ссылка на статью с подробностями.

#angular

NgStream / Чат
👍6
Недавно были новости о том, что OnPush сделают стратегией по умолчанию. И вот, MR с этими изменениями влит. Нововведение ожидается с 22 версии. Напомню, что с v21 новые проекты создаются по умолчанию в Zoneless режиме.

Что это дает?

Меньше "шума" в классах, можно убрать явное указание использования стратегии для каждого компонента.
Пожалуй, постепенно придем к тому, что компоненты будут максимально чистые, свойства декораторов будут содержать только template и styles.
Ведь указание селекторов могут убрать с переходом на selectorless подход (к сожалению), а указание standalone: true аналогично покажется излишним, поскольку подавляющее количество компонентов, так или иначе уже создаются вне модулей (NgModule, если кто помнит).

Что изменено?

📌 Если стратегия не указана, значит выбран OnPush.

📌 Если нужно оставить предыдущее поведение, то нужно вручную указать Eager. Это новый алиас для Default стратегии. Сейчас, если не указана стратегия, значит выбран Default.

Впрочем, при переходе на версию 22 миграция будет сделана автоматически.

#angular

NgStream / Чат
🔥4
Angular продолжает "эволюцию" и в этот раз опубликован МР, где предлагают отказаться от "устаревшего" и, показавшегося избыточным, декоратора @Injectable. И добавить новый @Service.

В чем разница?

📌 @Service по умолчанию providedIn: 'root'. Можно вручную установить на нём параметр autoProvided: false и указать сервис в массиве providers: [] в нужном месте.
📌 @Service не поддерживает constructor-based injection, указание зависимостей возможно только через inject().
📌 @Service не поддерживает useClass, useValue и тд, только factory.

Лично я не вижу значительных преимуществ от предлагаемых изменений. Кроме большого количества материалов и AI базы знаний, которые станут устаревшими (о чем, кстати, пишут в комментариях), пострадает интуитивно понятное Angular API. Еще остается непонятным, что указывать при провайдинге на уровень платформы? Для такой более точечной настройки DI, скорее всего, оставят старый добрый Injectable. Но опять же, возникает больше чем один способ сделать одну вещь. И это отличается от привычной философии Angular.

Есть противоположная точка зрения. Якобы, вариант ниже смотрится менее понятным и с большим количеством бойлерплейта.

@Injectable({ providedIn: 'root' })
export class BookStore {}
// Предлагаемая версия
@Service
export class BookStore {}

Представленные изменения еще на этапе дискуссии и разработчики ждут обратной связи от сообщества. Вы можете выразить свою точку зрения, написав комментарии в опубликованном МР.

Ну и здесь в чате можете не стесняться:)

#angular

NgStream / Чат
👍4🤪4
В марте Temporal API перешел в статус Stage 4 (что означает добавление в стандарт) в TC39 и официально включен в спецификацию ECMAScript. Это эпохальное событие для JS.

На момент публикации заметки - на MDN статус Widely available. Не поддерживается в Safari.
Temporal предлагает строгое соблюдение формата ISO, удобную работу с часовыми поясами, корректную индексацию месяцев и иммутабельность объектов, позволяющих избежать случайных ошибок при математических операциях с датами.

Подробно о минусах встроенного Date писать не буду, мы все и так об этом знаем.

📌 Для чего уже можно применять?
- Простые даты. Создание, манипуляции без вычитания единицы из месяцев.
- Операции - добавление дней, месяцев или часов возвращает новый объект.
- Явная и предсказуемая работа с часовыми поясами.
- Форматирование - встроенное форматирование с учетом локализации.

📌 На мой взгляд, это шаг в сторону отказа от библиотек. Или выбор одной из них, поскольку есть вероятность, что внутри они будут переходить на новое API для простоты, уменьшения количества костылей и оптимизаций.

📌 Завершение стандартизации означает, что Date станет историческим артефактом и останется только для обратной совместимости. Можно будет сказать: "а я еще Date использовал".

#js

NgStream / Чат
👍6🔥1
Команда Angular добавит функционал debounce для асинхронной валидации форм.

📌 По факту, это параметр в функции validateAsync и validateHttp . Аналогично debounce из RxJS он позволяет сократить количество запросов при проверке данных. В рамках изменений был внедрен новый тип данных DebounceTimer, который унифицирует настройку времени ожидания. Теперь выполнение проверок может быть отложено на заданное количество миллисекунд или до завершения работы конкретной функции.

В общем, приятное дополнение для Forms.

🎉 Кроме того, с версии Angular 22 Resource API (resource, rxResource, httpResource) перейдет в статус stable!

#angular

NgStream / Чат
👍52🔥2🤔1
Довольно позитивная новость, о которой забыл написать в канале.

На апрельском Q&A Angular community сообщили об изменении roadmap. В частности, о приостановке внедрения selectorless подхода для компонентов. Приоритетом стала стабильность синтаксиса для корректной генерации кода AI инструментами, т.к. они эффективны, когда используется консистентный и хорошо изученный синтаксис.

В общем, руководством была взята пауза и решено временно отказаться от масштабных breaking changes, чтобы не нарушать работу LLM-моделей, которые только начинают эффективно осваивать текущие стандарты Angular. Но планируют вернуться позже.

Или все же одумаются, что это может поломать работающие подходы, завязанные на селекторы.

#angular

NgStream
👎3🔥3🤪2🤔1
C версии 22 resource API перейдут в статус stable. Незамеченной оставалась еще одна фича - resource composition. Пока в experimental.

📌 Суть нововведения в том, чтобы показывать на UI текущее состояние, пока загружается новое. Разберем простейший пример - отображаем погоду в Санкт-Петербурге. Кликаем на Ростов.

Что происходит сейчас?

📌 Resource переходит в состояние loading, value - undefined. Карточка погоды исчезает, отображается skeleton, загружаются данные, а затем появляется карточка с новым городом.

📌 Как вы уже догадались, используя эту функцию, предлагается отображать предыдущее состояние и заменять на него loading state. Что позволит избегать мерцания/лишних переключений на экране.

Ссылка на MR.

#angular

NgStream
👍5
Как вы знаете, 19-20 мая прошла Google IO.

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

Обновили Antigravity. Представили версию 2.0, которая полностью переработана под мультиагентную оркестрацию. Теперь это не просто редактор, а хаб, где разные агенты могут параллельно решать задачи. В качестве стандартной модели используется Gemini 3.5 Flash (новая модель).

Gemini Spark - агент, который не просто отвечает на вопросы, а живет в вашем контексте, взаимодействуя с Google Workspace и сторонними сервисами.

Не обошлось и без Angular. Куда же без него?)

Boundary (Error Boundaries)
Новый блок @boundary позволяет изолировать ошибки. Был показан виджет «бесплатной доставки». Если он упадет из-за ошибки в данных, то не положит весь процесс оформления заказа. Пользователь увидит fallback UI, в котором можно реализовать логику повторных запросов.

@boundary {
<app-promotional-widget>
}
@error (let err) {
<app-default-promotional-widget>
}

Статус: Developer Preview в Q3 2026.

Обновленный Switch Statement
Синтаксис стал чище и, что важнее, безопаснее.
- Multiple Case Matching. Группировка условий теперь избавляет от лишнего бойлерплейта.
- Exhaustiveness Checking. Если вы используете union-типы, добавление блока default с ключевым словом never позволит Angular проверить полноту обработки всех сценариев на этапе компиляции. Это исключает runtime-ошибки при расширении типов.

Inline-функции
Конец многолетних дискуссий: Марк Томпсон официально подтвердил, что использование коротких стрелочных функций в шаблонах нормально. Это значительно улучшает DX для простой логики, не влияя негативно на производительность. Но если вы следуете правилу - "сложная логика в классе, а небольшие преобразования в шаблоне".

И повторили, что перейдет в статус stable:

- Signal Forms.
- Angular Aria. Напомню, что это набор из 11+ паттернов доступности (от Toolbars до сложных меню). Google берет на себя логику ARIA-атрибутов, оставляя разработчикам только CSS. Важнейшее новшество - появление test harnesses, что делает тестирование доступности тривиальной задачей.
- Asynchronous Reactivity. Главный архитектурный анонс API resource и httpResource. Это фундамент новой модели работы с асинхронными данными.

Версия 22 ожидается на следующей неделе (3 июня).

#angular

NgStream
2👏61👍1
Многие с появлением AI инструментов поверили, что разработчики не нужны и агенты будут «писать код за человека». Это главное заблуждение, на мой взгляд.

В марте прошла AI Dev Day 2026 от Яндекса. Эта конференция стала моментом истины для всей индустрии. Главный вопрос - стали ли разработчики действительно продуктивнее спустя год тотальной «нейронизации»?

Авито представили данные внутреннего исследования: написание кода занимает лишь 32% времени разработчика. Если ваш AI-агент станет идеальным, получится сэкономить только треть рабочего дня. Цифры из Яндекса аналогичные - разработчики тратят 35% на написание кода, 30% времени на коммуникации, 15% на планирование и поиск информации, и по 5% на DevOps, работу с данными и кодревью.

Я посмотрел не все, только некоторые выступления. В частности, ТБанк представил довольно интересные метрики на основе технических данных (DORA), удовлетворенности (SPACE) и когнитивной нагрузки (DevEx). Но слишком мало подробностей. Конечно хотелось бы услышать, как считали и как подкручивали процессы.

Понятно, что для опытного разработчика это помощник, не заменитель. На практике агенты способны закрывать лишь часть рутинной работы. Более того, опыт сеньоров становится еще более критичным: например, в Amazon именно senior-инженеров явно просят валидировать изменения в коде, которые вносят ИИ-модели и менее опытные сотрудники.
Компании понимают, что оптимизировать надо не только написание кода, но и остальные блоки, и прилагают усилия к уменьшению времени поиска, ускорению код ревью и тд. Общая производительность определяется не суммой усилий всех участников, а пропускной способностью одного единственного узкого места.

#ai

NgStream
👍9
Обратная связь SBI

Месяца три назад я писал о корректирующей обратной связи и обещал поделиться инструментом для нее. Так вот, этот инструмент - модель SBI. Мне её посоветовал бывший руководитель. Я уже понял, что она отлично работает, и стараюсь использовать её в работе.

Рассмотрим на примере. Допустим, вы обсуждаете получившуюся ситуацию с коллегой.

Сначала описываем ситуацию (Situation): «На проекте X, в рамках спринта, который завершился вчера…»

Затем фиксируем поведение/факт (Behavior): «…я увидел, что два коммита, связанные с задачей A, были внесены после дедлайна, и код не прошёл ревью.»

И наконец, объясняем влияние (Impact): «Из-за этого: 1) QA не успели протестировать фичу, 2) релиз отложен на день, 3) команде пришлось экстренно менять план.»

Почему это работает?

Мы показываем последствия, а не навешиваем ярлыки. Человек часто не видит цепочку последствий своих действий. Это превращает обратную связь из личного упрёка в анализ системной проблемы. Такой подход убирает обвинения («ты непрофессионален») и переводит разговор в плоскость конкретных фактов и их системных последствий.
Важно дать ее вовремя (не сразу же на эмоциях, но и не по прошествии долгого времени), по фактам (максимально безоценочно), с уважением к человеку (когда мы разделяем: ты хороший человек, но поступил в конкретной ситуации не самым эффективным образом).

Кстати, случайно, у меня получилась отдельная серия постов на тему обратной связи.

#нетехзаметки

NgStream
👍62
В офисах ИТ компаний в воздухе все чаще слышно напряженное гудение, пока нейросети на "сверхзвуковых скоростях" развертывают целые модули и генерируют тысячи строк кода в секунду.

Вышедший недавно State of AI 2026, говорит, что 56% кода, в среднем, генерируется AI. Год назад было 28%. А доля тех, кто генерирует 75%+ кода, выросла сильнее всего. Ресурс говорит, что поучаствовало 7 258 разработчиков. Выборка смещена в сторону тех, кто уже использует AI, но тренды внутри неё показательные. Еще один показатель - частота использования. Доля разработчиков, использующих AI "постоянно", удвоилась за год.

Помните мой прошлый пост? Я писал, что AI - усилитель, а не замена. Эти цифры это подтверждают, но с тревожным нюансом.

Когда AI генерирует больше половины кода, проверять его становится отдельной профессией. И это проверка требует больше опыта, чем написание с нуля. При этом, старшие разработчики нужны ещё больше - именно они могут заметить галлюцинацию или архитектурную ошибку, которую сгенерировала модель. Кода генерируется больше и быстрее, но появляется дополнительная нагрузка на проверку и синхронизацию внутри команды. И еще немаловажно, что ты быстрее устаешь, потому что больше времени тратишь на проверки.

Этот "налог на ревью", в первую очередь, бьет по Senior инженерам. На них обрушивается лавина посредственного кода. Да, можно сказать, прикрутите ИИ ревьюера и дело в шляпе. Это означает, упростить проверку, но не решить проблему, на мой взгляд. Все-таки ответственность за баги по-прежнему несет человек, а не модель! Кстати, кто прикрутил ревьюера, пишите в комментариях, интересен ваш опыт:)
ИИ действительно ускоряет написание кода, но не так, как любят показывать в маркетинге. Более реальные цифры - в исследовании. Это, примерно, 7-8% прироста производительности, но часть этого потом идет на ревью и дополнительные затраты на координацию. Команды постепенно уходят от общих метрик и начинают смотреть на cycle time, cognitive load. И больше кода уже не равно “быстрее delivery”.

Что делать?
Если в вашей команде AI уже генерирует 50%+ кода - спроси себя:
- Кто и как проверяет эти 50%?
- Сколько времени уходит на исправление AI-багов?
- Не растёт ли когнитивная нагрузка на сеньоров?

По моему мнению, генерация кода подорожала по деньгам, но не подешевела по времени на отладку. Просто время перетекло из "написать" в "проверить и переписать".
Если вам интересны посты об опыте применения AI - ставьте ❤️.

#нетехзаметки

NgStream
6💯3
Angular 22!

Что нового? Посмотрим вместе на основные фичи!

Команда позиционирует обновление, как
…фундаментальный сдвиг в философии фреймворка. Мы переходим от концепции просто стабильной библиотеки к модели «стартовой площадки», созданной для развертывания сложнейших современных приложений.


📌 Signal Forms - stable! Наконец-то!
Представили финальную версию со всеми улучшениями, включая debounce(), validateAsync/validateHttp() и тд. И обновили гайд.

Добавлена поддержка Angular Material для бесшовного внедрения сигнальных форм. И поддержка Angular Aria, предоставляющая набор основных a11y паттернов.

📌 Resources (resource и httpResource) - stable!
Напомню, что базовый resource используется для общих асинхронных операций, httpResource предназначен для получения данных по HTTP. Он автоматически отслеживает сигналы и управляет состоянием запроса. Также обновили гайд.

export class WeatherComponent {
selectedCity = signal('RND');

weather = httpResource<Type>(() =>
api/v1/forecast/${this.selectedCity()};
);

protected changeCity(newCity: string) {
this.selectedCity.set(newCity);
}
}


📌 OnPush по умолчанию.
А Default переименован в Eager. Что же, теперь меньше "шума" в классах, можно убрать явное указание использования стратегии для каждого компонента. При переходе будет произведена автоматическая миграция.

📌 И, конечно же, улучшение опыта работы с AI. Ведь это "новая эра разработки":)

- Обновили MCP. Новый инструмент devserver.wait_for_build, позволяет агентам запускать сборку и анализировать логи, а ai_tutor или modernize автоматически исправляет ошибки компиляции.
- Более тесная интеграция с Antigravity. Учитывая, что недавно выпустили 2 версию, звучит заманчиво. Кто уже потрогал новую версию - напишите, пожалуйста, в комменты или личные сообщения, интересно ваше мнение.

📌 Декоратор @Service() приходит на замену @Injectable({ providedIn: 'root' }). Представляют, как более лаконичный способ определения глобального синглтона. При этом классический @Injectable остается доступным для случаев, требующих сложной конфигурации или внедрения через конструктор.

📌 Асинхронный DI
injectAsync - инструмент для реализации ленивой загрузки сервисов. Теперь тяжелые зависимости можно загружать только в тот момент, когда они действительно нужны.

export class ReportComponent {
// Сервис будет загружен только при вызове export()
private exporter = injectAsync(() => import('./report-exporter'), {
prefetch: 'onIdle' // Опциональная предварительная загрузка в фоне
});

async export() {
const exporter = await this.exporter();
exporter.run();
}
}


📌 Host Directives
Теперь автоматически обрабатываются случаи, когда одна и та же директива применяется к элементу несколько раз (через шаблон и как host directive), предотвращая конфликты.

📌 Обновления роутинга.
withExperimentalAutoCleanupInjectors - механизм очистки ресурсов. Для этого используется алгоритм "mark and sweep", который выявляет неиспользуемые инжекторы и освобождает ресурсы. Рекомендуется использовать для автоматической очистки. Подробнее можно почитать здесь.

📌 Обновили шаблоны. Добавлена поддержка switch/case (подробнее), spread синтаксиса (например, для передачи данных в input компонента), стрелочных функций и комментариев внутри HTML. Теперь можно писать вот такое… Как вам данное решение?

<button 
(click)="item.update(p => ({ ...p, stock: p.stock - 1 }))">
Decrease Stock
</button>


📌 Недавно показанная фича @boundary станет доступна в developer preview в Q3 2026.

📌 Помечены deprecated
Поддержка Webpack, сборщики @angular-devkit/build-angular, @ngtools/webpack и тд в версии 22 отмечены deprecated. Команда сосредоточена на поддержке TSGo.

Вот такое насыщенное обновление! Еще команда запланировала event с презентацией релиза на 9 июня 20:00 мск онлайн. Подробности релиза в блоге. Пишите, какую фичу ждали больше всего?

#angular

NgStream
1❤‍🔥9👍3
В субботу посетил Сезон кода.
Сам фестиваль проходил в офисе ТБанка - у ребят очень уютно! И солнечная Питерская погода добавила красок;)

В программе 3 секции докладов, всякие активности на стендах, зоны чилла, несколько кофеен. За счет геймификации нас ненавязчиво подталкивали к общению, чтобы сообщество тусовалось не только в своих компаниях, а знакомилось! Мне понравилось! Вообще было много классных ребят! Для себя отметил выступление с дашбордами для мониторинга и реагирования на инциденты, поскольку сам недавно с этим работал. Запомнилась активность, где нужно было разобраться с решениями, предложенными AI. Я кайфанул! Узнал кое-что новое в демозоне с графовой аналитикой, пообщался с командой на тему SDLC.

В общем, самые положительные впечатления и спасибо организаторам, ребятам на стендах! Вам удалось сделать это максимально круто💪🏻

NgStream
🔥9👎1
В Angular 22 была улучшена обработка null и undefined, которую многие не заметили. Поведение ?. в шаблонах теперь точно соответствует семантике JavaScript: если цепочка обрывается на позиции со значением null или undefined, результатом будет undefined. При этом сохранена обратная совместимость - если нужно старое поведение, специфичное для Angular, можно обернуть выражение в $null(…).

Наверное, одно из самых мощных нововведений, с точки зрения DX, это полноценная поддержка сужения типов (Type Narrowing) в шаблонах. Раньше, даже если вы проверили свойство в @if, компилятор часто требовал повторного использования ?. при обращении к вложенным полям, что сильно раздражало. Теперь после проверки на истинность (truthiness check) тип сужается, как в обычном коде TypeScript, так что последующий доступ без ?. является типобезопасным.

@if (user?.isMember) {
{{ user.isMember }}
}


Angular продолжает движение в сторону более корректной типизации и прозрачности, полностью синхронизируя работу с типами в шаблонах со стандартами JavaScript и TypeScript.

#angular

NgStream
🔥142
Будущее JS инструментов

На прошлой неделе Vite+ перешел в статус Beta. Это не просто очередная библиотека, а попытка создать единую, монолитную и невероятно быструю платформу (набор инструментов), которая возьмет на себя управление всем циклом разработки. Что важно, проект полностью открыт и распространяется под лицензией MIT. В состав входят следующие инструменты:

Vite 8 - ядро для разработки и сборки;
Vitest - для тестирования (теперь с поддержкой ARIA-снапшотов);
Rolldown - новый "blazing fast" сборщик на Rust;
Oxlint и Oxfmt - линтер и форматировщик из семейства Oxc;
tsdown - bundler с нативной поддержкой CSS-модулей.

В Vite 8 важным изменением является переход на Rolldown по умолчанию. Раньше использование разных сборщиков в dev и prod режимах приводило к трудноуловимым багам. В этом же решении предлагается использовать Rolldown, чем обеспечить консистентность на всех этапах. Технически это стало возможным, благодаря глубокой интеграции с экосистемой Oxc. Использование Rust это не только про скорость, а про общее AST. Команда работает над тем, чтобы парсер, линтер и сборщик работали с одним деревом в памяти, минимизируя дорогостоящую сериализацию данных.

Забавно, что при генерации нового проекта через vp create, автоматически добавляются файл agent.md и инструкции для агентов Cursor, Copilot, Claude. Теперь AI сразу понимает контекст проекта, знает о правилах линтинга и специфике архитектуры.

Одной из самых обсуждаемых функций Vite 8.1 стал Experimental Bundled Dev Mode. Это переименованный Full Bundle Mode. Изначально Vite отдавал файлы по одному, но на больших проектах это стало бутылочным горлышком. Когда браузер пытается одновременно загрузить 10K модулей, его сетевой стек и DevTools просто вешаются. И сейчас опять возвращается к идее бандлинга в dev-режиме, объединяя модули в крупные chunks. Это позволяет сохранить мгновенный старт, не перегружая браузер бесконечными HTTP-запросами.
Еще для Enterprise добавили поддержку прокси, custom CA-сертификатов, а также organization templates для стандартизации сетапа во всех отделах компании.

В заметке в блоге отмечают, что релиз почти полностью стабилен и будет продолжена работа над улучшением.

#js

NgStream
🔥5👍3
Пару недель назад в репозитории Angular появился любопытный MR, направленный на улучшение работы Router и его более глубокую интеграцию с resource.

Основная цель - предотвратить мерцание интерфейса путем замораживания состояния данных во время навигации. И обеспечить согласованность отображения, удерживая старое значение до тех пор, пока новый маршрут не будет полностью загружен или успешно восстановлен после отмены.

During navigation, the state of the resource (value, status, error, and loading signals) is frozen so the application state and UI do not eagerly change/flash during an in-progress navigation.


При отмене навигации, например, когда, canActivate вернул false, предполагается откат. Ресурс удерживает замороженный snapshot состояния и будет показывать старые данные, пока не закончится фоновая перезагрузка текущего состояния. Если замороженное состояние не было валидным (например, ресурс находился в состоянии ошибки), фаза восстановления пропускается. Ресурс размораживается, что позволяет ему сразу перейти в новое состояние. Кроме того, работает логика New Navigation Preemption: если в процессе отката пользователь инициирует новую навигацию, система мгновенно отменяет восстановление и переключается на новую цель. Это и делает механизм по-настоящему транзакционным.
Для обеспечения транзакционности Angular накладывает жесткие ограничения на API обертки - скрыты методы для прямой записи состояния ( set/ update), его невозможно случайно перевести в невалидное состояние.

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

#angular

NgStream
👍8🔥2
История с исчезновением ngneat пакетов получила продолжение!

Если вы пропустили эту новость, то все репозитории ngneat в прошлом месяце были удалены/скрыты. Это стало неожиданностью для команд разработчиков, использующих привычные инструменты. На reddit есть обсуждение на эту тему, можно почитать. Конечно сами npm пакеты никто не удалил, но вопрос дальнейшей поддержки оставался открытым.

И вот, пару дней назад, я увидел новость о том, что была создана организация OpenNG, которая будет координировать работу над форками проектов, включая elf, query и spectator! И уже вышел первый релиз.

Один из организаторов сообщества - Gerome Grignon, довольно известный Angular Certified Expert, open source contributor, создатель Angular CanIUse. Команда планирует поддерживать работу проектов и, в первую очередь, сделать ревью МР от сообщества. Как пишут у себя на странице, организация OpenNG планирует поддерживать и совместно разрабатывать и другие open-source проекты на Angular, помогать подбирать для проектов мэйнтейнеров, готовых развивать их дальше.

Ссылки на страницу проекта и страницу организации на GitHub.

#angular

NgStream
🔥12👍2
На прошлой неделе вышел TypeScript 7

И у меня только сейчас дошли руки написать об этом.

Это релиз нативной версии TypeScript, которая работает в 10 раз быстрее текущей, о чем было заявлено в прошлом году. Цель была в том, чтобы максимально эффективно использовать современное железо и сделать перенос близко к оригиналу с сохранением структуры и логики исходной кодовой базы, обеспечивая совместимость между двумя компиляторами. В результате мы получили скорость нативного кода, многопоточность с общей памятью и ряд новых оптимизаций, которые обычно дают ускорение от 8 до 12 раз при полной сборке.

⚡️ На практике обещают прирост скорости на каждом этапе - загрузка проекта, поиск всех ссылок, автодополнение и более короткий цикл обратной связи при запуске в режиме --watch.
👀 Режим --watch полностью переработан и работает на базе file-watcher из бандлера Parcel, обеспечивает эффективное и стабильное отслеживание изменений файлов на разных платформах.
🧵Новый компилятор теперь выполняет многие шаги параллельно: парсинг, type checking и генерацию кода. Некоторые из них, например парсинг и генерация, выполняются практически независимо для каждого файла - параллелизация автоматически хорошо масштабируется на больших кодовых базах с минимальными накладными расходами.

Были введены экспериментальные флаги --checkers и --builders для настройки параллелизации таких шагов, как проверка типов и сборка ссылок на проекты. И добавлен флаг --singleThreaded для полного отключения параллелизации, который полезен при отладке или в средах с ограниченными ресурсами.

⚠️ Важное замечание для Angular разработчиков! Angular не перейдёт на TypeScript 7 сразу, поскольку новый API компилятора ещё не готов. Команда планирует выпустить стабильную версию API в следующем релизе - 7.1, после чего Angular и другие фреймворки и инструменты, такие как Vue, MDX, Astro, Svelte начнут интеграцию.

Звучит масштабно, ожидаем примерно такой же график релизов, как и до TypeScript 7.0: новые версии с полноценными возможностями будут выходить каждые 3–4 месяца.

Оригинал в блоге.

#typescript

NgStream
👍7🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Selectel Day Off возвращается 💚

ИТ-фестиваль пройдет 25 июля в музее Эрарта! Если разбираться с будущим, то там, где его уже нарисовали😉

По опыту прошлого года могу сказать, что день запомнился крутой атмосферой! Живые дискуссии, возможность и пообщаться, и узнать что-то новое, и просто выдохнуть)

⭐️ 8 докладов про ИИ в найме, профессии и искусстве;
⭐️ 8 воркшопов, чтобы развиваться в эпоху ИИ;
⭐️ перфомансы, активности и другие развлечения, чтобы выдохнуть — все же выходной.

Присоединяйся - вживую или онлайн. Места есть, но лучше не тянуть: прошлый раз показал, что они тают быстрее, чем аргументы противников нейросетей.
🔥6👎3