Ajit
banner
ajitpanigrahi.com
Ajit
@ajitpanigrahi.com
Level 26 Mage / SDE3 @Fortinet
✦ For Work: Frontend Infra & Tooling, Accessibility, Design, UX
✦ For Fun: Playing bullet-hell, precision platformers
https://ajitpanigrahi.com
https://bento.me/ajit
✦ @ajitzero everywhere else
Looking at the code makes complete sense to me. This is a pretty neat pattern!

I'm not the most up to date on testing libs & utilities, so I thought somebody figured out a performant way to do this "magically" 😅

I used to hate magic, now we tolerate each other 😂
October 27, 2025 at 7:05 PM
kinda off-topic: where does { heading } come from? Is it a magic variable that binds to all h1-h6 tags? Or maybe just the h1 tag?
October 27, 2025 at 6:55 PM
This is not even a hot take.

It's crazy just how many clearly synchronous states were shoehorned into BehaviourSubject. Signal FTW!

Worse still: sometime last year, when our project was still on v14 w/o signals, a colleague added a ReplaySubject with the explanation of "ChatGPT suggested this." 🤦‍♂️
October 27, 2025 at 6:50 PM
We have a few teams slowly rewriting Angular.js (v1) to v17 too 😂
February 2, 2025 at 6:10 AM
Few teams on 12/13: stuck due to outdated dependencies

Most on 14/15: stuck due to a few ViewEngine dependencies, so can't move to 16 just yet

Few on 17: Internal UI library supports up to 17, so this is the latest we go for now. Planning for 19 after a few experimental features become stable.
February 2, 2025 at 6:09 AM
I just saw someone post about Indian Railways over on LinkedIn!

They (www.irctc.co.in) use Angular 9!
IRCTC Next Generation eTicketing System
www.irctc.co.in
January 11, 2025 at 2:16 PM
The simpler mental model now: CD runs only when we programmatically update a signal used in the template or when an event is triggered, like (click)

We can expect better docs once Zoneless moves out of the experimental state. Until then, GitHub PRs are a better source of info.
December 31, 2024 at 9:43 AM
While not explicitly mentioned, lifecycle hooks still work in the sense that they will execute code, but will not trigger a CD/synchronization unless a signal used in the template is updated within it.
December 31, 2024 at 9:43 AM
I believe we can enforce the type when using signal inputs. This type mismatch issue exists for all decorator-based properties
December 31, 2024 at 9:29 AM
Just had a quick glance, but what makes this article specifically v19+? Is it because contentChild etc. are out of dev preview?
December 16, 2024 at 8:09 PM
What was your use case to get to this point and discover this? A custom error message component?
December 9, 2024 at 8:46 PM
Here, using RxJs is more concise as a one-off case. If you need multiple computed properties then signals approach is better. With RxJS (w/o rxResource), you would need to use shareReplay to make it equivalent, and w/ rxResource, it behaves like toSignal anyway, and then use computed
December 2, 2024 at 11:54 AM
Congratulations Corbin!
December 1, 2024 at 11:00 AM
Sure!
November 28, 2024 at 7:36 AM
These links should have break-word I think
November 28, 2024 at 7:35 AM
*child, not cold
November 26, 2024 at 3:54 PM
I feel this is justified in "super" components (smart). Like, an unstyled table component shouldn't have methods, but if I use it to make a custom table for server side pagination (or something else) and if I need a refresh() method, I would use it from the cold component or maybe with viewChild
November 26, 2024 at 3:47 PM
Payload was agnostic initially (and honestly still is) but is prioritising the Next.js integration more (for marketing, I assume)
November 23, 2024 at 7:21 PM
I've used CRUD mixins for Django (Python) APIs/backend, which use a mixin format for their implementation, too. It works well-ish, but I keep forgetting how I did it after a few months whenever I need a new mixin to support calling, say, GET /<base>/export instead of the regular ones
November 23, 2024 at 6:19 PM