ns-octane is a NativeScript app that uses the Octane compile-time framework to render views without virtual DOM or DOM shim, leveraging ahead-of-time compilation and a universal host driver.

Stars

11

7-day growth

No data

Forks

0

Open issues

0

License

Apache-2.0

Last updated

2026-07-28

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It demonstrates a novel approach to NativeScript rendering by eliminating virtual DOM overhead and runtime reactivity, using a static plan + slot table model, and includes advanced iOS features like SwiftUI integration with custom Metal shaders.

Who it is for

  • NativeScript developers seeking alternative rendering architectures
  • Web developers interested in compile-time frameworks
  • Mobile app developers exploring no-virtual-DOM approaches
  • Developers wanting to integrate SwiftUI/Metal effects with NativeScript

Use cases

  • Building high-performance NativeScript apps with minimal runtime overhead
  • Experimenting with ahead-of-time compiled component frameworks
  • Integrating custom SwiftUI views and Metal shaders in a NativeScript app
  • Learning about universal host driver patterns for non-DOM environments

Strengths

  • Ahead-of-time compilation eliminates virtual DOM and runtime diffing
  • Clean integration with @nativescript/core via small driver and intrinsics modules
  • Includes Tailwind v4 styling without configuration files
  • Demonstrates bidirectional state flow between SwiftUI and NativeScript via shader uniforms and events

Considerations

  • iOS shader features require iOS 17+ and are not available on Android
  • Tag names must be lowercase; camelCase causes type errors
  • HMR is disabled (--no-hmr) which may slow development iteration
  • Relies on Octane framework which has a smaller ecosystem compared to React or Vue

README quick start

ns-octane

A NativeScript app rendered by Octane. No React, no virtual DOM, no DOM shim.

Octane compiles components ahead of time. For a renderer-owned .tsx it emits a static plan plus a slot table rather than a tree of elements:

universalPlan("nativescript", {
  kind: "host", type: "gridlayout", props: { rows: "*,auto,auto,auto,*" },
  children: [{ kind: "host", type: "label", bindings: [["row", 0]], … }]
})

At runtime that plan turns into a batch of create / update / insert / event / destroy commands. Applying those commands to @nativescript/core views is the entire port.

How it is wired

Octane ships octane/universal/native, a host-neutral runtime with no dependency on its DOM half — built for JS environments without DOM globals, which is exactly NativeScript. The integration is four small modules in src/octane/, following the shape @octanejs/three uses for its non-DOM renderer:

FileRole
config.tsSerializable renderer metadata, read by vite.config.ts
renderer.tsCompiler-facing ABI — re-exports the universal runtime
driver.tsUniversalHostDriver: host commands → NativeScript views
intrinsics.tsJSX element types, derived from the core view classes
elements.tsTag name → view constructor, plus event-name aliasing

@octanejs/vite-plugin runs alongside @nativescript/vite, with the renderer scoped to src/**/*.tsx by rule. Everything else stays untouched.

Three details worth knowing before editing:

  • Tag names are lowercase, , ``. They match the driver's registry keys. Unknown or camelCase names are a type error, not a blank screen.
  • Props are view properties, not attributes. The driver assigns them onto the instance, so anything on the @nativescript/core class works and is typed as such.
  • Text is a host node. Octane lowers Hi to a #text child; the driver keeps those viewless and folds them into the parent's text, since NativeScript has no text nodes.

Styling

Tailwind v4 through @nativescript/tailwind, which auto-registers its PostCSS chain — no postcss.config.js or tailwind.config.js. app.css imports theme and utiliti

Description

Octane with NativeScript

Related repositories

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

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
uzairansaruzi
Featured
uzairansaruzi GitHub avatar

hermex

Hermex is a native SwiftUI iPhone app that lets you control a self-hosted Hermes AI agent directly from your phone, with no subscriptions, tracking, or third-party relay.

AI & Machine LearningLarge Language Models
941
nsdkinx
Featured
nsdkinx GitHub avatar

twell

Twell is a tiny, embeddable, zero-allocation physics engine for interruptible, Apple-style UI animations, available as a single-header C library with Python bindings.

MobileDesign & Creative
17