I attended ng-conf 2022 last month. It was the fourth ng-conf I’ve attended in person, though it was the first in-person round of ng-conf since COVID hit. A lot has changed in the Angular community and the world in general since the last one in 2019, but ng-conf came back strong.
Also, someone else gathered together all the slide links and some of the top Discord conversation into a single file.
State of Angular
While Angular has definitely matured, it seems to be coming out of the Ivy era with a lot of innovation. The introduction of standalone components would not have been possible without Ivy, and the addition of typed reactive forms would not have been possible without advances in TypeScript.
I had the chance to talk with Jeremy Elbourn, who is now the technical lead for all of Angular, and he says that the focus is going to be on developer experience now. They know that there are trade-offs and opportunity costs about focusing on that instead of other things (and Jeremy had a really interesting talk about the tradeoffs of their design decisions), but they think it’s the right focus for now.
The role of RxJS in Angular was a hot topic, as usual. According to Jeremy, they never really intended the presence of RxJS in Angular to be a signal that reactive programming was the way to write Angular applications. They used RxJS for specific needs, but that doesn’t mean we all need to be using it. In fact, Alex Rickabaugh said in the Q&A that the fetch Promise-based API didn’t exist when they wrote HttpClient, and they might not have used Observables for http if it were available then. There was a hint that they might reconsider the Http API and might add a Promise-based alternative. So, while my company strongly endorses reactive programming in our Angular Boot Camp, the core Angular team aren’t as sold on it as we are.
They are looking into bringing a Vite-inspired builder to Angular. An early version of a new build process is available by switching the builder from “@angular-devkit/build-angular:browser” to “@angular-devkit/build-angular:browser-esbuild”, and early benchmarks suggest this reduces build times by 57%.
Angular and Bazel seems to be a dead idea.
I asked a few team members about standalone components, and what best practices were (mass conversion, scattershot, etc). The main answer is that guidance will be coming when it leaves developer preview, but Jessica Janiuk said that scattershot is ok (it would be fine to use it for new components while leaving the old ones in NgModules), but that there would be performance advantages to having an app without any NgModules.
When I asked Jeremy about the history of NgModules and that it was weird that they arrived in an RC, he agreed that it was not what an RC should be, but that he had discovered too late in the Angular 2 release cycle that the pre-Ivy architecture required it. They shouldn’t have pushed it in so late, but they had already announced the first RC in preparation for a conference.
I won’t go over every talk, but here are some notable ones.
- ANGULAR TEAM KEYNOTE – Sarah Drasner had a very interesting discussion about how Angular was inspired by other frameworks and how Angular inspires the other ones, too. So, Angular will be inspired by the DX of the other frameworks and will continue to grow. Another possible future innovation will be a composable API for directives, allowing multiple inheritance for directives. Minko Gechev talked about improved error messages, improved change detection and dev tools, and the Vite-inspired build that I mentioned earlier.
- NgRx Feature Creator – This was a short talk by a new member of the core NgRx team about a new API simplification that I had missed. I was so inspired by this talk that I’ve already modified my client’s application to use this to remove code duplication and unnecessary manually-written selectors.
- Standalone Components: The Motivation – Good overview of the internals, implications, and future possibilities of Standalone Components by Pawel Kozlowski of the Angular core team.
- Partially Zoneless – Performance tuning without big bang refactorings – Mike Hladky showed how to use a library that he has developed which allows zone-less Angular apps with great performance. Interesting, but I don’t think I’ll jump on it.
- Angular: A design review 10 years later – Probably the best talk of the conference. Jeremy Elbourn and Alex Rickabaugh went over five major early design decisions in Angular and what parts went well and what didn’t. I didn’t take notes on this, but I wish I did. I’ll have to re-watch it. Slides
- LeTS Play A Game 🪚 – Craig Spence created a horror-based TypeScript lesson inspired by the Saw movies. Interesting, but I preferred his Frozen-based one from a couple years ago. Slides
- Angular Community Feud Game Show – Ok, not really a talk, but fun.
- Future-Proof Your Company by Effectively Scaling Engineering Teams – I didn’t watch this one live, but I watched it later. This was basically a lesson in how to be a good development manager/team lead from Jennifer Wadella. Good stuff here about how to use PRs to teach, etc. Slides
- D & D Actual Play Viewing – Also not a talk, but entertaining. Jeremy Elbourn DM’d a 1-hour session in which Frosty (one of the main organizers of ng-conf) and Angular core team members Emma Twersky, Mark Thompson, and Jessica Janiuk sought the Amethyst of Accessibility, the Pearl of Performance, and the Sapphire of Security. The punniness was outstanding, and Jeremy released the DM Notes and Player Cards.
- Simplifying deep Angular forms with DI-equipped custom components – This was Rafael Mestre’s talk. Rafael used to work with me, and I briefly visited him last year in Puerto Rico. He has since moved on to another company, but it was good to see someone I’d previously mentored make the big stage!
- B.L.A.Z.I.N.G. – 7 Core principles of fast Angular applications – A very entertaining talk by Ady Ngom, a Senegalese developer living in Atlanta. His charisma reminded me of Sani Yusuf.
- Community Keynote – Lots of different sub-talks here, but some notes:
The Nrwl section by Jeff Cross and Johanna Pearce made me realize that I’d never tried Nx cloud, and I’ll have to try that on my client project to improve performance. I talked with Johanna and Philip Fulcher (also of Nrwl) later.
Mike Ryan and Brandon Roberts talked about some new features of NgRx (a new boilerplate reducing function, new linting rules, and support for standalone component architecture). Like with the Feature Creator, I’ve already started using the NgRx eslint rules and the Action Group Creator on my client project.
Two people from a NativeScript client gave a short presentation that I don’t really remember, except that there was one slide that had a background with yellow on the bottom and blue on the top. I recognized the Ukrainian flag that was subtly snuck in for 10 seconds. I asked them about it later, and they didn’t even know what I was talking about! One of their teammates had snuck in Ukrainian solidarity, and they didn’t even realize it. However, their teammate was tickled that someone noticed.
Ben Lesh gave a recorded update on RxJS. His main advice was to move to v7.5.4 because of improved performance, but he also previewed v8.
Joe Eames announced Endbridge, which is a tool from HeroDevs that enables running old Protractor tests directly in Cypress. It’s in alpha.
- Accessibility! is! Important! – Angular core team members Emma Twersky and Zach Arend gave an overview of the state of a11y in Angular. There’s a lot more my team can do more on this. Slides
- Image Optimization Best Practices with Angular – Kara Erickson of the Chrome team revealed the new optimized image API that came out in 14.2. We should really take these lessons in for any image-heavy app. Slides
- I Let Strangers Design My Slides using NgRx Component Store – Mike Ryan had a hilarious and informative talk about Component Store in which all of the graphics were created by the Mechanical Turk.
- Form Validation Done Right – Ward Bell continued his advocacy for Template-Driven Forms, this time by showing a pattern he uses built on Vest to create a model validator and directives to apply validation without writing lots of Angular validators. Repo
- Angular’s Future Without NgModules: Architectures with Standalone Components – Manfred Steyer talked about the patterns we’ll likely use with standalone components. Slides
- RxJS Best Practices Aren’t Always Black and White – Deborah Kurata gave a good foundational talk on switchMap/mergeMap/concatMap and zip/combineLatest, etc., but I did surprise her with the applause that prompted this tweet:
Speakers and the Angular Team
In years past, they had expert rooms, in which a group of speakers who had sometimes-related topics were scheduled to be on a panel together in a small presentation room in another part of the hotel. They did it differently this time.
This time, they had breakfasts and lunches with the speakers and Angular team in the Grand Salon. So, most attendees did the bigger buffet line in the bigger room, but I did all six of those meals in the smaller room. I got to have really good conversations with Simona Cotin, Emma Twerske, Johanna Pearce, Mark Thompson, Jessica Janiuk, Deborah Kurata, Doug Parker, Jennifer Wadella, and probably more.
I really liked this model, because it was much less formal. Some of the speakers had all of their meals there, and it was good to get to know them better.
Additionally, at dinners, the hallway track, and after-dinner drinks, I got to meet or reconnect with Mike Ryan, Sam Julien, Alyssa Nicoll, Mike Brocci, Ady Ngom, Brian Love, Misko Hevery, Mike Hladky, Lara Newsome, Kim Maida, Craig Spence, Shai Reznik, Minko Gechev, Jeff Cross, and probably more.
The best swag was from HeroDevs. Their shirt design was very popular – I saw many attendees wearing them on the 2nd and 3rd day. Part of it is that HeroDevs brought a lot of them (apparently, over 1000), so everyone could have one. But also, it was an attractive design:
There’s a small mention of HeroDevs on the back, but the alternate-color Angular logo just looks good (better in person than in the photo). I asked Frosty about the color scheme (it reminds me of the colors of the bisexual flag or the trans flag), and he said it’s actually the same gradient as the HeroDevs main logo, and he likes that it has a progressive vibe.
HeroDevs also gave everyone a branded rubber ducky, which was a cute idea. They also had nice fitted baseball caps for those willing to sign up for recruiter emails.
Nrwl was probably second on the swag game, with narwhal bath toys and light-up stress toys.
Otherwise, the swag was pretty standard: shirts, socks, candy, pens, etc.
State of ng-conf
Overall, the conference was smaller than before. They apparently sold about 1000 tickets, which is down from years past, but still enough to cover costs.
They had to scale things back as a result, though. In years past, door prizes announced during breaks would be things like electronics and drones, etc. This time, they were creative with a lot of things that didn’t actually cost anything, like temporary rights to a special VIP chair at the front, approver rights to PRs on the Angular repo (yes, seriously), a special mention in the next Nx release notes, a personal Bronze sponsorship for the 2023 conference, an NFT of the community photo, etc. There were also a lot of ag-grid/ng-conf gift cards given out, but most of it was the non-cost creative items.
With the smaller attendance, they had only two tracks on fair day instead of 5 in the past. The Nrwl-sponsored karaoke was the only vendor-sponsored party. There was nothing analogous to the surprise breakdance troupe, etc. However, I think it was still a very enjoyable event, and I doubt any of the first-time attendees had any idea of what they missed.
- Wednesday night, my co-workers and I decided to try to join a group for dinner. We ended up finding the group led by Shai Resnick and joined them. However, they didn’t know where to go, so I suggested Gracie’s, one of my company’s standards. To my surprise, no one else knew it.
Anyway, we went there with a group of about 25. I was nervous that they wouldn’t be able to get us all in, but they eventually did.
It was a really good conversation – We were able to network with a lot of speakers and GDEs there, including Misko Hevery, Shai Resnick, Ward Bell, Alyssa Nicoll, Mike Hladky, Johanna Pearce, and Jay Cooper Bell.
- My co-worker Amber asked a question during the Angular Team Q&A about women and girls in tech, and it got possibly the most engagement of any question asked in the whole session (go Amber!).
It was mentioned in response to her question that all four managers of the Angular team are women (Simona Cotin, Sarah Drasner, Madleina Scheidegger, and another that I don’t remember). Additionally, during one of the “Lunch with Speakers” sessions, Amber and I were sitting at a table with three speakers who were all women – Simona, Emma Twerske (core Angular), and Johanna Pearce (Nrwl).
I was really happy to have helped introduce Amber to a lot of the speakers and other people in the community. Amber had asked a few months ago about the gender balance at the conference, and we told her it would be better than she might fear.
I’m glad that she was able to see so many women in important positions in the community and that our claims about the community were validated.
- The conference had a notable pro-inclusion vibe. Many vendors had variants of their stickers with pride backgrounds (auth0, liveloveapp, Nrwl, etc.), and Angular core team member Jessica Janiuk created and shared Angular stickers with the pride flag as as the background:
Additionally, there were stickers available to put your pronouns on your badge, and many speakers included their pronouns on their intro slides.
I was personally very happy to see all of this.
- One of the social events was pub trivia hosted by Trivia with Budds. I won!
ng-conf is back. It’s smaller than it used to be, but it proved that it can still be a great place to learn, a fun place to network, and a model for inclusion. I look forward to next year.