Suggest an editImprove this articleRefine the answer for “What is BehaviorSubject?”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)**BehaviorSubject** is a special type of `Subject` in RxJS that **stores the latest value and immediately gives it to new subscribers**. Unlike a regular `Subject`, it requires an initial value. **Key point:** a new subscriber immediately receives the last stored value.Shown above the full answer for quick recall.Answer (EN)Image## Briefly (as in an interview) **BehaviorSubject** is a special type of `Subject` in RxJS that **stores the latest value and immediately gives it to new subscribers**. Unlike a regular `Subject`, it **requires an initial value**. It's often used in Angular for **simple state management and passing data between components**. --- ## In detail `BehaviorSubject` is at the same time: - an **Observable** (you can subscribe to it) - an **Observer** (you can send values to it via `next()`) The main difference from `Subject` is **having a current value**. Example: ```ts import { BehaviorSubject } from 'rxjs'; const subject = new BehaviorSubject<number>(0); subject.subscribe(v => console.log('A:', v)); subject.next(1); subject.next(2); subject.subscribe(v => console.log('B:', v)); ``` Output: ``` A: 0 A: 1 A: 2 B: 2 ``` The second subscriber immediately received the **latest value (2)**. --- ### Used in Angular for Very often, for storing state in a service: ```ts @Injectable() export class UserService { private userSubject = new BehaviorSubject<User | null>(null); user$ = this.userSubject.asObservable(); setUser(user: User) { this.userSubject.next(user); } } ``` Component: ```ts this.userService.user$.subscribe(user => { console.log(user); }); ``` --- ### Difference from Subject | Type | Stores a value | Initial value | New subscriber gets the latest | |---|---|---|---| | Subject | No | No | No | | BehaviorSubject | Yes | Yes | Yes | --- ### When BehaviorSubject is used Usually when you need: - current state - global state - shared data - a light-version reactive store For example: - the current user - the application theme - loading state - filters --- ## A typical follow-up interview question They usually ask: **BehaviorSubject vs ReplaySubject?** In short: - BehaviorSubject → stores **1 latest value** - ReplaySubject → stores **N values**For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.