react-native-gtkx brings the React Native API to the Linux desktop by rendering real GTK4/Adwaita widgets through a React reconciler and Yoga layout, with no WebView and no canvas rendering.

Stars

4

7-day growth

No data

Forks

0

Open issues

0

License

MIT

Last updated

2026-07-31

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It treats Linux as a first-class React Native out-of-tree platform, supports the standard Metro/Vite toolchains with Fast Refresh, and integrates react-navigation with native libadwaita navigation widgets—something the README says no other out-of-tree React Native platform has done.

Who it is for

  • React Native developers who want to ship Linux desktop apps
  • GNOME/Linux desktop developers interested in building apps with React and JavaScript
  • Teams maintaining React Native apps that want to add a Linux desktop target
  • Developers exploring React Native out-of-tree platform and native rendering approaches

Use cases

  • Create native GNOME applications using familiar React Native components
  • Add Linux as a run target to an existing React Native app via npx react-native run-linux
  • Build desktop apps with native Adw.NavigationView and Adw.NavigationSplitView navigation
  • Use the Vite preset for Linux-first React Native projects

Strengths

  • Renders on real GTK4/Adwaita widgets instead of WebView or canvas
  • Native navigation backed by Adwaita widgets and kept in sync with react-navigation state
  • Performance architecture avoids bridge serialization; measured 0.13–0.17 ms for a 500-node reflow
  • Supports Metro/Vite tooling, Fast Refresh, out-of-tree platform config, and includes 449 tests

Considerations

  • Linux-only: requires GTK4 >= 4.20, libadwaita >= 1.8, and Node.js >= 24
  • Still a young project with an API v1 surface and an upstream gtkx agenda of workarounds and asks
  • Desktop-focused: the native-stack navigation model is specific to GTK4/libadwaita and not applicable to other desktop platforms

README quick start

react-native-gtkx

React Native for the Linux desktop. Write apps against the familiar React Native API — they run as native GNOME applications on real GTK4/Adwaita widgets, with no WebView and no canvas rendering.

Under the hood: gtkx (a React reconciler for GTK4 on Node.js) + Yoga (the RN flexbox engine). The model follows react-native-web: a compatibility layer on top of another renderer, with the react-nativereact-native-gtkx alias provided by the Metro preset (Linux as a standard RN out-of-tree platformnpx react-native run-linux next to run-ios/run-android) or by the vite preset for Linux-first projects.

examples/hn-app, live in native GTK windows: a Hacker News reader on the standard React Native Metro toolchain. Tapping a card pushes a real Adw.NavigationView page — the back button, the slide and the preserved list position come from the platform, not from JS. The search field sits inside the HeaderBar (real RN content in native chrome) and queries the HN API; comments load as you scroll. The data layer is plain Node fetch — on this platform "native modules" are just Node.

And the portability proof — examples/profile renders ONE source file with both renderers, not a single @gtkx/* import in it:

react-native-gtkx (GTK4)react-native-web (browser)

Status

  • Yoga + GtkFixed spike — GO (0 px accuracy, 500-node reflow in 0.17 ms, 60 fps — docs/research/yoga-gtk-spike.md)
  • Dev environment (UTM VM with a native GNOME session, headless sway for tests) and dev workflow
  • gtkx bridge (isolation from the RC API; workaround catalog)
  • Layout engine (Yoga shadow tree, measure via Pango, batching, diffing, onLayout)
  • StyleSheet: layout/visual split, CSS Color 4 colors, PlatformColor → Adwaita
  • View / Text / Image / AppRegistry — first RN render in GTK
  • Platform

Description

React Native for the Linux desktop — apps on the RN API rendered as native GTK4/Adwaita widgets

Related repositories

Similar projects matched by category, topics, and programming language.

NUber-dev
Featured
NUber-dev GitHub avatar

YTubic

YTubic is a fast, responsive, open-source YouTube Music desktop client for Windows, Linux, and macOS that uses direct InnerTube API communication and aggressive caching to provide instant navigation and playback.

Web DevelopmentFrontend Frameworks
226
TanStack
Featured
TanStack GitHub avatar

router

TanStack Router is a type-safe, data-driven React router with built-in caching, prefetching, and nested layouts, while TanStack Start extends it into a full-stack SSR framework.

Web DevelopmentFrontend Frameworks
14,861
makecindy
Featured
makecindy GitHub avatar

cindy

Cindy is an open-source AI agent that runs locally on your machine, integrates multiple AI harnesses and models, and provides memory, skills, and automation to perform real work in your projects and apps.

AI & Machine LearningLarge Language Models
958