Uniview

Uniview

Universal plugin system for React and Solid plugins that render in any host framework

Uniview is a universal plugin system that enables writing plugins in React or Solid that can be rendered by any host framework - Svelte, Vue, React, or custom implementations.

Why Uniview?

Modern applications often need extensibility through plugins. Uniview solves the challenge of:

  • Framework Lock-in: Write plugins once, render anywhere
  • Security: Sandboxed execution in Web Workers
  • Flexibility: Run plugins in browser, Node.js, Deno, or Bun
  • Type Safety: Full TypeScript support with RPC type checking
                              RPC (kkrpc)
┌───────────────────────┐ ◄──────────────────► ┌──────────────────┐
│  Plugin (React/Solid) │      UINode tree     │  Host (Svelte)   │
│  Web Worker           │                      │  or Vue, React   │
└───────────────────────┘                      └──────────────────┘

Key Features

Quick Example

// App.tsx
import { useState } from "react";

export default function App() {
  const [count, setCount] = useState(0);

  return (
    <div className="p-4">
      <p>Count: {count}</p>
      <button onClick={() => setCount((c) => c + 1)}>Increment</button>
    </div>
  );
}
// App.tsx
import { createSignal } from "solid-js";

const App = () => {
  const [count, setCount] = createSignal(0);

  return (
    <div className="p-4">
      <p>Count: {count()}</p>
      <Button onClick={() => setCount((c) => c + 1)} title="Increment" />
    </div>
  );
};

export default App;

Host (Svelte):

<script lang="ts">
  import { PluginHost } from '@uniview/host-svelte';
  import { createWorkerController } from '@uniview/host-sdk';

  const controller = createWorkerController({
    pluginUrl: '/plugins/my-plugin.js'
  });
</script>

<PluginHost {controller} />

Packages

PackageDescription
@uniview/protocolCore types, UINode schema, RPC interfaces
@uniview/react-rendererCustom React reconciler
@uniview/solid-rendererSolid universal renderer
@uniview/react-runtimeReact plugin bootstrap (Worker/Node.js)
@uniview/solid-runtimeSolid plugin bootstrap (Worker/Node.js)
@uniview/host-sdkFramework-agnostic host controller
@uniview/host-svelteSvelte 5 rendering adapter
@uniview/tui-rendererTerminal UI renderer (non-DOM)

Inspiration

Uniview uses custom reconcilers (React and Solid) to serialize component trees into a framework-agnostic UINode format, enabling plugins to render on any host platform.

On this page