Title: Rendering pipeline · Issue #4 · bombshell-dev/ui · GitHub
Open Graph Title: Rendering pipeline · Issue #4 · bombshell-dev/ui
X Title: Rendering pipeline · Issue #4 · bombshell-dev/ui
Description: We need a rendering pipeline in order to render any of this stuff, and handle a basic render loop (based on reactivity mostly). Prior art React import React from "react"; import { createRoot } from "react-dom/client"; function App() { re...
Open Graph Description: We need a rendering pipeline in order to render any of this stuff, and handle a basic render loop (based on reactivity mostly). Prior art React import React from "react"; import { createRoot } from...
X Description: We need a rendering pipeline in order to render any of this stuff, and handle a basic render loop (based on reactivity mostly). Prior art React import React from "react"; import { createR...
Opengraph URL: https://github.com/bombshell-dev/ui/issues/4
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Rendering pipeline","articleBody":"We need a rendering pipeline in order to render any of this stuff, and handle a basic render loop (based on reactivity mostly).\n\n## Prior art\n\n### React\n\n```ts\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nfunction App() {\n return \u003ch1>Hello, world!\u003c/h1>;\n}\n\nconst root = createRoot(document.getElementById(\"root\"));\nroot.render(\u003cApp />);\n```\n\n### Solid\n\n```ts\nimport { render } from \"solid-js/web\";\nimport { createSignal } from \"solid-js\";\n\nfunction App() {\n const [count, setCount] = createSignal(0);\n\n return (\n \u003cmain>\n \u003cbutton onClick={() => setCount(count() + 1)}>\n Count: {count()}\n \u003c/button>\n \u003c/main>\n );\n}\n\nrender(() => \u003cApp />, document.getElementById(\"root\"));\n```\n\n### Svelte\n\n```ts\nimport { mount } from 'svelte';\nimport App from './App.svelte';\n\nconst app = mount(App, {\n target: document.querySelector('#app'),\n props: { some: 'property' }\n});\n```\n\n## API design\n\nAll of these prior art examples have a `mount` or a `render` which takes a component and renders it to some target.\n\nSo in `@clack/ui`, we could potentially do similar:\n\n```ts\nimport { render, Box } from '@clack/ui';\n\nfunction App() {\n return new Box('some text', opts);\n\n // Once we have JSX bindings:\n // return \u003cBox>some text\u003c/Box>\n}\n\nrender(() => App(), process.stdout);\n\n// or alternatively\nconst root = createRenderer(process.stdout);\nroot.render(App());\n```\n\n## Open questions\n\n- Let's brainstorm how we want this API to look as there are still decisions to be made on the shape\n- We don't need to worry about `requestAnimationFrame` yet, until we decide the outer design. Internally, reactivity will call that method to trigger a re-render.\n","author":{"url":"https://github.com/43081j","@type":"Person","name":"43081j"},"datePublished":"2026-06-18T08:51:57Z","url":"https://github.com/bombshell-dev/ui/issues/4"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:de749d62-14aa-29b5-834d-97f5f467f76f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C010:854BF:1A0E359:23AAF57:6AF9AAA7 |
| html-safe-nonce | 6c0c3168dc9fc31055ee40452241aa6d30b1f99e885efa9d37434feefff30d9f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMDEwOjg1NEJGOjFBMEUzNTk6MjNBQUY1Nzo2QUY5QUFBNyIsInZpc2l0b3JfaWQiOiIyOTk5NDM2MTE3Mjg5NjQyMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ffef83959951208cc346f24915be9963a2eefeb26fa128a918b2b25337cc3d1c |
| hovercard-subject-tag | issue:4690760094 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/bombshell-dev/ui/4/issue_layout |
| twitter:image | https://opengraph.githubassets.com/705721231ca55ddeca2173025b7abce46b0501aa890886c3ff96104f870acfb2/bombshell-dev/ui/issues/4 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/705721231ca55ddeca2173025b7abce46b0501aa890886c3ff96104f870acfb2/bombshell-dev/ui/issues/4 |
| og:image:alt | We need a rendering pipeline in order to render any of this stuff, and handle a basic render loop (based on reactivity mostly). Prior art React import React from "react"; import { createRoot } from... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | 43081j |
| hostname | github.com |
| expected-hostname | github.com |
| None | 612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7 |
| turbo-cache-control | no-preview |
| go-import | github.com/bombshell-dev/ui git https://github.com/bombshell-dev/ui.git |
| octolytics-dimension-user_id | 169915079 |
| octolytics-dimension-user_login | bombshell-dev |
| octolytics-dimension-repository_id | 1267787446 |
| octolytics-dimension-repository_nwo | bombshell-dev/ui |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1267787446 |
| octolytics-dimension-repository_network_root_nwo | bombshell-dev/ui |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 072e34035c13c31543fba9f025cbbbda4210dae4 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width