> Markdown version of [Server Push](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push). Section index: [llms.txt](https://vaadin.com/docs/v24/building-apps/llms.txt)

# Server Push

Server push is based on a client-server connection established by the client. The server can then use the connection to send updates to the client. For example, it could send a new chat message to all participants without delay.

The server-client communication uses a WebSocket connection, if supported by the browser and the server. If not, the connection resorts to whatever method is supported. Vaadin uses the [Atmosphere framework](https://github.com/Atmosphere/atmosphere), internally.

In Hilla views, push is always enabled when you subscribe to a *reactive endpoint*. For Flow views, you have to enable it, explicitly.

> **Important:** Server push is not the same as Web Push, which is also supported by Vaadin Flow. For more information, see the [Web Push Notifications](https://vaadin.com/docs/v24/flow/configuration/webpush.md) documentation page.

## <a id="enabling-push-flow"></a>Enabling Push Flow

Before you can use server push in Flow, you have to enable it. You do this by adding the `@Push` annotation to the application shell class, like this:

```java
import com.vaadin.flow.component.page.AppShellConfigurator;
import com.vaadin.flow.component.page.Push;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@Push
public class Application implements AppShellConfigurator {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
```

## <a id="topics"></a>Topics

- [Pushing](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/updates.md): How to push updates to a Vaadin Flow user interface.
- [Threads](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/threads.md): How to use threads in a Vaadin Flow user interface.
- [Callbacks](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/callbacks.md): How to use server push with callbacks.
- [Futures](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/futures.md): How to use server push with CompletableFuture.
- [Hilla Services](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/reactive-browser-callable-services.md): How to create reactive browser callable services for a Vaadin Hilla user interface.
- [Consuming Reactive Streams](https://vaadin.com/docs/v24/building-apps/deep-dives/presentation-layer/server-push/reactive.md): How to use server push with reactive streams.
