skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
oguzhan18/angular-ecosystem-skills207 installs

rxjs

ALWAYS use when working with RxJS Observables, operators, and reactive patterns in Angular applications.

How do I install this agent skill?

npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill rxjs
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill is a documentation resource providing best practices and reference links for RxJS in Angular. It contains only static information and links to well-known, reputable services. No security issues were detected.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • ZeroLeakspass

    Score: 93/100 · 2 sections analyzed

What does this agent skill do?

RxJS (Reactive Extensions for JavaScript)

Version: 8.x (2025) Tags: Reactive Programming, Observables, Async

References: Docs — operators, API • Angular RxJS • GitHub

API Changes

This section documents recent version-specific API changes.

  • NEW: RxJS 8 — Modern TypeScript types, smaller bundles, better tree-shaking source

  • NEW: Improved interop helpers — Simpler conversion to/from Signals with toSignal and toObservable

  • NEW: RxJS 8 ergonomics — Compact operator signatures and safer defaults

  • DEPRECATED: Legacy import style — Use RxJS 7+ pipeable operators instead of patch imports

Best Practices

  • Use AsyncPipe in templates — Handles subscription/unsubscription automatically, prevents memory leaks
@Component({
  template: `
    <div *ngIf="data$ | async as data">
      {{ data.name }}
    </div>
  `
})
export class MyComponent {
  data$ = this.service.getData();
}
  • Use proper flattening operators — Choose based on use case:
// switchMap - cancel previous, keep latest (search)
search(term: string): Observable<SearchResult[]> {
  return this.searchService.search(term).pipe(
    debounceTime(300),
    distinctUntilChanged(),
    switchMap(term => term ? this.http.get(...) : of([]))
  );
}

// mergeMap - run concurrently (multiple API calls)
this.items$.pipe(
  mergeMap(item => this.save(item))
);

// concatMap - run sequentially (order matters)
this.orders$.pipe(
  concatMap(order => this.processOrder(order))
);

// exhaustMap - ignore while running (form submit)
this.submit$.pipe(
  exhaustMap(() => this.submitForm())
);
  • Always unsubscribe — Prevent memory leaks
// Use takeUntil pattern
private destroy$ = new Subject<void>();

ngOnInit() {
  this.data$.pipe(takeUntil(this.destroy$)).subscribe();
}

ngOnDestroy() {
  this.destroy$.next();
  this.destroy$.complete();
}

// Or use takeUntilDestroyed (Angular 16+)
private destroy$ = takeUntilDestroyed();
  • Use catchError for error handling
this.http.get('/api/data').pipe(
  catchError(error => {
    console.error(error);
    return of([]); // Return fallback value
  })
);
  • Use shareReplay(1) for caching shared observables
this.data$ = this.http.get('/api/data').pipe(
  shareReplay(1)
);
  • Name observables with $ suffix — Improves readability

  • Use Signals for UI state, RxJS for events — Modern Angular pattern

// Convert Observable to Signal
users = toSignal(this.users$, { initialValue: [] });

// Convert Signal to Observable (if needed)
name$ = toObservable(this.name);

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/oguzhan18/angular-ecosystem-skills/rxjs">View rxjs on skillZs</a>