Dzhavat Ushev

@dzhavat.bsky.social

Developer working with Angular Blog at https://dzhavat.github.io/

🧵 1/ How to debounce a Signal-based loading flag? The obvious solution — and its catch: Angular 22 ships debounced(). Looks great — but it also debounced true -> false. So, the spinner lingers 300 ms after the data is already here :-( The trick ...

Bild

OMG 😱 Strava has changed their API access policy .. they now require subscription in order to access their API. The Strava widget on my blog has now stopped showing my latest run. So sad 😭☹️

Bild

Kind of sad that Real Madrid has started using AI to translate the content on their website from Spanish to English, French, German, Portuguese. - use AI - add a disclaimer - done :(

Bild

Angular v22 is now available 🥳 Here's what's new: ✅ Signal Forms, Angular Aria & resource are officially STABLE ✅ OnPush change detection is now the default ✅ Template updates and more Read the full breakdown on the blog: 📰 goo.gle/angular-v22-... Which of these updates is your favorite?

Announcing Angular v22

Today, we are thrilled to announce the release of Angular v22. We continue to be proud of the work we do with each release. Our goal is to…

goo.gle

After a year of building, The Layout Maestro is officially live! 🎹🥳 An interactive CSS course that teaches you how to think in CSS layouts. 70+ lessons, 7 layouts, 150+ interactive demos! Ready to level up your layout skills? Enroll now👇: thelayoutmaestro.com

A tablet displaying the landing page for 'The Layout Maestro,' a practical CSS course by Ahmad Shadeed. The desk setup includes a cup of coffee, colorful pencils, and LEGO pieces, creating a bright and creative atmosphere.

TypeScript 6.0 is now available! This release brings better type-checking for methods, new standard library features, new module features for Node.js, and more! But most important, this release brings us one step closer to the upcoming native-speed 7.0! devblogs.microsoft.com/typescript/a...

Announcing TypeScript 6.0 - TypeScript

TypeScript 6.0 is now available! TypeScript 6 is a stepping-stone release, aligning with the upcoming native-speed 7.0 release.

devblogs.microsoft.com

Debugging just got a major upgrade. We’ve officially launched Resource Visualization in Angular DevTools. Now you can gain even deeper insights into your app's lifecycle and dependencies directly in your browser. See it in action and check out the details here: github.com/angular/angu...

Headline: Developer Tool State Management Visualization

Main Container: A dark-mode interface showing a logic flow. A central resource block titled myRsrc is highlighted with a gold border.

Internal Flow: Inside the resource, an extRequest node (red) feeds into loadEffect (purple), state (red), and stream (blue). These converge into green terminal nodes: status (showing "resolved"), value (showing "next_val"), and isLoading (showing "false").

External Context: Above the resource is a parent node rsrcParam with the string "rsrc_param". To the left, unrelated nodes for zippy and counter are visible.

Inspector Window: A small UI overlay in the bottom right summarizes the "myRsrc" state, confirming the type is resource, the status is resolved, and the current value is "next_val".

Spread syntax in Angular templates! Use the ... operator in: ▶️ Object literals: {a: 1, ...foo} ▶️ Array literals: [1, ...foo] ▶️ Function calls: fn(1, ...foo) It’s powered by Angular’s "pure function" system, ensuring objects aren't re-created unless data changes. Keep it clean, keep it fast! 🚀

A code snippet demonstrating the use of the JavaScript spread operator within Angular's @let syntax. The code defines a baseModel object, then creates an upgradedModel using {...baseModel} to inherit properties like make, model, and year, while adding a new "radio" property. The HTML below outputs both lists to show the merged data.

Code snippet:
      @let baseModel = { make: 'Best Cars', model: 'ng-21', year: 2026 };
      @let upgradedModel = {...baseModel, radio: 'Premium Sound System' };

      <p>Base Model Details:</p>
      <ul>
        <li>Make: {{ baseModel.make }}</li>
        <li>Model: {{ baseModel.model }}</li>
        <li>Year: {{ baseModel.year }}</li>
      </ul>

      <p>Upgraded Model Details:</p>
      <ul>
        <li>Make: {{ upgradedModel.make }}</li>
        <li>Model: {{ upgradedModel.model }}</li>
        <li>Year: {{ upgradedModel.year }}</li>
        <li>Radio: {{ upgradedModel.radio }}</li>
      </ul>

Angular 21.1 is officially here! 🚀 This update brings: ✅ Multi-case @switch matching ✅ Spread syntax in templates ✅ isActive() Signals for routing ✅ Updated [formField] for Signal Forms Upgrade now: ng update @angular/core @angular/cli and tell us your favorite new feature! 🛠️