[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [local‑first/Protocol](https://evolu.dev/docs/api-reference/common/local-first/Protocol) › ApplyProtocolMessageAsRelayResult

Defined in: [packages/common/src/local-first/Protocol.ts:1091](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L1091)

Result type for [applyProtocolMessageAsRelay](https://evolu.dev/docs/api-reference/common/local-first/Protocol/functions/applyProtocolMessageAsRelay).

Unlike [ApplyProtocolMessageAsClientResult](https://evolu.dev/docs/api-reference/common/local-first/Protocol/type-aliases/ApplyProtocolMessageAsClientResult), relays always respond with
a message to provide sync completion feedback. This ensures the initiator can
reliably detect when synchronization is complete, even when there's nothing
to sync. Clients may choose not to respond in certain cases (like when they
receive broadcast messages or when they lack a write key for syncing).

## Extends

- [`Typed`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed)\<`"Response"`\>

## Properties

<a id="message"></a>

### message

```ts
readonly message: ProtocolMessage;
```

Defined in: [packages/common/src/local-first/Protocol.ts:1092](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L1092)

---

<a id="type"></a>

### type

```ts
readonly type: "Response";
```

Defined in: [packages/common/src/Type.ts:3492](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Type.ts#L3492)

#### Inherited from

[`Typed`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed).[`type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed#type)