
Research
/Security News
OpenAPI React Query Codegen Compromised in Mini Shai-Hulud npm Supply Chain Attack
Ten malicious OpenAPI React Query Codegen versions were published to npm in the Mini Shai-Hulud attack, all with valid provenance.
@opentui/solid
Advanced tools
Solid.js support for OpenTUI.
bun install solid-js @opentui/solid
{
"compilerOptions": {
"jsx": "preserve",
"jsxImportSource": "@opentui/solid"
}
}
preload = ["@opentui/solid/preload"]
import { render } from "@opentui/solid"
render(() => <text>Hello, World!</text>)
import solidPlugin from "@opentui/solid/bun-plugin"
await Bun.build({
entrypoints: ["./index.tsx"],
target: "bun",
outdir: "./build",
plugins: [solidPlugin],
compile: {
target: "bun-darwin-arm64",
outfile: "app-macos",
},
})
OpenTUI Solid exposes intrinsic JSX elements that map to OpenTUI renderables:
text, box, scrollbox, ascii_fontinput, textarea, select, tab_selectcode, line_number, diffspan, strong, b, em, i, u, br, arender(node, rendererOrConfig?)Render a Solid component tree into a CLI renderer. If rendererOrConfig is omitted, a renderer is created with default options.
import { render } from "@opentui/solid"
render(() => <App />)
Parameters:
node: Function returning a JSX element.rendererOrConfig?: CliRenderer instance or CliRendererConfig.testRender(node, options?)Create a test renderer for snapshots and interaction tests.
import { testRender } from "@opentui/solid"
const testSetup = await testRender(() => <App />, { width: 40, height: 10 })
extend(components)Register custom renderables as JSX intrinsic elements.
import { extend } from "@opentui/solid"
extend({ customBox: CustomBoxRenderable })
getComponentCatalogue()Returns the current component catalogue that powers JSX tag lookup.
useRenderer()onResize(callback)onFocus(callback)onBlur(callback)useTerminalDimensions()useKeyboard(handler, options?)usePaste(handler)useSelectionHandler(handler)useTimeline(options?)PortalRender children into a different mount node, useful for overlays and tooltips.
import { Portal } from "@opentui/solid"
;<Portal mount={renderer.root}>
<box border>Overlay</box>
</Portal>
DynamicRender arbitrary intrinsic elements or components dynamically.
import { Dynamic } from "@opentui/solid"
;<Dynamic component={isMultiline() ? "textarea" : "input"} />
text: styled text containerbox: layout container with borders, padding, and flex settingsscrollbox: scrollable containerascii_font: ASCII art text rendererQR code support is available from @opentui/qrcode/solid and must be registered explicitly with registerQRCode().
input: single-line text inputtextarea: multi-line text inputselect: list selectiontab_select: tab-based selectioncode: syntax-highlighted code blocksline_number: line-numbered code display with diff/diagnostic helpersdiff: unified or split diff viewerThese must appear inside a text component:
span: inline styled textstrong/b: bold textem/i: italic textu: underline textbr: line breaka: link text with hrefFAQs
SolidJS renderer for OpenTUI
The npm package @opentui/solid receives a total of 210,040 weekly downloads. As such, @opentui/solid popularity was classified as popular.
We found that @opentui/solid demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.

Research
/Security News
Ten malicious OpenAPI React Query Codegen versions were published to npm in the Mini Shai-Hulud attack, all with valid provenance.

Security News
Socket joins more than 100 technology, cybersecurity, and financial organizations calling for a global surge in cyber defense.

Product
Enterprise security teams can now detect malware, credential theft, suspicious network activity, and risky updates across Microsoft Edge extensions.