Programmer, Sailor, Photographer, Engtrovert

San Francisco, CA
It's official - the code change just landed to make components standalone by default in Angular v19.
6
30
210
11,022
2024 for @Angular will be the Year of the Signal.
7
25
187
22,198
Angular v17 is officially in Release Candidate phase! Check it out and let us know what your experience is!
5
38
180
24,694
Over 3 years ago I sketched github.com/angular/angular/p… as a proof of concept of components w/o NgModules. Many discussions followed, and the feature today is so much better than my initial prototype. Now we're going all in, and making standalone the default: blog.angular.dev/the-future-…
7
40
173
9,541
After months of research, experimentation, and design, I'm so excited to share this project with our community. The best thing about it, in my opinion? Everyone benefits!
Today we are excited to open the first PR of our exploration into fine-grained reactivity! 🚦 This is the foundation to allow prototyping & amplify the value of an upcoming RFC on our plans to introduce a new reactive primitive into Angular. Read more: goo.gle/ng-watch-this-space
4
19
153
70,144
v18 is here! I'm especially proud of this one. Our biggest challenge is maintaining Angular's stability and reliability while evolving with the modern web, and v18 walks this line with our first steps towards a future without zone.js. `ng update` today, and give it a try!
🔥 Angular v18 is now available Excited to share the next milestone in the evolution of Angular: ‣ Experimental zoneless ‣ New home for developers on Angular.dev ‣ Material 3, deferrable views, built-in control flow are now stable ‣ More! blog.angular.io/angular-v18-…
11
25
149
11,072
My random take: you should declare return types for any *exported* function. Return types are part of the function's contact, and the contract should always be used to check the function's behavior, not inferred from it.
13
13
138
36,269
(Thread) It's awesome to see @brandontroberts experimenting with these kinds of concepts, but frustrating to see him getting so much non-constructive pushback.
Instead of rebooting the @Angular components completely, maybe a more incremental approach could be used 😄 Thoughts?
14
14
117
24,630
Slides for my presentation "Rethinking Reactivity" from #NgGlühwein. This talk explored how signals are a great fit for a canonical UI use case of forms, and solve a few issues w/ zone-based data flow. It also touches on the future 🔮 of zoneless Angular bit.ly/rethinking-reactivity
4
38
109
19,844
@Enea_Jahollari on his way to tweet about our PRs
5
7
105
11,211
I finally get to do a @Jean__Meche style tweet! What's stopping you from working like this?
14
1
104
4,862
Such a clear, informative, easy to follow explanation - thanks @joshuamorony, couldn't agree more!
I feel like I can't overstate how important this change will be for the future of @angular 🔗 piped.video/4FkFmn0LmLI
1
11
97
27,551
#ngPoland after party hangout!
2
3
91
6,702
In other @angular news, the experimental `afterRenderEffect` API landed today! This API lets you structure your direct DOM operations as reactive effects that Angular can optimize - and it's compatible with any future DOM-emulation-free SSR!
20
88
4,656
So disappointed that we rolled right through @angular v13.3.7 and didn't celebrate at all!
3
2
83
Getting into the Christmas spirit with @Jean__Meche at NgGlühwein!
1
8
89
3,520
Thanks @WebStormIDE and @PiotrekTomiak in particular for being such a fantastic partner to @Angular!
New @angular Control Flow syntax is simply great and it’s coming soon to WebStorm! I’ve just completed initial, very basic support - lexing and parsing. There’s quite a lot of stuff to do, but it should land in 2023.3!
2
5
79
5,153
Replying to @elecash @angular
ZoneJS!!
4
3
75
1,561
Replying to @DanielGlejzner
This is probably the change on our roadmap that I'm most excited for :) - no `imports` boilerplate / management - templates get way easier to understand - you see where the components/directives are - easier to teach junior devs how to use things - reduced IDE latency
6
3
73
2,560
Seeing all the #NgGlühwein tweets was leaving me with serious FOMO, so I booked a ticket to Vienna. See you all there🍷 @AngularAustria @Michael_Hladky @Jean__Meche @tomastrajan
🎄Important NgGlühwein Update!🎄 Since 🎅 has blessed us with SIX 🤩 speakers for #NgGlühwein we have decided to start earlier! #Angular ⏰ The event will NOW start at 13:00 on 2.12 📍 @Lean_Coders | 1030 Vienna 📅 rsvp bit.ly/3QVcYhX
13
9
70
9,749
This was a fascinating exercise. Syntax inspires a lot of passion in developers. I'm very proud of our evidence-based approach -- I feel like we built a strong quantitative understanding of the tradeoffs while still accounting for the subjective nature of people's preferences.
Remember our control flow RFC? Well, you shared your thoughts and we listened. We're made some important changes to this upcoming feature. Find out more in this blog post by Alex (@synalx): blog.angular.io/meet-angular…
5
2
64
7,607
This has been a long time coming, and I'm excited not just for the signals experience itself, but for everything we'll be able to build on top of it.
The Angular Signals RFC is live and ready for your feedback! ➡️ goo.gle/angular-signals Don't forget to join the live stream tomorrow (4/4/2023 @ 9AM PDT) on the Angular YouTube channel 📺 #angularSignals
8
63
9,187
8️⃣ signal inputs!
6
3
64
3,375
This is an awesome move for the community! WebStorm's Angular support is top notch - you should check it out!
2
3
62
3,314
This, 100%. Things like control flow, function definitions, and major logic paths in the code should be optimized for clarity, not a minimum number of characters.
Same. In the beginning, I was impressed by this type of "smart" code. I also tried to write code like that because I thought it looked cool, and that's how "smart" people do it. Nowadays, I prefer the more verbose code that's clear and easier to read & understand. Mention: Apply common sense. It doesn't mean that I prefer verbose code just for the sake of it or that I never use shorter code if it doesn't affect legibility. Also, don't fixate on these examples from the picture. They're some examples to illustrate the point.
5
4
60
6,585
It's hard - syntax is emotional and polarizing. But to make the framework better, we *need* to explore and we *need* to experiment. I'd like to ask people to approach these discussions with an open mind, and recognize that we all share the goal of improving the state of the art
2
4
52
2,235
Replying to @stephenfluin
Drop the `let i = $index` even: {{ item }} at index {{ $index }} works directly!
2
7
56
1,816
I've been playing around with oxc tonight and WOW is it a well designed API. Well done @boshen_c et al!
1
3
52
14,575
What are you most excited for from @Angular in the next year?
37
12
55
10,863
Haha, my flight back to SF had issues starting one of the engines. The maintenance crew came on board to diagnose & troubleshoot. They did `rm -rf node_modules && npm i` though and it seems to be working now, so we're good to go!
7
4
48
So instead of "I like it!" or "I don't like it!" - take a few minutes to put into words exactly *what* you like or don't like. Even better, make a suggestion for what you'd change to improve the design as you see it.
1
44
1,728
Replying to @Enea_Jahollari
It's here!!! Well, except for the fact that this experiment also breaks every existing application and its tests...
7
43
2,238
I went to the first NgGlühwein last year on a whim, and had a fantastic time with a great group of Angular developers. Very excited to be returning for this year's iteration!
We have our first speaker for NgGlühwein! 💖 I'm excited to announce that @synalx is returning this year! He’ll be talking about 'Change Detection in Modern #Angular'. Dec 14 at 📍 Hainburgerstraße 33, 1030 in Vienna. ⚠️ Limited seats, RSVP now! bit.ly/NgGlühwein-2024
1
8
45
3,183
The best walkthrough of @Angular signals internals that I've seen so far. If you're curious how the magic works, @tomastrajan has got you covered:
👋Hey hey folks! Last Saturday, I've ALMOST made it to #ngGlühwein to give a talk about #Angular Signals, but the nature, and Austrian airlines had other plans 😅🤣 So I only made it to the Q/A panel and to make things right I have recorded the talk and you can find it in the link bellow! Many thanks to @Michael_Hladky and the crew for making an amazing event and was really great meeting @synalx @chrispholder @Jean__Meche @meeroslav @michlbrmly ! Many thanks to @synalx for providing lot of great hints about how to improve the content further into 2024! ▶️ piped.video/watch?v=sbIlz-yu…
2
6
42
4,174
rfcDate.set(4/3/23)
The Angular Signals RFC is coming & we can't wait to discuss this with you all! Here's how you can join the conversation - ⭐Read the RFC & comment on 4/3/23 ⭐ Join us for a special live stream on 4/4/23 @ 9AM PDT on the Angular YouTube Channel piped.video/watch?v=oTFauGIs…
5
41
3,597
Replying to @Armandotrue
To clarify, we have two goals with RxJS and Angular: 1. Angular shouldn't require you to learn/use RxJS. 2. Using RxJS with Angular should feel like a natural, polished experience.
2
3
42
1,430
This is how we think of it too. There are many parts we like about the JSX experience (such as directly referencing components), and we consider how those parts could fit into Angular's syntax. In other words, we want "JSX, the good parts".
6
3
41
14,586
Replying to @nivekcode
I'll actually make a stronger statement here: input transforms should never change the meaning of the input's value. They're meant to coerce/parse/etc, not as a generic map operation.
9
1
42
1,490
Replying to @Enea_Jahollari
Not only has @AScottAngular delivered a number of awesome features (route parameters as inputs 🤯) but behind the scenes, he's delivered so many internal improvements to the router's architecture as well. As a result, the router's code health is the strongest it's ever been.
2
37
1,014
Replying to @walkingriver
There are no performance downsides - call signals to your heart's content!
2
37
771
Actually yes 😛
3
1
35
1,691
Replying to @mfpears
We should chat - I've been thinking about building this as an actual core primitive.
2
1
34
4,461
Thanks to @Jean__Meche for making the actual code change and migration a reality!
1
36
1,223
Replying to @Jean__Meche
I covered my thoughts pretty well in my closing ng-conf talk 🤣
1
1
32
1,724
Ideally both. Zoneless without signals should be *possible* (similar requirements to writing OnPush apps today) Zoneless with signal components should be *delightful* (performant by default, hard/impossible to get wrong, no complex rules to learn)
4
6
33
2,745
Or maybe, HttpClient can create resources directly...
3
4
31
5,698
Replying to @Armandotrue
Hotter take 🌶️🌶️: Impure pipes are just functions you call from the template. Pure pipes are a form of `computed`.
2
1
33
3,835
Starting my journey this morning to Berlin - looking forward to seeing some of the Angular family at the #gdesummit!
1
31
1,646
Replying to @Enea_Jahollari
Neither. I'd `movies` to a service and depend on it directly. No output needed :)
5
2
31
1,425
Maybe Angular should fully deprecate NgModules and instead use non-class-based functional components with JSX....
15
30
6,924
Replying to @brandontroberts
For this logic, I'd say nothing. This is a perfect use case for effect - synchronizing with the outside world. I'd probably avoid fetching data in the component though, by putting the whole fetch in a route resolver and giving the component a sync input() of its data.
2
31
3,101
#ngconf here I come! Boarding to SLC and looking forward to the Angular family reunion!
2
32
1,306
I would always choose standalone components from now on. I might still create NgModules in certain cases, that re-export those standalone components, but there's really no reason to declare/manage components via NgModules.
6
30
Replying to @Arnoud_dv
*This* is exactly how we think about this problem. Not "oh, functions are hip so we need them", but what kind of friction do real developers feel with real code. "this" is a tax for the structure that classes provide. Is it worth it? Maybe. But we'll never know unless we try.
2
2
30
1,211
My top 3: * double importing of dependencies * inability to directly use enums, utility functions, etc. in templates * not being able to transparently refactor part of a template into a new component (without creating a new DOM node)
2
1
29
Replying to @Armandotrue
Strongly opposed - there's actual cost to creating an embedded view with `NgIf`, I don't think you should do that just for aesthetics when you *know* the conditional is always true. I'd prefer doing: get vm() { return viewModel(); } instead of the NgIf.
1
4
27
1,900
Replying to @joshuamorony
Nope :) signal-based components haven't shipped yet for two real reasons: * we decided to focus for v16 on control flow & defer * we pivoted our zoneless approach to not be so focused on signal components. zoneless is now largely a separate project
2
28
4,904
Strong feelings sitting here at SLC airport waiting for my flight back to the bay. Such an amazing, inspiring, hilarious, joyous, phenomenal conference and community. I'm gonna miss you all ❤️ until next year, #ngconf2022!
29
#ngconf road trip is 100 miles from Salt Lake City! @robwormald @hanslatwork @yearofmoo and I are counting them down
3
1
26
Replying to @tomasz_ducin
In a large scale system, I'd even argue, the constraints are far more important than the features. Features provide value. Constraints provide maintainability.
4
4
27
1,096
If anyone's curious, the AsyncPipe uses `null` because Dart doesn't have `undefined`. Yes, really.
4
1
29
1,945
He said wrong answers only.
6
25
1,323
Replying to @tim_deschryver
Coming (really) soon!
3
27
768
Replying to @mfpears
private readonly private readonly private readonly private readonly private readonly private readonly private readonly private readonly private readonly private readonly private readonly private readonly protected readonly private readonly private readonly
4
27
902
There is no final form of Angular. Zoneless is not the last core upgrade. We'll continue to innovate and improve the fw one step at a time, and we're okay making bigger changes when it makes sense. We know how to do that while balancing the benefits w/ impact on existing code.
2
1
25
972
If anyone's curious, the distinction we make is so that `computed`s can be created anywhere and garbage collected when they're no longer referenced, which most signal libraries don't support.
3
1
28
1,425
Replying to @DanielGlejzner
More nuanced: effect is how you link reactive things to non-reactive things. It *can* be used to synchronize _within_ the reactive world, but it's almost always preferred to keep things purely reactive via `computed`.
3
2
25
1,488
Signal based forms will be landing in Angular on February 30th, 2025.
2
1
24
537
I need to write a blog post on this pattern. Working title: "Learning to Love the Signal Sandwich"
1
25
522
Misko was considering removing it at some point, but we decided against it. It will not be supported by signal components though.
3
25
2,914
It's obvious, isn't it? The control flow syntax gave it away. Angular is changing its name to @gular.
2
24
1,423
And if you're an RxJS master, you'll be able to leverage our RxJS interop to compose Observable inputs, queries, lifecycles into your streams.
1
24
4,169
Replying to @DanielGlejzner
I'd say it depends. If the app is code healthy, state mgmt is clear, and devs are able to reason about data flow, refactoring has limited value. But most mature apps have tech debt, and places where the code is hard to reason about, and signals can help address those problems.
1
20
710
Replying to @tomastrajan
Small nit: Angular components don't "re-render". Re-rendering is a vdom/React thing with performance implications that aren't applicable to Angular's change detection model.
2
2
23
1,975
Replying to @Armandotrue
Personally, I don't find it useful/valuable at all.
5
22
755
Hello #ngconfHardwired friends! The slides to my talk (Stronger Type-Checking in Templates With Ivy) is right here: bit.ly/strictTemplates)
8
22
Additionally, the field decorators (@Input, @Output, etc) are fundamentally type-unsafe. The type inference alone that we get from `input` & friends is a strong reason to switch.
1
1
21
1,637
Replying to @DanielGlejzner
Haha. We don't really think in absolutes of "X technology/paradigm is better than Y". Our goal is always to help developers build their applications more effectively - that's it.
1
19
1,970
Replying to @eugeniyoz
At one point, we had plans to migrate `[ngClass]` to `[class]` automatically. But other priorities came up... Maybe it's time to revisit that.
1
21
695
Replying to @mgechev
ExpressionChangedBeforeItWasChecked
1
19
997
Replying to @SergeyGultyayev
When we have big launches like v16 we coordinate in a dedicated slack channel: publishing the packages, AIO updates, etc. This includes comms like the blog post and tweets. For the comms, we have an explicit goal to be faster than @Enea_Jahollari. We don't always win.
1
1
21
1,882
It's not the @ngcruise but it'll do!
1
1
19
Brb, updating the RFC title to "Built-in Konrollflussprimitive"...
2
18
577
Replying to @Jean__Meche
The old code (TemplateDefinitionBuilder) evolved out of the original Ivy prototype. It was never designed to support the level of complexity that got layered into it, and the result is a monolith that's difficult to change. The rewrite will make experimentation way easier :)
1
1
20
571
Matthieu, I'm so glad you joined - it was fantastic getting to hang out in person! Next time, we'll get you on stage for a talk of your own.
19
474
Rebase or merge... 🤷‍♂️ I prefer rebases, but there are good arguments for both. Just be consistent. Either way though, tests should pass on *every* commit which makes it upstream - anything else is madness.
2
20
2,468
Replying to @Jean__Meche
Angular is now known as X.
4
1
19
1,309
I just ran the 1000x12 dynamic (large web app) benchmark. Without accounting for this algorithmic quirk, Angular takes 13.6s on my M1 Mac. With a patch to treat signals as watched, it's 480ms, close to Vue (420ms).
1
18
1,361
Replying to @AngularUniv
Minor point: in the RFC we describe "signal components" which are a different thing than "components which use signal inputs, queries, etc". Signal components are more like `ChangeDetectionStrategy.Signals`.
2
1
19
633
Yep, this is a measurement quirk: our signals don't *push* dirtiness unless watched by an effect (like they would be in apps). The dynamic benchmark creates large graphs of pure computeds w/o effects. This doesn't matter for some signal libs, but does for Angular's.
2
1
19
1,267
Definitely curious on people's opinions here, but I'd love for everyone to get specific! If you can explain *what* you like/don't like, that's awesome. If you can explain *why*, even better!
22
2
19
3,708
Replying to @DanielGlejzner
😂 That's really the problem. JSX syntax is designed for React, and Angular isn't a React-shaped framework.
1
18
507
Replying to @Nartc1410
My ideal API: constructor(private dep = inject(Dep)) {...} * no need to compile DI - it works naturally via platform APIs * in tests, you can use DI too if desired * or provide mocks for some/all dependencies * when inheriting, calling `super()` with no args just works
2
2
18
1,204