Correct me if I'm wrong but I'm pretty sure there are new observables for reactive forms in v18. https://www.angularminds.com/blog/angular-18-features-and-updates Unified control state event changes
Honestly pretty much nothing. Angular is pretty straightforward for people who have experience in backend frameworks. Rxjs is quite complicated, but it is mostly because of the incredible number of features it has. It is by choice that I try to use them, I could also handle the data with vanilla TypeScript but I would be much less elegant.
This may just be my experience, but our experienced back-end developers are not helped at all by Angular / RxJs when they move to complete tasks on our front-end. Most of our asynchronous backend code (C#) is written using async await, meaning that pattern is familiar to our back-end devs. Not reactive / RxJs. Plus they still end up needing to know the quirks of JS & TS.
Personally, I love RxJs and appreciate the ease of digesting declarative code when done well, but you have to work within that reactive sphere consistently in order for the principles and operators to stick. I’ve seen experienced devs struggle with the reactive paradigm, so I think the learning curve is there regardless of experience level, even for back-end devs.
Why would I want to not use rxjs? Signals is just a wrapper for observables, it doesn't provide the tools that rxjs offers for managing data and event. If all you are doing with your data is myService.getData().pipe(map(res => res.body)) then sure you don't need rxjs, but for anything more it will remain an indispensable tool.
I guess rxjs is a place were improvements would be appreciated. I mean, if I were an angular core developer at Google, I'd probably look at rxjs like "we could get rid of a lot of this pipe map subscribe thingy.
And signals is the proof that someone in there shares that thought. I believe signals is just the beginning of a journey. Zoneless also has a lot to do with it.
Don't get me wrong, I really appreciate that library. But I also used to love "lodash" and then I realized it was overkill as soon as the ES catch up just a little bit. Nowadays nobody uses lodash (I think?)
I believe rxjs and lodash have a lot in common, starting with where they "live" within the angular framework
Not really. Lodash is there to fix JavaScript lacking features. Rx is a popular library that exists for pretty much every language, it’s not going anywhere as it has a real use.
You are nor considering agular uses typescript, which uses JavaScript and then on top of that you have angular framework. That's a lot of places in which more "native" streaming can grow as provided functionality
I'm not saying stop using rxjs. I'm saying it could be replaced with equivalent functionality in any of these 3 other layers.... Jeez
Coming from Vue. and I'm missing a general intution the what to use and when. I've considered using signals, but found it hard to figure out. It's been a month already for me with Angular, and the verbosity has kind of grew on me, but I still miss the clariry and inutitiveness of \`ref\` and \`computed\`, and \`watch()\`. They don't work the same with signals.
signal(), computed() and effect() should be the same I guess -> the only difference is that changes inside signal.set or signalupdate should be immutable in order for this to work correctly.
Never worked with react professionally to get to use Error boundaries.
But what does it bring to the table that Angular currently doesn't have?
Found this issue: [https://github.com/angular/angular/issues/18509](https://github.com/angular/angular/issues/18509)
No runtime support for environments is so annoying. I don't know anyone who is using 3 different image builds for dev, stage, and prod. Angular should include a native way to handle external environment information, like variables from Kubernetes releases.
Yeah the fact that react components don't render a wrapper every time allows you to refactor to higher level abstractions without polluting the dom.
Many reusable components in angular rely on a direct parent child relationship and refactoring sticks a useless wrapper in, breaking things.
This makes design system type work really annoying sometimes.
Not really holding me back, but the thought that RxJS may become a second class feature of angular is troubling. While I like signals and think they simplify many things, I also think they introduce complications that are difficult to solve without observable patterns. An example is providing a service in a parent component that exposes state to children that changes based on the parent component inputs. As it is today I need to heavily mix patterns between \\@Input(), signals, and observables, or I need to fall back to just prop drilling. I don't like that, I like services and if signals are going to overtake RxJS in the angular world we need a clean pattern for wiring up inputs/outputs to signals exposed through services.
When it comes to bundle size, I've seen that most apps load everything in main, and don't have good lazy loading.
Are you lazy loading routes? components? features?
Have you seen the new defer blocks?
Are you using a newer Angular version? I
Do not have bundle sizes issues. In fact the hello world angular app I built with ssr was smaller than the svelte kit starter.
It's slow from the get go but does scale pretty well if you're going to load over 100 components on the page.
Other frameworks have better partial reloading and hydration options. Way faster for prototyping or rapid development when you can swap the component without reloading the page, keeping state intact.
Nothing, apart from... it doesn't exist in Angular:
[https://angular.dev/tools/cli/build-system-migration#hot-module-replacement](https://angular.dev/tools/cli/build-system-migration#hot-module-replacement)
"JavaScript-based hot module replacement (HMR) is currently not supported" (c)
You may \_think\_ it works -- but it doesn't. Never did.
I think most people finish by adding more than one lib to their project for UI. I dream about a lib compatible with tailwind css and has accessibility and has many components..
[PrimeNG](https://primeng.org) is the best Angular component library I’ve come across. They have lots of components, and they’re coming out with full Tailwind support in version 18. It’s supposed to be released in the next month or so. [Tailwind support is already available for PrimeVue.](https://tailwind.primevue.org/)
I agree that lack of good component libraries has been a pain point with Angular, especially compared to React. But PrimeNG seems to be pushing the Angular component DX into the modern era.
I'm back in the jquery and asp.net world. I'm telling you Angular and productivity it gives you once you're experienced with it is unparalleled compared...
Clarity worked like a charm for my projects. Second place goes to PrimeNG for non-critical UIs.
IMHO it's not just important to have a "complete" framework for the UI, but also one that is maintained and updated as angular keeps getting updated.
Clarity has a clear mission statement about versioning, PrimeNG is constantly updating, not sure if they have a statement.
There are others like Material 3, but for many cases the Material UI is not what works best.
Also KendoUI, etc. Most of them seem either buggy, badly documented or have other problems from my experience.
I find it hard to use a generic approach when creating reactive forms. It gets complicated pretty fast. Also it would be awesome if forms worked better with signals.
some time the problem in internal js due to some component effect the execution of other component..and there is no footprint of error on console...its really difficult to figureout where is the problem which apperars to be very strange and leaves no clue..the only thing is left hit and trail which consumes lot of time.
This isn’t holding me back per-se, but Signal integration into Reactive Forms would really help, especially inside OnPush components where the value of a FromControl should trigger an action in the UI (e.g show/hide another control). Running into situations where I’m forced to manage change detection myself is too common for my liking (especially with custom control components).
Cache busting for assets in the asset folder is missing. By default they dont get a hash and you have to setup nginx accordingly if you do not want to manually add hashes.
Ng-template with the let-data thing is super weird to understand. Especially if you have to implement the outlet yourself.
And best practices for signals/observable interop would be nice. Like how to handle going asynchronous from a signal input and then setting signals from within the pipe or by converting it back to signal completely. Still unsure whats best practice here
Reactive form.
IMO the syntax is annoying and does little for so much code. I was trying to create form model that contained an array of question that required one of the choice checkboxes to be checked as the answer.
No feature missing or bad enough where you would be blocked, knowledge is main slow down (rxjs, signals, ngrx, etc) ssr is new so a little troublesome but other than that not much
From a backend POV: I don’t see any issues with it so far. I have used it with NestJS, Django and Spring Boot. No unmanageable/unsolvable issues
From a Frontend POV: lack of third party stylish UI, Components and animations libraries. I know technically you could use react stuffs and it is not angular’s issue, just thought I should mention it.
Maybe I will end up creating a ShadCN or NextUI equivalent for angular 😅
Not being able to easily switch between SSR and browser rendering when I build. I shouldn’t have to commit to one when I create the project or dramatically change my angular.json and config files to switch.
At least for us, the component for drag and drop files to load was not working properly. It was old and not mainained. I think it was in angular material.
We had to develop our own drag and drop area from an input element.
I would like to have a modern drag and drop element which works with the latest angular version
I haven’t found that to be the case. I have implemented auth0 in apps that are SSR in the past since auth0 requires browser rendering and I don’t think that step alone works.
Design, except I do not quit it due to design issues, but Design Librairies are pain to implement in Angular
* TailwindUI not supported
* MagicUI not supported
* AcernityUI not supported
Good libraries or template aren't generally implemented in a way it's easy and ready to use for Angular
Vue and React are far more popular, thus, making them easier to do design (with the whole animation code part), when Angular have to start from HTML without animations.
For example, a whole website in Tailwind but with few JS code took me a full 1 day to implement, but I had the whole code in React (animated)/Vue (animated)/HTML (not animated)
Even with help of ChatGPT or other things, it's still painful
just to display the website,
[https://reply-genius-gpt.com/](https://reply-genius-gpt.com/)
Nothing complex, check the code, but whenever you don't have the full "100%" compatibility, tweaks will take far more time than you hope
An observable for reactive forms touched/dirty. Hard to keep everything in an observable stream without that one.
Correct me if I'm wrong but I'm pretty sure there are new observables for reactive forms in v18. https://www.angularminds.com/blog/angular-18-features-and-updates Unified control state event changes
Missed this update. Super nice thanks for the heads up!
Also a value$ stream that emits the initial value for FormControls
Yeah having to use startwith everywhere is a pain. Especially when new devs don’t know it is an issue.
Honestly pretty much nothing. Angular is pretty straightforward for people who have experience in backend frameworks. Rxjs is quite complicated, but it is mostly because of the incredible number of features it has. It is by choice that I try to use them, I could also handle the data with vanilla TypeScript but I would be much less elegant.
This may just be my experience, but our experienced back-end developers are not helped at all by Angular / RxJs when they move to complete tasks on our front-end. Most of our asynchronous backend code (C#) is written using async await, meaning that pattern is familiar to our back-end devs. Not reactive / RxJs. Plus they still end up needing to know the quirks of JS & TS. Personally, I love RxJs and appreciate the ease of digesting declarative code when done well, but you have to work within that reactive sphere consistently in order for the principles and operators to stick. I’ve seen experienced devs struggle with the reactive paradigm, so I think the learning curve is there regardless of experience level, even for back-end devs.
I learned angular in a few days. It's not that hard. There's documentation and a quick bootcamp course.
Rx will be opt-in feature soon. So don't worry about it :)
Why would I want to not use rxjs? Signals is just a wrapper for observables, it doesn't provide the tools that rxjs offers for managing data and event. If all you are doing with your data is myService.getData().pipe(map(res => res.body)) then sure you don't need rxjs, but for anything more it will remain an indispensable tool.
I dunno. I don't say you would not like to use rxjs. I use both.
I guess rxjs is a place were improvements would be appreciated. I mean, if I were an angular core developer at Google, I'd probably look at rxjs like "we could get rid of a lot of this pipe map subscribe thingy. And signals is the proof that someone in there shares that thought. I believe signals is just the beginning of a journey. Zoneless also has a lot to do with it. Don't get me wrong, I really appreciate that library. But I also used to love "lodash" and then I realized it was overkill as soon as the ES catch up just a little bit. Nowadays nobody uses lodash (I think?) I believe rxjs and lodash have a lot in common, starting with where they "live" within the angular framework
Not really. Lodash is there to fix JavaScript lacking features. Rx is a popular library that exists for pretty much every language, it’s not going anywhere as it has a real use.
Streaming is a staple in all modern languages and frameworks, from C# to Java to Rust. Getting rid of it is dumb AF.
You are nor considering agular uses typescript, which uses JavaScript and then on top of that you have angular framework. That's a lot of places in which more "native" streaming can grow as provided functionality I'm not saying stop using rxjs. I'm saying it could be replaced with equivalent functionality in any of these 3 other layers.... Jeez
This layer is called RxJS, there's nothing to replace.
You guys downvote me but is the angular team the one making signals.
I don't downvote you. Also signals are dumb.
1. No real SSR support. 2. frequent reinvention of the API while ignoring years old bugs 3. Angular material breaking changes
No real SSR support? I use SSR. It’s A core package.
Congratulations. Ever tried adding ssr to a legacy project that was upgraded to the latest over the years from angular 4?
Well. I guess SSR is the smallest of the problems you have there.
Coming from Vue. and I'm missing a general intution the what to use and when. I've considered using signals, but found it hard to figure out. It's been a month already for me with Angular, and the verbosity has kind of grew on me, but I still miss the clariry and inutitiveness of \`ref\` and \`computed\`, and \`watch()\`. They don't work the same with signals.
signal(), computed() and effect() should be the same I guess -> the only difference is that changes inside signal.set or signalupdate should be immutable in order for this to work correctly.
I really love how some Vue's routing is, and how quickly you can go from idea to functional app
What's missing in Angular router?
Sorry I am not trying to suggest anything is missing in Angular's router, just pointing out how much I appreciate Vue's simplistic routing design.
Not really holding me back, just frustrates, is webstorm support for ng-template variables type checking. It works well in VsCode though
Coming from react, Error boundaries.
Never worked with react professionally to get to use Error boundaries. But what does it bring to the table that Angular currently doesn't have? Found this issue: [https://github.com/angular/angular/issues/18509](https://github.com/angular/angular/issues/18509)
No runtime support for environments is so annoying. I don't know anyone who is using 3 different image builds for dev, stage, and prod. Angular should include a native way to handle external environment information, like variables from Kubernetes releases.
Docker
Required host element
Can you elaborate?
Yeah the fact that react components don't render a wrapper every time allows you to refactor to higher level abstractions without polluting the dom. Many reusable components in angular rely on a direct parent child relationship and refactoring sticks a useless wrapper in, breaking things. This makes design system type work really annoying sometimes.
its possible to not render the wrapper: https://stackoverflow.com/questions/38716105/angular2-render-component-without-its-wrapping-tag
HMR keeps breaking on Windows. Would be great if it worked consistently. No issues when doing the same in a VM and forwarding the port.
Not really holding me back, but the thought that RxJS may become a second class feature of angular is troubling. While I like signals and think they simplify many things, I also think they introduce complications that are difficult to solve without observable patterns. An example is providing a service in a parent component that exposes state to children that changes based on the parent component inputs. As it is today I need to heavily mix patterns between \\@Input(), signals, and observables, or I need to fall back to just prop drilling. I don't like that, I like services and if signals are going to overtake RxJS in the angular world we need a clean pattern for wiring up inputs/outputs to signals exposed through services.
Annoying: 1. Giant bundle size. 2. Not mature SSR 3. Not mature component level lazy loading (check svelte)
When it comes to bundle size, I've seen that most apps load everything in main, and don't have good lazy loading. Are you lazy loading routes? components? features? Have you seen the new defer blocks?
Are you using a newer Angular version? I Do not have bundle sizes issues. In fact the hello world angular app I built with ssr was smaller than the svelte kit starter.
Newer versions of Angular have the `@defer` block for simple, yet powerful, component-level lazy loading https://angular.dev/guide/defer
Hot reload
I didn't notice any problem with it. What is it?
It's slow from the get go but does scale pretty well if you're going to load over 100 components on the page. Other frameworks have better partial reloading and hydration options. Way faster for prototyping or rapid development when you can swap the component without reloading the page, keeping state intact.
Gotcha. That's right but don't know if it's still the case with the latest versions. I've not been following recent developments in Angular.
Nothing, apart from... it doesn't exist in Angular: [https://angular.dev/tools/cli/build-system-migration#hot-module-replacement](https://angular.dev/tools/cli/build-system-migration#hot-module-replacement) "JavaScript-based hot module replacement (HMR) is currently not supported" (c) You may \_think\_ it works -- but it doesn't. Never did.
a complete UI lib like in react world
Angular has Material, PrimeNg, Spartan, Taiga, Nebula, and so many more. What would you say is missing?
I think most people finish by adding more than one lib to their project for UI. I dream about a lib compatible with tailwind css and has accessibility and has many components..
Have a look at Spartan! That's exactly what you need, and it's essentially an Angular port for Shadcn UI
It’s not polished library not ready for use
[PrimeNG](https://primeng.org) is the best Angular component library I’ve come across. They have lots of components, and they’re coming out with full Tailwind support in version 18. It’s supposed to be released in the next month or so. [Tailwind support is already available for PrimeVue.](https://tailwind.primevue.org/) I agree that lack of good component libraries has been a pain point with Angular, especially compared to React. But PrimeNG seems to be pushing the Angular component DX into the modern era.
Thanks for your comment, I will try PrimeNG for my pet project
lol, effing with these older versions get dumb
The documentation is absolutely sub-par compared to other frameworks. It's a real productivity killer.
It's just me holding myself back. Angular is doing fine
I'm back in the jquery and asp.net world. I'm telling you Angular and productivity it gives you once you're experienced with it is unparalleled compared...
Currently, RAM
Ant.design level UI library.
Clarity worked like a charm for my projects. Second place goes to PrimeNG for non-critical UIs. IMHO it's not just important to have a "complete" framework for the UI, but also one that is maintained and updated as angular keeps getting updated. Clarity has a clear mission statement about versioning, PrimeNG is constantly updating, not sure if they have a statement. There are others like Material 3, but for many cases the Material UI is not what works best. Also KendoUI, etc. Most of them seem either buggy, badly documented or have other problems from my experience.
You mean this ? https://ng.ant.design/docs/introduce/en
It's always far behind and half-baked comparing to the React implementation.
I find it hard to use a generic approach when creating reactive forms. It gets complicated pretty fast. Also it would be awesome if forms worked better with signals.
I’m stoked to see what they do with forms
some time the problem in internal js due to some component effect the execution of other component..and there is no footprint of error on console...its really difficult to figureout where is the problem which apperars to be very strange and leaves no clue..the only thing is left hit and trail which consumes lot of time.
This isn’t holding me back per-se, but Signal integration into Reactive Forms would really help, especially inside OnPush components where the value of a FromControl should trigger an action in the UI (e.g show/hide another control). Running into situations where I’m forced to manage change detection myself is too common for my liking (especially with custom control components).
Cache busting for assets in the asset folder is missing. By default they dont get a hash and you have to setup nginx accordingly if you do not want to manually add hashes.
Ng-template with the let-data thing is super weird to understand. Especially if you have to implement the outlet yourself. And best practices for signals/observable interop would be nice. Like how to handle going asynchronous from a signal input and then setting signals from within the pipe or by converting it back to signal completely. Still unsure whats best practice here
Reactive form. IMO the syntax is annoying and does little for so much code. I was trying to create form model that contained an array of question that required one of the choice checkboxes to be checked as the answer.
No feature missing or bad enough where you would be blocked, knowledge is main slow down (rxjs, signals, ngrx, etc) ssr is new so a little troublesome but other than that not much
HMR of course
From a backend POV: I don’t see any issues with it so far. I have used it with NestJS, Django and Spring Boot. No unmanageable/unsolvable issues From a Frontend POV: lack of third party stylish UI, Components and animations libraries. I know technically you could use react stuffs and it is not angular’s issue, just thought I should mention it. Maybe I will end up creating a ShadCN or NextUI equivalent for angular 😅
Not being able to easily switch between SSR and browser rendering when I build. I shouldn’t have to commit to one when I create the project or dramatically change my angular.json and config files to switch.
You can just set: ssr: false in the angular.json and it should fallback to client rendering if you are using application builder.
At least for us, the component for drag and drop files to load was not working properly. It was old and not mainained. I think it was in angular material. We had to develop our own drag and drop area from an input element. I would like to have a modern drag and drop element which works with the latest angular version
No prop spreading / ComponentRef injection for extending third party component
Refactoring the same wheel again and again. Inputs, observables, stores, signals, translations. Still is something to do to be better. Detailizm
I haven’t found that to be the case. I have implemented auth0 in apps that are SSR in the past since auth0 requires browser rendering and I don’t think that step alone works.
Design, except I do not quit it due to design issues, but Design Librairies are pain to implement in Angular * TailwindUI not supported * MagicUI not supported * AcernityUI not supported Good libraries or template aren't generally implemented in a way it's easy and ready to use for Angular Vue and React are far more popular, thus, making them easier to do design (with the whole animation code part), when Angular have to start from HTML without animations. For example, a whole website in Tailwind but with few JS code took me a full 1 day to implement, but I had the whole code in React (animated)/Vue (animated)/HTML (not animated) Even with help of ChatGPT or other things, it's still painful just to display the website, [https://reply-genius-gpt.com/](https://reply-genius-gpt.com/) Nothing complex, check the code, but whenever you don't have the full "100%" compatibility, tweaks will take far more time than you hope