NativeScript 9.1 adds Node-API support, so many existing Node native addons can run with little or no change. The test runner was also rebuilt around Vitest, running real tests on a real device.

NativeScript 9.1 is now available. NativeScript lets you build native iOS and Android apps in JavaScript or TypeScript, and it is part of the OpenJS Foundation. 9.1 upgrades the underlying JavaScript engine and brings the runtime's behavior closer to how the web already works. As a result, skills you already have as a JavaScript developer carry over more directly.
Both the iOS and Android runtimes now run V8 14.9, up from V8 10.3. The jump covers roughly three and a half years of engine work, including a new JIT tier called Maglev, newer language features, and ongoing performance improvements. Most of the other changes in this release build on this newer engine.
A page that throws an error does not crash the whole browser tab, and NativeScript 9.1 brings that same behavior to native apps. An uncaught error is now reported through a real error event on globalThis instead of crashing the app. Unhandled promise rejections fire an unhandledrejection event and are tracked for the first time. Both used to disappear without a trace on iOS and Android.
Developers who rely on the old crash-on-error behavior, for example in a CI test harness or a crash reporting tool, can restore it with a single setting.
The runtime now has a proper event loop, so setTimeout, setInterval, and async work run in a predictable order instead of occasionally stalling each other. NativeScript 9.1 also adds performance, including PerformanceObserver, and structuredClone for copying and transferring data to and from worker threads. Both work the same way they do in browsers and in Node.
NativeScript 9.1 adds support for Node-API, the stable C interface Node.js uses for native addons. Many existing Node addons can now run in a NativeScript app with little or no change, instead of requiring a NativeScript-specific rewrite.
The test runner was rebuilt around Vitest. Tests run inside the actual NativeScript runtime on a device or simulator, not in a browser shim, so a test can mount a real view, run a real layout pass, and call native APIs directly. The runner also works on visionOS for the first time.
A rebuilt module system lets Vite's hot updates apply without restarting the app, so day-to-day development moves faster. The command-line tool now also manages the dev server automatically.
The project's stated goal is a runtime where nearly everything is callable from JavaScript, with a feedback loop fast enough that testing in development closely matches what ships. Planned follow-up work includes requestAnimationFrame support on iOS and closer alignment between native object lifetimes and JavaScript class semantics.
NativeScript 9.1 is available now. Full technical release notes are on the NativeScript blog, and the team welcomes feedback in the project's community Discord.