You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Plugin TUI: "No renderer found" thrown when slot renders against host (dual @opentui/solid instances) #27447
Since opencode 1.14.50, any TUI plugin that renders JSX into a host slot via @opentui/solid crashes the TUI on first render:
Error: No renderer found
at createElement (.../node_modules/<plugin>/dist/tui.js:965:17)
at <anonymous> (.../node_modules/<plugin>/dist/tui.js:1722:16)
at I (/$bunfs/root/chunk-*.js:2:7764)
at Cd (/$bunfs/root/chunk-*.js:2:11279)
...
The throw comes from the bundled reconciler: useContext(RendererContext) returns undefined, so createElement has nothing to attach to.
Reproduction
opencode 1.14.50
opencode-sdd-engram-manage@1.6.4 registered in ~/.config/opencode/tui.json
Launching opencode shows the fatal-error overlay immediately. Downgrading the host to 1.14.49 without touching the plugin restores normal behavior, so the regression is on the host side.
Why it happens
Solid resolves contexts by symbol identity. The plugin's bundled code reads RendererContext from its own imported copy of @opentui/solid. The host provides a RendererContext from its own copy. If those resolve to two module instances, the symbols don't match and useContext returns undefined.
The plugin marks @opentui/solid as a peerDependency and external in its tsup config, so it expects the host to provide the runtime. An earlier version of the same plugin (1.6.3) instead bundled @opentui/solid via noExternal. Both variants behave the same against 1.14.50, which points to a change in how the host exposes the renderer to plugin imports rather than something the plugin can fix on its own.
Impact
Any TUI plugin that uses @opentui/solid JSX in a slot hits the same throw, and because it propagates through the host's render tree the whole TUI dies instead of just the affected plugin.
A few options
Resolve @opentui/solid in plugin imports to the host's instance so the context is shared.
Expose a host-side helper like api.ui.mount(slotName, render) that runs JSX against the host renderer, so plugin authors don't import @opentui/solid directly.
Catch render errors at the slot boundary so a broken plugin disables itself instead of killing the TUI.
A defensive patch on the plugin side is at ricardo-rod/sdd-engram-plugin#33. It prevents the crash but doesn't fix the underlying mismatch.
Environment
opencode 1.14.50 (broken), 1.14.49 (works)
macOS 25.5.0, arm64
Installed via the official install script (~/.opencode/bin/opencode)
This issue might be a duplicate of an existing issue. Please check:
opentui: fatal: No renderer found #27430: Same Error: No renderer found crash at createElement in opencode-sdd-engram-manage, identical stack trace pattern and same plugin involved.
Activity
github-actions commentedon May 14, 2026
This issue might be a duplicate of an existing issue. Please check:
Error: No renderer foundcrash atcreateElementinopencode-sdd-engram-manage, identical stack trace pattern and same plugin involved.kommander commentedon May 15, 2026
See #27552 (comment)