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 rxjsIs 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
toSignalandtoObservable -
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
catchErrorfor 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);
How can the creator link this skill?
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>