Native threading, native feel.
NativeScript has kept JavaScript on the main UI thread for 10+ years - the same model native platforms demand. That’s why CADisplayLink springs in TypeScript can deliver the same interruptible, in-process behavior SwiftUI uses.
Yes, NativeScript runs its JavaScript on the main thread, so a spring stepped by CADisplayLink in TypeScript does what SwiftUI's animations do: each frame's value is computed in the app process and committed to the layer. Nothing goes through the render server.
See this side-by-side showing the same interruptible interactions and also this gist for deeper explanation: gist.github.com/NathanWalker…
Some have asked why not develop it in SwiftUI? I actually love Swift in general. The reason I used @NativeScript is because I plan to deploy this to Android foldables as well.
Here it is on a Samsung Galaxy Z Fold3.
Guitar Pocketbook, my first iPhone Duo app.
- AVAudioEngine graph in TypeScript
- Folding drives the mix (reverb and tone)
- Hinge glows with audio frequency
- WebGPU (metal) handles all visual fx
Built with @NativeScript
It does, with 9.1, you can use new nativescript.config.ts options (runtimePackageName) like this:
```
android: {
runtimePackageName: '@nativescript/android-quickjs-ng' },
ios: {
runtimePackageName: '@nativescript/ios-quickjs' },
```
We're planning to post a separate post about all things NAPI engine related like this (deserves focus on it's own - big topic) - be sure to `npm install` the `alpha` of those.
It's mentioned in release post as subtle note blog.nativescript.org/native…
Guitar Pocketbook, my first iPhone Duo app.
- AVAudioEngine graph in TypeScript
- Folding drives the mix (reverb and tone)
- Hinge glows with audio frequency
- WebGPU (metal) handles all visual fx
Built with @NativeScript
Step 1, install Xcode 27.1 Beta and set Active.
Step 2, use NativeScript 9.1 with Info.plist adjustment:
---
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationPreferredDefaultSceneSessionRole</key>
<string>UIWindowSceneSessionRoleApplication</string>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
</dict>
---
See docs.nativescript.org/guide/… for more.
Step 3. Enjoy
When using new 9.1 alongside Vite, new helpful tips have been added here:
docs.nativescript.org/config…
✅ If providing to agents, use md or add the Docs MCP:
```
{
"mcpServers": {
"nativescript": {
"url": "docs.nativescript.org/mcp"
}
}
}
```
can’t wait to try my NativeScript apps on this puppy. Apple’s api’s handle all kinds of new transitions and automated menu positioning that will either work day one, or will need some tweaking. We’ll see.
NativeScript 9.1 turns a running native app into a live JavaScript module graph.
It gives any framework the primitives to define what happens when the graph changes.
Native apps can now participate in the live module semantics modern JavaScript tooling assumes.
This is using v8, but you can switch it to Hermes by adjusting your nativescript.config like this:
```
android: {
runtimePackageName: '@nativescript/android-hermes'
},
ios: {
runtimePackageName: '@nativescript/ios-hermes'
},
```
We're going to share more about this soon.
Looks familiar.
Runs native.
Built with 9.1 + latest @octanejs.
How to get a realtime visual feedback loop with any framework. 📓👇 The ChatGPT mobile experience.