Skip to content

Getting Started

#Requirements

  • macOS 14 or later
  • Bun 1.4 or later
  • TypeScript 7
  • Xcode Command Line Tools (xcode-select --install)

macOS is the supported target today.

#Create a project

bunx @quickgui/cli init my-app --language typescript
cd my-app
quickgui dev

init writes the project and installs dependencies. Omit --language to choose Go, TypeScript, or Rust interactively.

#Your first window

import { app, Window } from "@quickgui/native";
import { Button, Text, View, createRenderer } from "@quickgui/solid";
import { createSignal } from "solid-js";

function Counter() {
  const [count, setCount] = createSignal(0);
  return (
    <View style={{ padding: 24, display: "flex", flexDirection: "column", gap: 12 }}>
      <Text>Count: {count()}</Text>
      <Button onClick={() => setCount(count() + 1)}>Increment</Button>
    </View>
  );
}

function openWindow() {
  new Window({ title: "Counter", width: 720, height: 480, renderer: createRenderer(Counter) });
}

app.on("reopen", ({ hasVisibleWindows }) => {
  if (!hasVisibleWindows) openWindow();
});
await app.whenReady();
openWindow();

reopen opens a window again when the user clicks the Dock icon and none are visible.

#Run and build

quickgui check
quickgui test
quickgui fmt
quickgui dev
quickgui build

dev rebuilds as you edit. build writes a packaged app under dist/.

#Next steps