> For the complete documentation index, see [llms.txt](https://docs.activejs.dev/activejs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.activejs.dev/activejs/guides/events.md).

# Events

Every fundamental ActiveJS construct has a number of built-in Observable events. You can listen to these events by subscribing to the `events$` Observable, a property of every fundamental construct.

[Units](/activejs/fundamentals/units.md), [Systems](/activejs/fundamentals/systems.md), [Action](/activejs/fundamentals/action.md), and [Cluster](/activejs/fundamentals/cluster.md) have a common `EventReplay` event, it is triggered on a successful manual replay when you call the `replay()` method.

[Units](/activejs/fundamentals/units.md) have many Units specific events that let you tap into all the action that's happening on a Unit.\
Every Unit has some common events like `EventUnitDispatch`, `EventUnitDispatchFail` and`EventUnitFreeze` etc.

[ListUnit](/activejs/fundamentals/units/listunit.md) and [DictUnit](/activejs/fundamentals/units/dictunit.md) have even more events specific to them, like `EventDictUnitSet`, `EventListUnitPush` or `EventListUnitPop` etc.

See [API reference](https://api.activejs.dev/index.html#baseevents) for more details.

## Listening to events

```typescript
const theAction = new Action(); // can also be a Unit, System or Cluster

theAction.events$.subscribe(event => {
    // Action, AsyncSystem and Cluster only have one event
    // so filtering is optional
    if(event instanceof EventReplay) {
        console.log('hey, you got replayed');
    }
});

// dispatch a value
theAction.dispatch('order order');
// this won't trigger any event, only Units emit an event on dispatch 

// replay the value
theAction.replay(); // it'll trigger the EventReplay event
```
