NatUI

NatUI documentation

Build real SwiftUI and WinUI 3 desktop interfaces with React and TypeScript.

NatUI is an alpha React 19 renderer for real native desktop controls. Your TypeScript and React state stay in JavaScript; SwiftUI on macOS or WinUI 3 on Windows owns layout, theming, focus, and accessibility.

No webview, no Electron runtime, no browser layout engine.

import { useState } from 'react';
import { Button, HStack, Text, VStack, run } from '@natui/core';

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

  return (
    <VStack spacing={12} padding={20} alignment="leading">
      <Text font="largeTitle" weight="bold">Hello, native</Text>
      <HStack spacing={8}>
        <Button onPress={() => setCount((value) => value - 1)}>-</Button>
        <Text font="title2" monospaced>{String(count)}</Text>
        <Button onPress={() => setCount((value) => value + 1)}>+</Button>
      </HStack>
    </VStack>
  );
}

await run(<App />, { title: 'my app', width: 480, height: 320 });

Explore the documentation

Current status

NatUI is still in alpha. The registry packages provide the JavaScript runtime, development tooling, config loader, and project generator. You still build native hosts from the source repository. Both hosts have real-window verification for the base demo, kitchen-sink app-shell workflow, and their embedded JavaScript runtimes. The repository-local packager emits a macOS .app or one self-contained Windows EXE.

On this page