chore: consolidate new foundation and archive v1 (#1495)

This commit is contained in:
2026-09-07 12:32:57 -05:00
3511 changed files with 727899 additions and 10 deletions
@@ -0,0 +1,66 @@
---
category: '@RxJS'
---
# useObservable
Use an RxJS [`Observable`](https://rxjs.dev/guide/observable), return a `ref`, and automatically unsubscribe from it when the component is unmounted.
## Usage
<!-- TODO: import rxjs error if enable twoslash -->
```ts no-twoslash
import { useObservable } from '@vueuse/rxjs';
import { interval } from 'rxjs';
import { mapTo, scan, startWith } from 'rxjs/operators';
// setup()
const count = useObservable(
interval(1000).pipe(
mapTo(1),
startWith(0),
scan((total, next) => next + total),
),
);
```
If you want to add custom error handling to an `Observable` that might error, you can supply an optional `onError` configuration. Without this, RxJS will treat any error in the supplied `Observable` as an "unhandled error" and it will be thrown in a new call stack and reported to `window.onerror` (or `process.on('error')` if you happen to be in Node).
```ts no-twoslash
import { useObservable } from '@vueuse/rxjs';
import { interval } from 'rxjs';
import { map } from 'rxjs/operators';
// setup()
const count = useObservable(
interval(1000).pipe(
map((n) => {
if (n === 10) throw new Error('oops');
return n + n;
}),
),
{
onError: (err) => {
console.log(err.message); // "oops"
},
},
);
```
## Type Declarations
```ts
export interface UseObservableOptions<I> {
onError?: (err: any) => void;
/**
* The value that should be set if the observable has not emitted.
*/
initialValue?: I | undefined;
}
export declare function useObservable<H, I = undefined>(
observable: Observable<H>,
options?: UseObservableOptions<I | undefined>,
): Readonly<Ref<H | I>>;
```