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

```ts
function createProtocolBroadcastMessagesFromCrdtMessages(
  deps: RandomBytesDep,
): (
  owner: Owner,
  messages: readonly [CrdtMessage, CrdtMessage],
  maxSize: number &
    Brand<"NonNaN"> &
    Brand<"Finite"> &
    Brand<"Int"> &
    Brand<"Between1000000-100000000">,
) => readonly [ProtocolMessage, ProtocolMessage];
```

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

Creates size-limited broadcast [ProtocolMessage](https://evolu.dev/docs/api-reference/common/local-first/Protocol/type-aliases/ProtocolMessage)s containing every
supplied [CrdtMessage](https://evolu.dev/docs/api-reference/common/local-first/Storage/interfaces/CrdtMessage).

Broadcasts contain no synchronization ranges or write key. Unlike
[createProtocolMessageFromCrdtMessages](https://evolu.dev/docs/api-reference/common/local-first/Protocol/functions/createProtocolMessageFromCrdtMessages), this function splits all
messages into complete frames rather than relying on later synchronization
rounds to deliver messages that do not fit. Each individual message must fit
the configured size limit.

### Example

```ts
import {
  assertSame,
  createId,
  getOrThrow,
  testCreateDeps,
} from "@evolu/common";
import {
  createProtocolBroadcastMessagesFromCrdtMessages,
  MessageType,
  parseProtocolHeader,
  testAppOwner,
  testCreateCrdtMessage,
} from "@evolu/common/local-first";

const deps = testCreateDeps();
const broadcasts = createProtocolBroadcastMessagesFromCrdtMessages(deps)(
  testAppOwner,
  [testCreateCrdtMessage(createId(deps), 1, "Ada")],
);
assertSame(broadcasts.length, 1);
assertSame(
  getOrThrow(parseProtocolHeader(broadcasts[0])).messageType,
  MessageType.Broadcast,
);
```