> Markdown version of [Observable Vaadin Events](https://vaadin.com/docs/next/flow/integrations/cdi/events). Section index: [llms.txt](https://vaadin.com/docs/next/flow/llms.txt)

# Observable Vaadin Events

The [Vaadin CDI](https://vaadin.com/directory/component/vaadin-cdi/) add-on publishes many Vaadin events to contexts and dependency injection (CDI).

It isn’t necessary to register a listener. It’s sufficient to handle these events using only an observer.

Events published to CDI include:

- `ServiceInitEvent` See [VaadinServiceInitListener](https://vaadin.com/docs/next/flow/advanced/service-init-listener.md) for more.

- `PollEvent`.

- `BeforeEnterEvent`. See [Navigation Lifecycle](https://vaadin.com/docs/next/flow/routing/lifecycle.md) for more.

- `BeforeLeaveEvent`. See [Navigation Lifecycle](https://vaadin.com/docs/next/flow/routing/lifecycle.md) for more.

- `AfterNavigationEvent`. See [Navigation Lifecycle](https://vaadin.com/docs/next/flow/routing/lifecycle.md) for more.

- `UIInitEvent`. See [Session and UI InitListener](https://vaadin.com/docs/next/flow/advanced/session-and-ui-init-listener.md) for more.

- `SessionInitEvent`. See [Handling Session Initialization and Destruction](https://vaadin.com/docs/next/flow/advanced/application-lifecycle.md#handling-session-initialization-and-destruction) for more.

- `SessionDestroyEvent`. See [Handling Session Initialization and Destruction](https://vaadin.com/docs/next/flow/advanced/application-lifecycle.md#handling-session-initialization-and-destruction) for more.

- `ServiceDestroyEvent`.

> **Warning:** `ServiceDestroyEvent` support during application shutdown depends on each specific implementation.

The example here uses the `@Observes` annotation to listen to `ServiceInitEvent`:

```java
public class BootstrapCustomizer {

    private void onServiceInit(@Observes
            ServiceInitEvent serviceInitEvent) {
        serviceInitEvent.addIndexHtmlRequestListener(
                this::modifyBootstrapPage);
    }

    private void modifyBootstrapPage(
            IndexHtmlResponse response) {
        response.getDocument().body().append(
                "<p>By CDI add-on</p>");
    }
}
```

`DD8861A6-C281-4A3D-977D-FA750E3BAB5E`
