Skip to content

✨ solid: add adapter and hello-world example - #31

Closed
cowboyd wants to merge 1 commit into
tree-hello-worldfrom
tree-solid
Closed

cowboyd wants to merge 1 commit into
tree-hello-worldfrom
tree-solid

Conversation

@cowboyd

@cowboyd cowboyd commented Aug 7, 2026 •

Copy link
Copy Markdown
Contributor

Solid is a strong first test of the integration boundary because it does not reconcile through a conventional virtual DOM. Its universal renderer performs fine-grained creation, insertion, removal, property, and text operations directly. Supporting that model cleanly demonstrates that the Host is not secretly shaped around React and that reactive updates can flow through the same mutation, layout, and rendering pipeline as raw code.

A Solid root mounts into any attached Host element rather than owning the terminal runtime. Lowercase native elements receive types derived from the open core HostElements registry, and internal oninput properties become idiomatic onInput JSX callbacks. This keeps terminal ownership in createUI() and allows Solid subtrees to coexist with raw or other framework-managed content.

import { createUI } from '@clack/ui';
import { createRoot } from '@clack/ui-solid';
import { HelloWorld } from './app.tsx';

await using ui = await createUI({
	input: process.stdin,
	output: process.stdout,
});

const root = createRoot(ui.host.element);
root.render(() => <HelloWorld />);

await ui.main();

This PR adds @clack/ui-solid, a Solid universal renderer backed by the framework-neutral Host, typed intrinsic elements, JSX runtime exports, and root mounting and unmounting. It maps Solid text, property, event, insertion, movement, and removal operations to Host mutations. It also adds a Solid version of the Hello World example.

2026-08-07 00 55 57

@socket-security

socket-security Bot commented Aug 7, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​babel/​preset-typescript@​7.29.71001007289100
Added@​bomb.sh/​tools@​0.5.6741007699100
Added@​babel/​cli@​7.29.7991007695100
Added@​babel/​core@​7.29.7971007996100
Addedbabel-preset-solid@​1.9.121001008495100
Addedsolid-js@​1.9.1410010010096100

View full report

@socket-security

socket-security Bot commented Aug 7, 2026 •

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@pkg-pr-new

pkg-pr-new Bot commented Aug 7, 2026 •

Copy link
Copy Markdown
More templates

npm i https://pkg.pr.new/bombshell-dev/ui/@clack/ui@31
npm i https://pkg.pr.new/bombshell-dev/ui/@clack/ui-solid@31

commit: 7d4d15d

@cowboyd

cowboyd commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

closing out in favor of a DOM based substrate. See #37

@cowboyd cowboyd closed this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant