BroadcastChannel: messageerror event

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.

Note: This feature is available in Web Workers.

The messageerror event of the BroadcastChannel interface fires when a message that can't be deserialized arrives on the channel.

Syntax

Use the event name in methods like addEventListener(), or set an event handler property.

js
addEventListener("messageerror", (event) => { })

onmessageerror = (event) => { }

Event type

A MessageEvent. Inherits from Event.

Event MessageEvent

Examples

Listening for messageerror events

This code uses addEventListener() to listen for messages and errors:

js
const channel = new BroadcastChannel("example-channel");

channel.addEventListener("message", (event) => {
  received.textContent = event.data;
});

channel.addEventListener("messageerror", (event) => {
  console.error(event);
});

The same, but using the onmessage and onmessageerror event handler properties:

js
const channel = new BroadcastChannel("example-channel");

channel.onmessage = (event) => {
  received.textContent = event.data;
};

channel.onmessageerror = (event) => {
  console.log(event);
};

Attempting to share memory

A common cause of messageerror events is attempting to send a SharedArrayBuffer object, or a buffer view backed by one, across agent clusters. The following code demonstrates this.

Page A runs the following code:

js
const channel = new BroadcastChannel("hello");
channel.postMessage({ data: new SharedArrayBuffer(1024) });

Page B runs the following code:

js
const channel = new BroadcastChannel("hello");
channel.addEventListener("messageerror", (event) => {
  console.error("Message error");
});

Then page B will receive a messageerror event when it tries to deserialize the message sent from page A.

Specifications

Specification
HTML
# event-messageerror
HTML
# handler-broadcastchannel-onmessageerror

Browser compatibility

See also