Angular Addicts #16: Signals vs. RxJS, combined test coverage reports & more
My favorite Angular resources of July, 2023
👋Hey fellow Angular Addict
This is the 16th issue of the Angular Addicts Newsletter, a monthly collection of carefully selected Angular resources that got my attention. (You can read the thirteenth, fourteenth and fifteenth issue here.)
📢Release announcements
📢Nx 16.5
Zack DeRose covers the major new features of Nx 16.5:
Targeting tasks by tags
NextJS 13 support
New Nx recipes
Angular 16 support and migrations
Verdaccio support
Create your own CLI with Nx
New externalDependencies input type
New @nx/dependency-checks EsLint rule
Performance improvements
Nx Console revamped
Nx Changelog launched
📢Storybook 7.1
In his blog post, Michael Shilman summarizes the new features of Storybook 7.1:
In-app onboarding to help you learn Storybook
Zero-config styling support for Tailwind, Material UI, styled-components and Emotion
API reference documentation
TypeScript-first code snippets
Vue 3 source snippets and reactivity improvements
Table of Contents for docs
Figma Design addon official support
Hundreds more fixes and improvements
💎Angular Gems of July, 2023
📰Signals vs RxJS
Mike Pearson wrote a three-piece article series to show us when we should prefer RxJs and when Angular Signals:
In the first two parts of the series, he compares RxJs and Signals in case of using them for synchronous and asynchronous reactivity. In the third article, he recommends us to use the "auto-signal pattern", which has some benefits over toSignal()
. This pattern enables us to connect RxJS streams with Signals without losing the ability of RxJS streams to automatically:
clean up
reset and re-fetch, and
cancel requests
📰Managing RxJS Traffic with Signals and Suspensify
Angular contains a new toSignal()
function that can convert observables to Signals, but it doesn't handle observables well without initial values or emitted errors. Younes Jaaidi shows us how the suspensify()
operator can help us solve these issues by producing an observable that will always have an initial value and that never throws an error. It's a part of the @jscutlery/operators package.
📰How To Combine Coverage From Cypress (E2E And Component Test) And Jest In An Nx Project
Christian Lüdemann describes how to combine the coverage results of
Jest unit tests
Cypress component tests and
Jest e2e tests
to gain detailed insights into the test coverage of your Angular application. He also shares a full demo app with us.
📰The new NGRX Signal Store for Angular: 2 + 1 Flavors
Manfred Steyer explains the current work in progress version of the NgRx Signal Store, and he shows us 2+1 different flavors of using it:
Flavor 1: Lightweight with signalState
Flavor 2: Powerful with signalStore
Upcoming Flavor 3: Entity Management
👨💻About the author
My name is Gergely Szerovay, I work as a frontend development chapter lead. Teaching (and learning) Angular is one of my passions. I consume content related to Angular on a daily basis — articles, podcasts, conference talks, you name it.
I created the Angular Addict Newsletter so that I can send you the best resources I come across each month. Whether you are a seasoned Angular Addict or a beginner, I got you covered.
Next to the newsletter, I also have a publication called — you guessed it — Angular Addicts. It is a collection of the resources I find most informative and interesting. Let me know if you would like to be included as a writer.
Let’s learn Angular together! Subscribe here 🔥
Follow me on Medium, Dev.to, Twitter or LinkedIn to learn more about Angular!
🕹️Previous issues
If you missed the previous issues of the newsletter, you can read them here, these are the latest 3 issues:
Angular Addicts #15: Angular v16.1, Typescript 5.1, new RFCs & more
Angular Addicts #14: Angular v16, Signals and SignalStore, fine-grained change detection & more
📨 Submit your Angular resource
Have you found or written an interesting Angular-related article, tweet or other resource lately? Please let me know here in the comments or send me a DM on Twitter! I might feature it in the next Angular Addicts issue!