Remote: a failing render() in the remote iframe becomes an unhandled rejection on the host
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 58/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- backend-api-design, frontend
Research direction
Start at the end of packages/remote-core/src/connection/connectRemoteIframe.ts, where result.thread.imports.render(connection) is called, and read how onError reaches RemoteRenderer’s error state. Then inspect connectHostRenderRoot.ts and RemoteMutationObserver.observe to understand the reported rejection and reproduce it in Firefox with an affected extension. Done means a failed render reaches onError without causing an unhandled rejection; the issue names no test.
Written by the indexing model from the issue text.
Description
When the remote's render fails, the host gets an unhandled promise rejection instead of the RemoteRenderer error state. The rejection crosses the thread boundary, so it arrives without a stack trace.
Where
packages/remote-core/src/connection/connectRemoteIframe.ts, end of connectRemoteIframe:
result.thread.imports.render(connection);
return result;
The call is neither awaited nor given a catch. On the remote side, render runs connectRemoteReceiver (connectHostRenderRoot.ts), which calls new RemoteMutationObserver(receiverConnection).observe(root). Anything that throws there rejects the host's render promise, and nobody handles it.
Seen in mStudio
mStudio Sentry shows 5 events from 3 users since mid-October, all on pages that embed an extension frontend, all in Firefox 157/158 (Linux and Windows):
TypeError: MutationObserver.observe: One of 'childList', 'attributes', 'characterData' must not be false.
mechanism: onunhandledrejection, no stack frames
RemoteMutationObserver.observe defaults childList, attributes and characterData to true, so why Firefox throws inside the iframe is still unclear. It could be a different remote-dom-core version bundled by the extension, or something Firefox-specific. That part needs a reproduction in Firefox with an affected extension.
Expected
A failing render is reported through onError, so RemoteRenderer shows its error state and the host app does not get an unhandled rejection.
- Dominant language
- TypeScript
- Stars
- 15
- Forks
- 4
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 128
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mittwald/flow
-
Markdown: wide tables overflow their container instead of scrollingPossibly taken @Lisa18289 claimed this today. Openbug component
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
docs(agents): state which release line a change belongs to next to the migration catalogue ruleOpen
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mittwald/flow#3205 · 1 comment ·
Maintainers usually reply within 1 day
-
feedback to-discuss ux
Difficulty 5/5 Over a week Newbie friendliness 25/100
Maintainers usually reply within 1 day
-
feedback to-discuss ux
Difficulty 5/5 Over a week Newbie friendliness 25/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 74/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
remotion-dev/remotion#12905 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
supermomonga/paseo-plugin-zcode-provider#83 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
oxidecomputer/skepsis#102 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
voidzero-dev/void#677 ·
Maintainers usually reply within 1 day