npm.io
0.9.0 • Published 2d ago

@renderify/runtime

Licence
MIT
Version
0.9.0
Deps
0
Vulns
0
Weekly
0
Stars
23

@renderify/runtime

Node CI npm license

Runtime execution engine for Renderify.

@renderify/runtime executes RuntimePlan trees, resolves JSPM modules, supports runtime source modules (TSX/JSX/TS/JS), and renders output to HTML or browser targets.

Install

pnpm add @renderify/runtime @renderify/ir @renderify/security
# or
npm i @renderify/runtime @renderify/ir @renderify/security

Main Exports

  • DefaultRuntimeManager
  • DefaultUIRenderer
  • JspmModuleLoader
  • renderPlanInBrowser
  • BabelRuntimeSourceTranspiler
  • Types from runtime-manager.types.ts and ui-renderer.ts

Framework Adapter Components

Runtime exports preact bridge components for mounting framework-native components inside Renderify trees:

  • VueAdapter
  • SvelteAdapter
  • SolidAdapter
import { VueAdapter } from "@renderify/runtime";
import Counter from "vue-counter-component";

export default function App() {
  return <VueAdapter component={Counter} props={{ initial: 1 }} />;
}

These adapters lazy-load framework runtimes via ESM import() and expose fallback text on mount failures.

Themes & Layout Primitives

Runtime also exports pre-built theme tokens and layout primitives:

  • renderifyThemes, resolveRenderifyTheme, ThemeProvider
  • Stack, Inline, Grid, Surface, MetricTile
import { ThemeProvider, Grid, MetricTile } from "@renderify/runtime";

export default function Dashboard() {
  return (
    <ThemeProvider theme="aurora">
      <Grid columns={3}>
        <MetricTile label="Requests" value="12.3k" delta="+8.2%" tone="success" />
      </Grid>
    </ThemeProvider>
  );
}

Quick Start (Browser)

import { renderPlanInBrowser } from "@renderify/runtime";
import type { RuntimePlan } from "@renderify/ir";

const plan: RuntimePlan = {
  specVersion: "runtime-plan/v1",
  id: "demo",
  version: 1,
  capabilities: { domWrite: true },
  root: { type: "element", tag: "div", children: [{ type: "text", value: "Hello" }] },
};

await renderPlanInBrowser(plan, { target: "#app" });

Quick Start (Manual Runtime)

import { DefaultRuntimeManager, JspmModuleLoader, DefaultUIRenderer } from "@renderify/runtime";

const runtime = new DefaultRuntimeManager({ moduleLoader: new JspmModuleLoader() });
const ui = new DefaultUIRenderer();

await runtime.initialize();
const execution = await runtime.execute({ plan });
const html = await ui.render(execution);
await runtime.terminate();

Notes

  • renderPlanInBrowser includes security checks by default (DefaultSecurityChecker).
  • Direct DefaultRuntimeManager instances reject plan.source unless trusted callers explicitly set allowRuntimeSourceExecution: true.
  • renderTrustedPlanInBrowser is the dedicated helper for reviewed source plans; the default renderPlanInBrowser policy accepts declarative plans only.
  • Browser sandbox modes (worker / iframe) are containment aids, not trusted security boundaries, and do not enable source execution under strict or balanced policy.
  • Integrity-pinned remote components/imports require RuntimeModuleLoader.loadVerified; the built-in JSPM loader verifies the response it materializes and executes.

Keywords