The best thing I always liked about when I used to work on an angular codebase, was that there wasn't really debates about what library to use, you just use angular.
As someone who is stuck with Angular for a while (and likely for a few more years) I've been super excited. This is really not the channel to learn Angular from but there are other influencers that go over more changes.
Angular is the most intuitive framework/syntax. I have ever worked with. React on the other hand is a nightmare of useContext, useEffect and useState hooks which makes the code extremely hard to read the code.
I started frontend development when Angular was brand new and support for Angular.JS was still a thing. Back then your only major frameworks were Ember, Angular (JS) and React. What can I say? I briefly looked at React and til today never used it. JSX is just awful in so many ways. For me the worst part is that it kinda locks you in (granted vue now supports also JSX). If you stick with Angular, Svelte, Vue or most of the other frameworks meaning you write normal HTML code you can easily switch frameworks if needed
I'm super hyped for Angular 17 and I think they're pointing at some really cool stuff that will get more fleshed out in subsequent versions. Angular 18-20 is gonna be great.
I understand template can be annoying. But everything else is so much simpler than in react. Context is such a pain while injectable is so easy. useEffect is very limited compare to effect() or rxjs's operators. Form state / validation is very hard in react compare to FormModule. And more importantly directive is not a thing in react, you cannot compose component logic... So overall I think, template declaration is a small price to pay to get all of this.
The worst thing being an Angular developer is when you have new coworkers that was react developers join your team, and messes up your codebase. it is so pain when your boss prior features to be delivered as fast as possible, and these newcomers just throw a lot of messy codes in your previous works. Everything becomes fucked up when you comeback to your code. Another worse thing is your company dont even have someone who want to review your codes, just as long as you use angular which state to be very flexible in large projects. Well, that decisions fucked us apart, I hate being angular dev bcos of this .
This comment speaks to my soul. We recently had a SENIOR dev join our team that rants and raves about React then takes a fat shit on our Angular project.
Having a program that expresses that “this happens then this happens then this happens” is imperative programming. Then he says declarative has been working for us as devs. Like, in the most common declarative language, SQL, you’re not gonna express the steps that are taken to get your data. You just tell it what you want and it just does it, it’s “implicit”, meaning the inner mechanics are abstracted away. I feel like these statements are contradictory. Does anyone have a different perspective on it? I hope I’m not misunderstanding him
I came here to say the same thing. I find react to be a lot more imperative than Angular. That said: using FormModule is always a headache when I haven't used angular in a while, so if I ignore the contradictory words I can understand what he means here.
I'm a React dev since it dropped in 2015. I was forced to lead an angular team for a project never having built a single app with Angular. We're also stuck on Angular 14 for reasons I shall not speak of. I gotta say, I thought it was going to be absolutely torture but in all honestly, *ahem* Angular is not *that* bad. React has many more weird "oh you gotta be an experienced React dev to know that" quirks to it than Angular. Theo talks about binding implicit behavior, but really how is that different than React hooks? It's an import and a wrapper bound to functionality that you have to know what it does and why and it's in no way explicit. Angular feels very stable (it should but still). I think though, my opinion may have been different if it were Angular 13 which doesn't have standalone components. The NG Modules are just this whole entire other unnecessary layer of boilerplate (most of which still gets moved into the standalone component but at least it's not separate). I don't hate Angular. I don't see that team moving to v17 any time soon so I probably won't get to try out the latest features.
Totally, probably Theo is a lot more familiar with the implicit stuff in Nextjs and that’s the reason he sees issues on that side in Angular. Also, almost no one uses ngModel now anyway haha
the react hook model is still declarative. you have to call useeffect or usestate explicitly. i do agree that they’re definitely confusing and opaque to new react devs, but it’s not the same as the invisible angular behavior that Theo was talking about
@@levi2408also as I said, that two way data binding is generally frowned upon in angular nowadays. The “correct” way to use forms is via the their reactive forms constructs which are explicit by default.
Yeah I started with angular and went to a few diff frameworks... That left me kinda wanting with his freeform they were. I did really appreciate angular approach with the structure. Just made alot more sense to me.
Worked with all the major ui frameworks and libraries, angular has been my favorite. Especially when it comes to maintaining someone elses code. Angular has been declining for a while now, both from enthusiasts and enterprise usage standpoint but this could help it stop declining and maybe grow further. One message I get from this update/upgrade is that, choosing angular won't leave us stranded or abandoned. In all honesty, excited.
As someone leading a small development team and having experience with both React and Angular, I find that React has its challenges. In my view, Angular is more essential, providing a structured approach for junior developers to learn and follow conventions, ensuring better code quality. React, while allowing skilled engineers to create performant applications, can lead to pitfalls and a flood of self-proclaimed "React developers," making it challenging to maintain high-quality code standards. Additionally, for intricate applications involving multiple engineers, I believe React may not be the optimal choice. Angular's structured conventions and approach prove more beneficial in handling the complexities of such projects, ensuring a smoother collaboration among team members.
Nice from you to talk about it knowing you are not the biggest Angular fan. But you clearly went too fast on that one and missed a lot of stuff. The new control flow being probably the biggest miss. The perf screenshot you shown for example is when you use the new for loop provided by the new control flow. That has nothing to do with signals. They were able to improve it vecause they are not using the whole angular overhead from the template system. It's done in a way lower level. They also added a @defer syntax that makes lazily loading parts of components very easy. That part especially will reduce a ton of boilerplate. You also missed the implementation of esbuild / vite which will improve massively build / serve times that were always a negative part of the framework. Looks like they are also starting to look at SSR more actively, meaning it will be probably interesting to follow their progress in next versions. Plus they improved the v16 signals which are not experimental features anymore. They improved the syntax for input / output aswel. Plus other less important updates. Clearly, when they say it's "Angular Renaissance" they are clearly not lying. Since v15, they have done a lot of very nice improvements for DX. And they will keep doing it.
I've worked with Angular for a few years and at the time it always took long to onboard new people to the code base and the live reload was fairly slow. It's great to see the project improve and evolve to the point where performance and bloatedness may no longer be a concern. When I went from Angular 2 to React (js, class components, prop-types) I honestly thought it was a downgrade in developer experience. React has come a long way since then and I wish the same to Angular.
I do believe kittens are almost perfect. If perfect, they would be hypoallergenic so I COULD HOLD THEM. I might literally go out holding a kitten if things go apocalyptic. What better way? Okay maybe kittens are perfect. Just don't tell GPT9. @@ivymuncher
5:55 - you misunderstood. Angular 17 still uses change detection, so the transitions to "real signals" where you cherry pick updates is not yet complete. I believe that did other dom-related optimization, plus - the signals API itself is more performant than its rxjs counterpart, because it's more lazy on when it actually needs to run stuff.
If performance is better now, I can't imagine how much better it might be sith signal based components. Angular might find itself within a reach of Solid.
Declarative gets thrown around a lot in this but arguable 2 way binding like angular and vue is more declarative than setState. The template model split in angular has always felt very weird. SFCs like svelte and Vue is a much better approach imo
SFC is the only real missing piece of the puzzle for me. Once Angular gets SFC, it might just become the best CSR framework out there by a long shot. For now, I still stick with vue for the more approachable and straightforward syntax, but for scalability, Angular is hard to argue with.
Angular has single file components already. Since v2. Also 2-way data binding is just as imperative as setState. Both are modifying a thing that's declared somewhere else. Look up my talk at UtahJS for a precise explanation.
Happy for the Angular community, it was well needed! I was also surprised to see Vue3 so performant on this benchmark. It's will be sexy as fuck to see what it can accomplish with a solid-like compiling strategy (Vapor mode)...😋
Important to point out that Angular’s speed improvements in this release have nothing to do with signals. In fact, adding signals to Angular’s diffing model introduces a lot of overhead and makes it significantly slower. The speed improvements come from the new control flow implementation, which finally added an optimized swap rows implementation. The benchmark that shows Angular is fast is using the new control flow with manual state management (no Zone.js, RxJS, or Signals)
I'll probably just remain on vue, it's simple, it's fast to code in, es9ecially with libs like vuetify getting a basic functioning app up and running is really simple and fast, and nuxt is a really nice experience to, sorry angular :3
The example you showcased its pretty simple and intuitive for an angular dev. just because you are not used to the syntax it doesnt mean you can generalize and say "this doesnt work for us 'web developers'". why make this video if you are narrow minded towards angular... even in the first 5s you already look bad for saying that... Also, 04:30 since when are angular docs outdated???? Next time just show the graph that shows its faster than react and friends without biased opinions ty
Talking about the push back - There was some concerns, yes. But a lot of RFCs and public discussions plus developer previews made the transition as smooth as it could be - This is my personal opinion as someone part of the community
Hi, Angular doesn‘t add more magic to the Syntax it‘s just a more mature framework than others. Other frameworks maybe implicitly or statically add something like a formsmodule to provide form binding functionality it‘s just hidden. Also the example is maybe not the best for you for simplicity because they could only just have shown a 2 way binding vor the native value attribute, binding works without the formsmodule. I‘m developing web since 25 years and there was always html. I like that angular stays close with html, the source mother so to say and tries to extend it, rather than change it. I think ever web dev should first try to do double binding native with vanilla JavaScript. Add event listeners set value. Then choose the framework. The () syntax for getting the value with an change event and the [] for setting the value feel very simple and natural to me, that’s the basics. The formsmodule adds a lot form validation and other things behind. You don’t need it just for the binding part. So not to mix these 2 different things.
indeed. Also angular forms directived does not just add binding to the elements but defines APIs to abstract interaction with controls, including parent child relationship, that can be expressed in your code without weird stuff. I love how people like all those magic of svelte and don't find how the Angular sticking to the Dom API is way better. Also Angular does not force you to a particular style so junior devs can work in a classic imperative manner and then grow and work declarative after. People want declarative programming but it seems everyone is scared about Rx.js
State management is so precise. When things get too gross I can roll it into a service, use a private behavior subject with a public observable as a facade. I’ll normally expose a function to refetch the data as well on that service. With standalone components all of that extra weight is gone so I find myself creating these new layers effortlessly.
Sounds good until you realize you need distinct until changed, debounce time with combined latest, share replay, actually publish replay and ref count, but even that has issues. RxJS has issues with synchronous states. It's not performant without a lot of work. On the other hand, it's totally declarative, and that's usually worth it.
@@mfpearsthat's why the new way of doing things is : synchronous stuff will be done using signals, asynchronous stuff will be done using RxJs. And you can combine both when you need.
this seems neat, but the issue i have is react and react like systems are (for better or worse) the norm. so as a person who is young in their dev journey, i'm much much more inclined to checkout solid js over angular. tho nice to see they're making progress
Angular is designed for enterprise scale applications. It's not really designed for toy projects or side hustles. The reason React got so popular is because it's flexible, while Angular is rigid. Flexibility is great for prototyping and building things up to a certain scale, but past that point rigidity helps more than it gets in the way while flexibility makes it easier to shoot yourself in the foot rather than efficiently solve the problem. One of the most important things to learn as a dev is to recognize which tools are best suited for a project's needs and the human resources you have available to implement the project.
1:45 I think once you understand directives and the power of it (including the input/ output mechanic) it's no more magic at all. Then it is obvious. And before someone cries about to deep learning curve. For a non trained programmer the concept of higher order functions can be as confusing
Working with Angular signals is the most comfortable front end dev experience I've had since I started. I still don't like fetching and dealing with external data in Angular, but once it's in the app through a service, it is LOVELY to pass around and compute things with signals.
After 6 years using React, I started using Angular this year in some projects (React is still my main frontend framework). What I can say is that, it's been a great experience, big change to increase your understanding about frontend
"Declarative methods of describing things" have been present in Angular since version 2... Except JSX which is a huge pain in the ass. Templating is sooo much more powerful in NG and other frameworks. Also, OOP is a nice paradigm for UI because UI is stateful. So Angular is a mix of both FP and OOP. OOP to keep internal state, FP to communicate with other components and the outside world. It's that simple. Always has been.
The main question is if there is IDE support for the custom DSL that is Angular. I really like Svelte, but the missing IDE Support in Intellij makes it impossible for me to switch to it. Do not recommend vscode, it sucks, I switched from vscode to Intellij because of the better refactoring capabilieties.
idea beta already support the syntax. Angular provide a language server for vscode so its support is out. Indeed ide should support it, but the same was for structural directive declaration. Probably also simpler to implement with this flow
Because Theo is a promoter of React. He can't go against his own interests :) Angular will be the best solution for enterprice solutions for a very long time. React was and still is just a matter of popularity and not of final quality. In general, one should always choose a technology according to the requirement and not according to popularity, otherwise it will not serve the purpose it is supposed to.
@@weroroSure, but he still decided to make a video about it... So I expect some kind of minimal research. A lot of people get their only information of Angular from this channel.
Been using Angular since version 2. Didn't have a heartbreak since I haven't used AngularJS at all, so I went in with a clear mind. And I haven't stopped using it since. From experience, our Angular codebases are much more predictable and thought out than react ones that I've worked on. At one point, one of our react projects had two routing libraries and two different http libs ajax and axios plus few native fetch calls.(to be fair, this project was migrated over from using jQuery)
I'm a front-end developer who started with Angular, worked with it for 3 years, and about 1 year ago, I started working with React. For some reason, React has been much more difficult for me, than Angular. Now I do both and I'm happy about it)
Vue does not get enough love! Vue is absolutely smashing it…as you noticed a little in the perf table. It’ll only get faster when Vue Vapor mode is a thing. Still don’t like Angular…it’s too implicit as you say. FE devs have converged on declarative templating because that’s how HTML works too.
Vue gang. There are so many unique features about vue that sound random but really make it a beast for doing anything you need. Need a static site with no build step? Vue can be imported over CDN. SFC template directives like v-for not good enough to express your rendering logic? Just use a single jsx component and the rest SFC. (Soon) need hyper performance like solid? Just use vapor mode. Vue has won my heart in so many ways and makes other frameworks look like theyve lost the plot in many ways.
I wanted to switch from Angular to React quite a few times, mostly because of templating system in React, which to me is much cleaner than Angular. But when it comes to state management... No thank you, I like my services and signals. Is Redux still a thing?
What you call "implicit import" is really not the worse thing about angular, and has been done much better after they introduced standalones. This is basically like doing "import" at the beginning of the file. The only different is there is a different symbol that represents the thing in the template (in that case "ngModel" vs "FormsModule"). I think I've heard that they are working on improving it
@@ivan.jeremic I wish I could, I'm stuck on a legacy project in a job I can't leave do to a visa. I agree that react is better, but I'm still excited about Angular's advancement. They go in a very good direction. I also believe that signals are better than rerendering, but I prefer the functional API like you said.
module just define directives like ngModel and that directive define the behaviour of your form field. Directives of this type do carry the logic and are bound to the elements. Also in forms, Angular has a straight API for handling controls so you can plug any custom control with ngModel or Reactive form by simply implent an interface. Maybe is not clear at first, but for starter is just a drop in of a directive in the form template while more advanced usages or library creator can implement and work around that strict API. Api Which has been preserved from version to version. Is solo easy and powerful form handling in Angular.
I don't understand why performance is always the first thing that is talked about. Let's be real here: the RENDERING performance of all modern JS-frameworks is blazing fast up to a point where you will see no noticeable difference between the fastest (let's say Solid) and the slowest (let's say older versions of Angular) in 99,9% of real-world scenarios. Because real world applications do rarely insert 1000 rows at once. Unless you are responding to very-high-volume-events (like mouse movement) the rendering performance is just soooooooooo insignificant in my opinion. When an application feels slow it's almost never because of rendering performance. Most of the time it's the http call or some bad decisions (not showing spinners, etc.) The performance gains (especially with upcoming signal-based-components) is awesome, but very much irrelevant for almost everyone in my humble opinion. The REAL awesome thing about Signals for me is that it lowers the barrier of entrance. No longer do you need to understand RXJS to get started with Angular and that's a huge plus. Also reactive-primitives are just awesome to work with (one of the reasons I love Vue) and will make code much easier to write AND maintain.
Hi Bro, I would love you to investigate, the most important guy behind it is Misko. Be aware people from Finnland bring in so much huge expertise as they have perfect education. This guy inventented quik framework inthe meantime. So now the elephant in the room is, if he put this new knowledge back to his old angular project? As it might look that it is like that. I would love you to do another angular episode to clear that up as I have much respect to Misko and his philosophies. Thx and best
I dont mind Angular syntax itself but I definitely hope they switch to Vue/Svelte style sfc instead of React style, Angular team is now discussing component authoring experience so who knows what they will come up with
@@ivan.jeremic I don't get your comment, I'm saying I hope angular eventually imitates vue/svelte authoring instead of React and your reply is: "This has nothing to do with React style"? 🤔
I honestly can't stand Angular, but in my area the job market is HOT for Angular devs, and they pay very very well. I might just have to bite the bullet and get proficient....
I am building a full stack no code/low code solution built on top of Angular and PrimeNG. So yes I am exited a future version of my tool will be more performant. Of course I will build a version based on React and Vue too in the far future. But the targets of my solution are not the kind of stuff you build with all the cool frameworks and meta frameworks. The target of my tool is CRUD driven business applications, not websites, marketplaces, webshops or private customer facing web apps.
I like angular well, when React developers are busy untangling their JSX, Angular devs are sipping coffee and enjoying the simplicity of just adding (ng) and removing (ng) from their templates. It's like Angular is living in 3023, while React is still trying to debug in 2023!
I'm excited. the new control-flow-syntax looks much cleaner than *ngIf / *ngFor, which implicitly creates and wrapping ng-template. By now I know Angular in and out, but for new colleagues this whole implicit "magic" is really hard to grasp. And I remember how much I hated it. I really appreciate the DX improvements and the lower entry barriers
I personally loves the microsytax because I never have to use if/else/switch Only a "for" injecting dynamically components using "if" => Every business logic is framework agnostic and centralized
things that turned me off about angular when i got into front end was the teleporting of data, it felt like to much magic happens and have no idea where my values are going
I'm actively looking for work and turned down a recruiter for a position that was full stack with Angular. I do the same fore full stack with React. I build business apps, I don't need anything as complicated as React/Angular. Simple HTMX with web components gets the job done. I don't know why we like to make the web so complicated. And I'm good at JavaScript/TypeScript. I build offline first web apps in my spare time. But they're simple and easy to work with. Some of the infrastructure takes a little bit of work, but the apps themselves, easy peasy.
If they can get rid of change detection then that's a massive win. I really like the Angular in general, but the numerous changed after checked errors are annoying, and often hard to get rid of in a clean way when it's coming from components you don't have control over.
People really don't understand angular change detection. It's not a change detection issue, it's a zone.js issue. And they are going more and more into that direction: zoneless angular. Don't mix terms, change detection is used by any framework they just not necessarily call it like that. Zone.js is the lib responsible of how DOM tree is rendered.
Fair take. As an Angular developer, after 50 millions circles of hate-love on JSX I've landed on loving it. JSX is by default more declarative than the template syntax for sure.
Weird thumbnail considering Angular has beaten React+Redux performance for years lol. I mean Angular is still being compared to vanilla React when in reality it should usually be compared to React+Redux.
Tbh I have never left angular in reality. When everyone switched to react there was so much demand for angular devs, some of the react devs looks like they have returned since it is not as hot as what it was before. But I've only had to pick up react once and the rest have been angular. So I've technically never left.
Firstly, the learning curve for Angular is high compared to other frameworks, and it seems Google decided to add more new features. Yeah, this will definitely help entry-level developers now that they have a lot on their plate to learn. It appears they are actively discouraging new people from learning this framework; remember Angular was the only popular framework that many developers said they are not willing to work with again in the JS survey.
what makes Angular particularly hard? I am not much of a web developer so to me they all look more or less the same except for how they decide to render things and where
Because react is super easy compared to something like svelte /s The thing is, react devs will use any excuse to not use better tools than the only one they learned during 2-week bootcamp. That's why the web went to sh*t but it is what it is. Thankfully more and more people come around that react is not the way. It's the circle of tech, we're back in glorious php days😂
I'm most happy of the new documentation. But I feel like Angular cannot become better without huge breaking changes. It has insane boilerplate everywhere: Writing a new component either requires running a CLI command or copying another component and renaming everything, I don't think anyone knows how to write an an Angular component from memory.
It's not really hard if you practice for a bit. Of course, if all you've been doing is copy & pasting, then you'll never remember it. It's important to step back and know what you're actually doing.
Before angular felt like another language itself if we compare it withe other js framework now its becoming like the other while improving performance and embracing new techs
React should do the same. We need something official for signals that will force the react libs to slowly adopt it. Preact signals are not adopted unfortunately.
I'm a proud Angular developer, however I dont understand why they still impose on having this separet syntax in template. I think they shouldve shamelessly stolen reacts approach with having regular javascript syntax in template. But not really knowing what goes on behind the scenes of Angular maybe it isnt possible? But it is a threshold for new developers learning it. Overall exciting changes and hopefully it will make it more widely used.
Since 2016 they have released a steady stream of breaking changes making my life hell to maintain multiple complex angular apps... i finally move away an NOW they focus on stability. No thanks, Svelte is so much better
I really would like to see Google try to unify it's angular and flutter ecosystems. If the end goal is really to use fuscia as the OS of the future, I think there should be one paradigm for creating application UI on that system.
I wish they could unify Flutter and Golang. Still don't understand why Google needs both Go AND Dart. How awesome would that be to code in Go on both the FE and BE using Flutter?
“Oh cool, angular updated maybe it’s worth looking at again” > looks at first example > immediately in the trash It’s like less intuitive Java in the UI. Sad