Before you upgrade to .NET 11, check that your API clients can read OpenAPI 3.2
In .NET 11, AddOpenApi writes an OpenAPI 3.2 document where .NET 10 wrote 3.1. On a small API that version line is the only change, and four of five client generators don't mind. ng-openapi-gen refuses it. The documented one-line pin fixes the running app but not the document written at build time, which needs its own option.
Fix the baseUrl error that TypeScript 6 raises in older Angular workspaces
Angular 22 builds with TypeScript 6, which turns the baseUrl that Angular CLI 7 to 16 put in every new tsconfig into a build error. ng update doesn't touch it. Delete baseUrl, add ./ to every path, and decide what to do with imports that only resolved because of it.
Before you move a build to TypeScript 7, check it for custom transformers
TypeScript 7 ships without a JavaScript API, so nothing in a build can hand it a custom transformer. The plugins entry in your tsconfig.json survives the upgrade, the compiler accepts it without a word, and the transformation stops happening while the build still exits 0.
TypeScript 6 stops loading @types globally: what breaks on upgrade
Up to TypeScript 5.9 a tsconfig with no types entry loaded every package under node_modules/@types as globals. TypeScript 6.0 made the default an empty array, so process and describe stop resolving on upgrade. The option controls automatic inclusion (and which packages editors offer as auto-imports), not imports, which is why an imported package still brings its types along and a dependency's own reference can quietly put the globals back.
erasableSyntaxOnly catches the TypeScript that Node cannot strip
Node runs a .ts file by deleting the type syntax and handing the rest to V8, so the constructs that turn into runtime code have nothing to delete and fail at process start. erasableSyntaxOnly turns exactly those into editor errors, and Node 26 removed the escape hatch that used to compile them for you.
GitGlass, a VS Code-style repo viewer in under 10 KB of vanilla JS
I wanted readers to browse a demo repo without leaving the article. Nothing embeddable was small enough, so I built one: tree, tabs, highlighting, themes, snippets and guided tours in under 10 KB of JS, with no dependencies and no backend.