rEFui (0.17.4) is a retained-mode JavaScript framework for building UIs across web, native, and embedded environments. It uses signals for reactivity and a JSX-based component model without requiring a framework-specific compiler — any JSX-capable transpiler (Babel, esbuild, SWC, TypeScript) works out of the box. Built-in HMR support via the refurbish plugin for bundlers. The package ships with LLM-generated TypeScript declarations. Key differentiators: toolchain-agnostic design, unified API across web, NativeScript, and embedded (CheeseDOM/Resonance), and a focus on accessible tooling while delivering high-performance UIs.
npm install refuiNo compatibility data collected yet for this library.
Verified import paths — ran on the pinned version, not inferred.
Shows basic state management with signals and rendering to the DOM using rEFui's DOM renderer.
Use correct subpath imports: 'refui' for core, 'refui/dom' for DOM renderer, 'refui/browser' for browser defaults.
Use import syntax or configure your bundler for ESM.
Report issues on GitHub or manually augment types. Consider using // @ts-ignore as temporary workaround.
Set jsxFactory to 'R.c' and jsxFragment to 'R.f' in your transpiler config, or set jsxImportSource to 'refui' if using react-jsx transform.
Use on:click, on:tap, etc. as JSX attributes. See documentation for supported events.
Always use signal.value to access and mutate signals. Do not treat them as functions.
Ensure your bundler (Webpack 5+, Vite, etc.) respects the package.json 'exports' field. For Node.js, use at least version 12.20.
Use import { signal } from 'refui' instead of import signal from 'refui'.Install @types/react as a workaround or suppress with // @ts-ignore. Consider contributing type fixes.
Set 'jsx': 'react-jsx' and 'jsxImportSource': 'refui' in tsconfig.json, or set jsxFactory/R.c and jsxFragment/R.f.