Socket
Book a DemoInstallSign in
Socket

@jscutlery/microwave

Package Overview
Dependencies
Maintainers
2
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jscutlery/microwave

`@jscutlery/microwave` brings simplified and performant reactivity to Angular.

latest
npmnpm
Version
0.5.5
Version published
Maintainers
2
Created
Source

Microwave

@jscutlery/microwave brings simplified and performant reactivity to Angular.

🪄 Features

⚡️ Less change detection: Microwave will only trigger change detection when properties change.

😌 Less RxJS Spaghetti: Focus on your features without sacrificing performance.

🚦 Coalescing: regroup changes and trigger change detection once per component.

✅ Microwave is ZoneJS agnostic so it will work with or without it.

👯‍♀️ Don't trigger useless change detections when a property's value has been set to the same value.

Table of Contents

  • Microwave
  • 🪄 Features
  • Table of Contents
  • 👾 Demo
  • 📝 Usage
  • Acknowledgements

👾 Demo

https://stackblitz.com/edit/game-of-life-microwave?file=src%2Fapp%2Fcell.component.ts

📝 Usage

@Microwave

Just add the @Microwave decorator and let it nuke your component!

import { Microwave } from '@jscutlery/microwave';

@Microwave()
@Component({
  template: `...`,
})
class GreetingsComponent {
  /* ⚠️ Important: properties should be initialized, otherwise they won't be detected by Microwave. */
  name?: string = undefined;
}

@Microwave + watch

Watch property changes.

@Microwave()
@Component({
  template: `<h1>Welcome {{ upperCaseName }}</h1>`,
})
class GreetingsComponent {
  @Input() name?: string = undefined;
  upperCaseName?: string = undefined;

  constructor() {
    /* Note that you don't have to handle the subscription as the returned observable
     * will be unsubscribed from when the component is destroyed.
     * Though, if you add operators, you will have to handle subscriptions. */
    watch(this, 'name').subscribe((name) => {
      this.upperCaseName = name.toUpperCase();
    });
  }
}

Change detection strategies

You can customize the change detection strategy using the strategy parameter.

@Microwave({
  strategy: asyncStrategy,
})
export class MyComponent {}

Here are the current strategies.

Custom strategies.

You can implement your own strategy using the Strategy<T> signature.

StrategyDescription
asapStrategyThis is the default strategy. It will trigger change detection independently for each component while coalescing changes and scheduling the change detection on the microtask queue.
asyncStrategyLocal strategy coalescing using macrotasks
rafStrategyLocal strategy coalescing using requestAnimationFrame
syncStrategyLocal strategy without coalescing so it will trigger change detection each time a property changes.

Upcoming features

  • provide multiple Microwave strategies
  • watch multiple properties
  • automatically unsubscribe even when using operators with watch(...).pipe(...)

Acknowledgements

The RxAngular team for the inspiration. In fact, the first prototype was built during the creation of the RxState Marmicode Tasting video: https://youtu.be/CcQYj4V2IKw

Nuke it

Wordplay by @AlyssaNicoll & @schwarty.

Cf. Angular Air https://youtu.be/CmspcYY6jjU

FAQs

Package last updated on 31 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts