I've been building Neon Vision Editor
for about a year — a lightweight, native code and text editor for macOS, iPadOS, and
iPhone written in Swift 6 with SwiftUI + AppKit. No Electron, no web views, no runtime
dependencies.
Here's what it does and some of the interesting technical decisions behind it.
What it does
- Syntax highlighting for code and Markdown
- Vim mode for keyboard-first editing
- Find & Replace with scope selection
- Find in Files across your project sidebar
- Configurable status bar — cursor position, word count, Git branch, encoding, indentation, file size, and more
- Code minimap with a draggable viewport marker for large file navigation
- Code snapshots for exporting readable code images
- Markdown support with live preview and configurable themes
- Indentation guides, invisible character rendering, current-line and matching-bracket highlighting
- Git integration — working-tree status, branch history, commit diffs, and a visual branch graph
- Split editor for comparing two files side by side
- Integrated terminal tab in the project sidebar
- On-device AI via Apple Foundation Models — completions run fully offline, no API key, no internet required
- Runs natively on macOS, iPadOS, and iPhone from a single codebase
Some technical decisions worth mentioning
AppKit + SwiftUI together. The core editor is AppKit-based for performance and
control over text rendering. SwiftUI wraps the chrome, settings, and sidebar. Getting
the two to stay in sync — especially around scroll position, layout invalidation, and
focus — has been the most consistently interesting challenge.
Swift 6 concurrency. The entire codebase is migrated to Swift 6 language mode.
Syntax highlighting, Git operations, Find in Files, and folder compare all run off the
main actor with explicit Sendable boundaries. The main payoff is eliminating a class
of threading bugs that only showed up under load.
Foundation Models on-device AI. Completions use Apple's Foundation Models API
directly — no third-party backend, no network call. The integration is gated on real
system availability, not a feature flag, so it degrades cleanly on unsupported hardware.
Markdown preview privacy. The preview WebView uses a non-persistent data store
with JavaScript disabled. Remote images become click-through placeholders rather than
loading automatically. This keeps the preview useful without it making unexpected
network requests.
Single codebase, three platforms. macOS, iPadOS, and iPhone share the same Swift
codebase with platform-specific layout paths. The hardest part is toolbar and sheet
density — what works at full macOS width needs a completely different information
hierarchy on a compact iPhone layout.
It is open source
Apache 2.0. All development happens in the open on GitHub. I ship releases as DMG
and ZIP for macOS, and there is a Homebrew tap for those who prefer that.
GitHub: https://github.com/h3pdesign/Neon-Vision-Editor
Download: https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.7.7
Homebrew: brew install h3pdesign/tap/neon-vision-editor
App Store: https://apps.apple.com/de/app/neon-vision-editor/id6758950965
Happy to answer questions about the AppKit + SwiftUI bridging, the Swift 6 migration,
or the Foundation Models integration.

Top comments (0)