---
title: "Entry Points"
description: "app/entry.client.tsx and app/entry.server.tsx: the thin hydration and SSR bootstrap wrappers, and when to customize streaming behavior."
---

# Entry Points

`app/entry.client.tsx` hydrates the server-rendered HTML in the browser, and `app/entry.server.tsx` renders that HTML on the server. Both are thin wrappers generated by React Router. You rarely need to edit them.

```ts filename="app/entry.server.tsx"
import {
  createDocumentRequestHandler,
  streamTimeout,
} from "@agent-native/core/server/entry-server";
import { ServerRouter } from "react-router";

export default createDocumentRequestHandler(ServerRouter);
export { streamTimeout };
```

Reach for these only for advanced SSR customization, for example changing streaming behavior. Ordinary pages, layout, and data don't need changes here. See [Routing](/docs/client-routing) for adding pages instead.

## What's next

- [**Overview**](/docs/client-overview) — where these files sit in `app/`
- [**Routing**](/docs/client-routing) — adding pages, the normal way to extend `app/`
- [**Advanced**](/docs/client-advanced) — the other lower-level client primitives and escape hatches
