---
url: >-
  https://lit-ui-router.dev/reference/ui-router-server/hono/functions/serverRouterHono.md
---
[ui-router-server](../../index.md) / [hono](../index.md) / serverRouterHono

# Function: serverRouterHono()

```ts
function serverRouterHono<R, E>(router, options): MiddlewareHandler<E>;
```

Defined in: [hono.ts:67](https://github.com/simshanith/lit-ui-router/blob/740888c2b2ba358c4dfa52a122e927df6a604b12/packages/ui-router-server/src/hono.ts#L67)

Wraps a [ServerRouter](../../index/interfaces/ServerRouter.md) as Hono middleware. The returned handler resolves
the request to a verdict and either answers it (`return`ing the verdict
Response) or passes it on (`await next()`), exactly the fetch adapter's
`Response | null` contract expressed in Hono's continuation. Write the
router's type before the app's env (`serverRouterHono<typeof router, AppEnv>`)
so its delegate keys stay checked.

## Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
|  `R` *extends* [`ServerRouter`](../../index/interfaces/ServerRouter.md)<[`RouteDeclaration`](../../redirects/interfaces/RouteDeclaration.md)> | - |
|  `E` *extends* `Env` | `Env` |

## Parameters

| Parameter | Type |
| ------ | ------ |
| `router` | `R` |
| `options` | [`FetchAdapterOptions`](../../fetch/interfaces/FetchAdapterOptions.md)<[`HonoDelegateArgs`](../type-aliases/HonoDelegateArgs.md)<`E`>, [`ServerRouterDeclarations`](../../index/type-aliases/ServerRouterDeclarations.md)<`R`>> & [`RequiredDelegates`](../../fetch/type-aliases/RequiredDelegates.md)<[`HonoDelegateArgs`](../type-aliases/HonoDelegateArgs.md)<`E`>, [`ServerRouterDeclarations`](../../index/type-aliases/ServerRouterDeclarations.md)<`R`>> & [`RequiredServeResponse`](../../fetch/type-aliases/RequiredServeResponse.md)<[`HonoDelegateArgs`](../type-aliases/HonoDelegateArgs.md)<`E`>, [`ServerRouterDeclarations`](../../index/type-aliases/ServerRouterDeclarations.md)<`R`>> |

## Returns

`MiddlewareHandler`<`E`>
