Blog

Angepinnter Beitrag
Angular Book Team

Angular 22 is here!

Jun 3, 2026

There is news from the Angular world again: Angular 22 is here! This release pushes several concepts across the finish line: Signal Forms, the Resource API, and @angular/aria are now stable. The HttpClient now uses the modern Fetch API by default, and a new @Service() decorator has been introduced. We present these and several other updates in this blog post.

Johannes Hoppe & Angular.Schule Team

TypeScript Hero is dead (is yet another VS Code extension gone forever?)

Mar 14, 2026

I use TypeScript Hero every single day. Multiple times per hour, actually. One keyboard shortcut (Ctrl+Alt+O) and my messy imports transform into a well organized, alphabetically sorted list. Unused imports? Gone. Proper grouping? Done. Consistent formatting? Check. Then one day, VSCode hit me with a warning I couldn't ignore: "This extension is deprecated as it is no longer being maintained." My heart sank. Not another one!

Johannes Hoppe & Angular.Schule Team

Claude Code: The AI Agent for Angular Developers (and Those Who Want to Become One)

Feb 18, 2026

There has never been a better time to build software. AI agents like Claude Code have fundamentally changed my workflow – I write better code in less time. In this article, I will show you how it works. Whether you have been developing with Angular for years or are just getting started: the barrier to entry has never been lower.

Johannes Hoppe

Claude Code: How to Actually Fix the Endless Scrolling Problem

Feb 17, 2026

Claude Code has a notorious bug: the terminal scrolls uncontrollably, flickers, or freezes entirely. Since March 2025, GitHub issues have been piling up with thousands of upvotes, and the problem still isn't fixed. It is the single most reported UX problem with Claude Code, and a real fix from Anthropic is still nowhere in sight. In this article, I explain why the bug exists, why the common workarounds don't help, and how to fix it for good with an open-source tool.

Angular-Buch Team & Angular.Schule Team

Agentic Coding: AI Support for Angular

Feb 11, 2026

Software projects are becoming more complex, and requirements are increasing. AI (Artificial Intelligence) tools can support us in development and provide relief: They help with generating code, explain complex relationships and suggest improvements. In this article, we show you how to generate the best possible code using Angular's AI tools.

Johannes Hoppe

Vitest in Angular 21: What's new and how to migrate?

Nov 20, 2025

Angular 21 introduces a significant change to unit testing: Vitest is now the default, replacing the previous standard combination of Karma and Jasmine. When creating a new project with ng new, Angular 21 now uses Vitest as the default test runner. Vitest promises significantly faster startup times, modern features, and an easy-to-use Jest-compatible API. In this article, we'll show you what Vitest means for you, how to migrate existing Angular projects, and what benefits Vitest offers.

Angular Book Team

Angular 21 is here!

Nov 20, 2025

On November 19, 2025, Angular 21 was released! The most important updates: Signal Forms, zoneless apps, testing with Vitest, the new package @angular/aria, and more support for AI assistants.

Johannes Hoppe

Angular's Resource APIs Are Broken - Let's Fix Them!

Oct 31, 2025

Angular ships with three Resource APIs for declarative async data loading: resource(), rxResource(), and httpResource(). They're powerful additions to Angular's reactive toolkit, but they share a common foundation with some sharp edges. This article examines three bugs in the shared core, supports them with source code, and shows how to fix each one.

Johannes Hoppe

My experimental @Service() decorator for Angular

Sep 30, 2025

With Angular 20, the service suffix has been removed from the new style guide. While this leads to shorter filenames, it also makes the role of classes less obvious. This article presents a thought experiment that introduces a custom @Service decorator to solve this issue elegantly.

Angular Book Team

Angular 20 is here!

May 30, 2025

Everything new comes in May - or at least a new major version of Angular: On May 28, 2025, Angular 20 was released! You can find the release information directly from the Angular team in the official Angular Blog.

Ferdinand Malcher

Reactive Angular: Loading Data with the Resource API

May 13, 2025

An interesting new feature in Angular is the Resource API. It allows us to intuitively load data and process it in components. In this blog post, we introduce the ideas behind this new interface.

Johannes Hoppe

Reactive Angular: Mastering effect and afterRenderEffect

Nov 14, 2024

Angular 19 has a significant change with the simplification of the effect() API and the introduction of afterRenderEffect(). This change impacts how Angular handles post-render tasks and is especially useful for applications that rely on precise timing for rendering and DOM manipulation. In this article, we'll explore how these two APIs compare, when to use each, and how to take advantage of phased execution with afterRenderEffect().

Johannes Hoppe & Ferdinand Malcher

Angular 19: Introducing LinkedSignal for Responsive Local State Management

Nov 4, 2024

In Angular 19, there's a new feature called a Linked Signal that makes it easier to keep track of local state that depends on other signals. It lets us create a writable signal that can automatically reset based on changes in other signals. This makes it particularly useful for situations where local state needs to stay in sync with dynamic data. Here's a look at what the Linked Signal is, how it works, and some common use cases.

Johannes Hoppe & Ferdinand Malcher

TypeScript: useDefineForClassFields – How to avoid future Breaking Changes

Nov 29, 2022

Did you know that properties are implemented slightly differently in JavaScript and TypeScript and that there is an incompatible behaviour? That's why projects with Angular 15 have the option useDefineForClassFields set in their TypeScript configuration. We will show you in detail what the problem is and how you should write your code so that it is future-proof for both programming languages.

Ferdinand Malcher

RxJS in the real world: Building a car turn indicator

Dec 14, 2021

Reactive Programming with RxJS is a great way to model event-based systems. It can feel super abstract sometimes. However, we can even apply the principles of Reactive Programming to our everyday world! Whenever I sit in a car, I'm impressed by how the electronics work. Wouldn't it be cool to build all of this stuff with RxJS? I want to take you on a car ride into how we can implement a turn indicator with RxJS!

Danilo Hoffmann

NgRx Data Views: How to de-normalize entities for large enterprise applications

Jan 8, 2020

As soon as a NgRx project gets bigger, we have to ask ourselves how we should ideally arrange the entities in the store. In this article we are going to have a look at inter-connected data and its implications when trying to elevate store output to old fashioned business objects, ready to use in all components. By tackling normalized APIs we will show you some of the most common pitfalls you might encounter along the way.

Danny Koppenhagen

ngx-semantic-version: enhance your git and release workflow

Nov 6, 2019

In this article I will introduce the new tool ngx-semantic-version. This new Angular Schematic allows you to set up all necessary tooling for consistent git commit messages and publishing new versions. It will help you to keep your CHANGELOG.md file up to date and to release new tagged versions. All this is done by leveraging great existing tools like commitizen, commitlint and standard-version.

Johannes Hoppe

All you need to know about `ng deploy`

Aug 22, 2019

With version 8.3 of the Angular CLI a new command has been released which has the potential to be a game changer. Now, deployments to any target (Firebase, Azure, GitHub pages...) are potentially only one CLI command away. In this article we will show you everything you need to know.

Johannes Hoppe

How to integrate third party libraries and widgets into Angular

Feb 27, 2019

For an upcoming workshop we were asked how to integrate third-party libraries into an Angular application. In this blog post we want to have a closer look at this question. We will discuss a few possible strategies that depend on which technology to integrate.

Johannes Hoppe

Generating Angular API clients with Apollo and GraphQL code generator

Jun 14, 2018

In this article, I will give a short introduction to GraphQL and then we shall look at at Apollo Angular and the GraphQL code generator. We will combine the flexibility of Graphql with the safety of strongly typed TypeScript code that is consistent between server and client.

Johannes Hoppe

Swagger Codegen is now OpenAPI Generator

Jun 8, 2018

William Cheng, top contributor to Swagger Codegen, recently informed us about a big change for the swagger community. William and other top contributors (40+) of Swagger Codegen have decided to fork the project to maintain a community-driven version called "OpenAPI Generator", which supports both OpenAPI spec v2 and v3.

Ferdinand Malcher

5 useful NgRx effects that don't rely on actions

Jun 2, 2018

In this article we will discuss how we can leverage the power of Effects in NgRx. We will use observable streams other than the usual action stream to build some powerful and neat effects.

Johannes Hoppe

One app per customer

May 21, 2018

In this article, I will discuss some ideas how to produce individual Angular apps. How do we get one app per customer if we have 100+ customers?

Johannes Hoppe

Generating Angular API clients with Swagger

Apr 12, 2018

In this article, we will take a look at swagger codegen. It will save you a ton of work and pain by generating HTTP services automatically from your swagger API description.

Johannes Hoppe

10 pure immutable operations you should know

Mar 21, 2018

In this article, we will take a look at some common "immutable" operations. You will see how modern JavaScript enables us to easily work with immutable data structures in a super clean way without the need of an additional library – using the spread operator and Object.assign().

Ferdinand Malcher

Build your own RxJS logging operator

Feb 19, 2018

In this article we will cover how to write our own custom operators for RxJS pipelines. We will build a simple logging operator and learn how we can debug observable sequences.

Johannes Hoppe

DateValueAccessor: How to use date input controls with Angular Forms

Oct 12, 2016

Working with forms is pretty easy in Angular. You just need to decide between Template-Driven and Reactive Forms and you are ready to start with some bindings and validation. The following code shows a two-way data binding with ngModel against a property of type string: