MessagePort: 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 2023.

>

Note: This feature is available in Web Workers.

The messageerror event is fired on a MessagePort object when it receives a message that can't be deserialized.

This event is not cancellable and does not bubble.

Syntax

Use the event name in addEventListener():

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

Alternatively, assign to the event handler property of the interface:

js
onmessageerror = (event) => { }

Event type

A MessageEvent. Inherits from Event.

Event MessageEvent

Examples

>

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. For example, a window is not in the same agent cluster as a shared worker it created, so suppose the page runs the following code:

js
const worker = new SharedWorker("worker.js");
worker.port.start();
worker.port.addEventListener("message", (event) => {
  worker.port.postMessage(new SharedArrayBuffer(1024));
});

And worker.js contains the following code:

js
self.addEventListener("connect", (event) => {
  console.log("Hello");
  const port = event.ports[0];
  port.start();
  port.postMessage("Port connected");
  port.addEventListener("messageerror", (event) => {
    console.log("Message error");
  });
});

Then the shared worker will receive a messageerror event when it tries to deserialize the message sent from the window.

Note: You can use browser devtools to debug your SharedWorker, by entering a URL in your browser address bar to access the devtools workers inspector; for example, in Chrome, the URL chrome://inspect/#workers, and in Firefox, the URL about:debugging#workers.

Specifications

Specification
HTML>
# event-messageerror>
HTML>
# handler-messageeventtarget-onmessageerror>

Browser compatibility

See also