Native Shell (NSH) v0.4.0 · tried on Teleprompter, 4 November 2026 Impressive, but not ready to depend on yet Teleprompter was rebuilt with Native Shell (nsh.dev) as a native Mac app and a web app, from one TypeScript codebase. The core ideas held up. But two silent flaws would have shipped broken apps, and three of the web app's features needed workarounds. Recommendation Keep the web app and Fanlight for now. Look at NSH again in two to three months, or sooner if the blockers are fixed. NSH ships about a release a week, so a fixed wait of six months would be too cautious. Watch its release notes for three fixes: text outside the window being drawn, file dialogs for TypeScript apps, and the web build accepting the Mac's permissions. Until then, a rewrite of a mature, carefully tuned web app has to find its small behaviours again one by one: the controls' show and hide rules, the samples, the script screen. Here that cost more than NSH saved. The Mac app came from the web app; the new web app came from the Mac app OriginalLive web appHTML, CSS and JavaScript Rewritten by hand in NSH, reusing the parser, Word converter, samples and audio code One codebaseNSH sourceabout 2,200 lines of TypeScript Built by NSH for macOS GeneratedNSH Mac appbuilt first, tested by hand Built by NSH for the web, plus 3 small web-only branches GeneratedNSH web buildmade from the Mac app's code Only the first step was work. The web build needed no rewrite: it is the Mac app's source, built for a browser. The happy path is fast and smooth 3–6 msBuild after a changewith reload on save 0.1 sPackage the Mac app4 s for the web 120 fpsScrolling the script0 dropped, 6% CPU 16 testsHeadless, under 5 sfake clock, no window One codebase really did give two apps Shared by both 2,232 lines Web-only page script 65 Web-only branches ~30 The web build differs only in opening files, saving and the samples menu. Side by side, the three look almost the same The same window size, sample and light mode in each. Tap a picture to see it full size. Live web appNSH web buildNSH Mac app Script screen Live web app NSH web build NSH Mac app Prompter Live web app NSH web build NSH Mac app Settings Live web app NSH web build NSH Mac app The differences you can spot are all small fixes Each is a styling or wording change in the app's own code, not a limit of NSH. Reading line: the live app marks both ends; NSH marks only the left. Settings: the live app puts labels beside the controls; NSH groups them under headings and adds Appearance. Sliders: dark thumbs on the live app, white ones on NSH. NSH web: showed “Same as Mac”, a Mac label, in a browser. Now fixed: it says “Same as system”. Install app: only the live app offers it. Where it earned its claims Testing Best-in-class UI tests Playwright-style steps run headless and in a real Mac window, with screenshots. They caught most bugs before a click. Native feel A real Mac app Native menus, text fields, floating windows, and light or dark with one call. Reuse Plain JavaScript ported as-is The parser and the Word converter came over unchanged. Escape hatch Web views run real code The microphone, MP3 and Word code ran inside one, untouched. Two silent flaws would have shipped broken apps Mac and web Text below the first screen was never drawn NSH skips text whose layout is out of sight and ignores animated transforms. Long scripts scrolled into blank space. Fixed with a scroll view moved each frame. Web The web app wouldn't start Its engine refused a permission format the Mac accepts, with no documentation. Fixed by using bare command names. Neither was caught by tests. Screenshots and hands-on checks found both. Basic needs took workarounds Need What NSH lacks Workaround Open and Save panels File dialogs (Rust apps only) AppleScript on the Mac; a page script on the web Microphone and recording Volume levels and audio capture A hidden web view Saving long recordings Files over 8 MiB Streaming through base64 Word import Libraries that patch built-ins mammoth in a hidden web view Samples menu on the web Native menus in browsers NSH's own drawn menu Each workaround is something to keep in step as NSH changes. It is very young 17 Octv0.1.0, the first release 22 Octv0.2.0, still the Homebrew version on 4 Nov 26 Octv0.3.0 4 Novv0.4.0, released the day this experiment began 40 MBMac app on diskmostly NSH's runtime 1.4 MBWeb first visitcompressed; 6.5 MB built 4.3 MBWebAssembly engineuncompressed ~120 MBMac app's memorywhile running Choose it for new apps, not for rebuilding a tuned one Good fit A new app needing native Mac or iOS plus the web Built mostly from NSH's own components Rust is acceptable, which lifts the file and engine limits Poor fit Rebuilding a mature, heavily tuned web app Apps that lean on the microphone or files Anything that can't absorb breaking changes Sources Figures are from the experiment itself: the teleprompter-nsh repository, its NOTES.md, its test runs and NSH's own frame-rate monitor. Release dates are from NSH's GitHub releases. NSH itself: nsh.dev.