[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) › ProtocolChangeTooLargeError

Defined in: [packages/common/src/local-first/Protocol.ts:578](https://github.com/evoluhq/evolu/blob/113517df8a8da4e4eed41363077878e657b22fca/packages/common/src/local-first/Protocol.ts#L578)

Error for a stored change that sync skipped because it cannot fit an empty
[ProtocolMessage](https://evolu.dev/docs/api-reference/common/local-first/Protocol/type-aliases/ProtocolMessage) after a pending Skip range, which is the message a
later round is guaranteed to reach.

Every change within [maxMutationSize](https://evolu.dev/docs/api-reference/common/local-first/Evolu/variables/maxMutationSize) fits. Larger ones are changes
saved before that limit existed and crafted changes a relay stores. A change
up to 22 bytes too large for that message can still fit one without a pending
skip, so sync may send it, sometimes after reporting it, but usually reports
it in every sync like a larger one. With
[defaultProtocolMessageMaxSize](https://evolu.dev/docs/api-reference/common/local-first/Protocol/variables/defaultProtocolMessageMaxSize), PADMÉ padding leaves no honest change
size in that 22-byte window.

An answer to a Timestamps range neither sends nor lists a skipped change, so
range fingerprints keep disagreeing about it. A request or a split still
lists its timestamp, so a peer that lacks it may ask for it once per sync and
gets an answer without it. Every sync narrows the fingerprints to it, skips
it again, and ends.

## Extends

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

## Properties

<a id="size"></a>

### size

```ts
readonly size: number & Brand<"NonNaN"> & Brand<"Finite"> & Brand<"Int"> & Brand<"NonNegative"> & Brand<"Positive">;
```

Defined in: [packages/common/src/local-first/Protocol.ts:581](https://github.com/evoluhq/evolu/blob/113517df8a8da4e4eed41363077878e657b22fca/packages/common/src/local-first/Protocol.ts#L581)

The length of the encrypted change in bytes.

---

<a id="timestamp"></a>

### timestamp

```ts
readonly timestamp: Timestamp;
```

Defined in: [packages/common/src/local-first/Protocol.ts:579](https://github.com/evoluhq/evolu/blob/113517df8a8da4e4eed41363077878e657b22fca/packages/common/src/local-first/Protocol.ts#L579)

---

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

### type

```ts
readonly type: "ProtocolChangeTooLargeError";
```

Defined in: [packages/common/src/Type.ts:15316](https://github.com/evoluhq/evolu/blob/113517df8a8da4e4eed41363077878e657b22fca/packages/common/src/Type.ts#L15316)

#### 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)