CatActro
A PDF editor that is actually a Mac app, made of glass. No Electron, no web views, and undo works for every single edit.
- Role
- Designer & engineer
- Year
- 2026
- Stack
- Swift · SwiftUI · PDFKit · AppKit
- Target
- macOS 26 Tahoe · Xcode 26
- Design
- Liquid Glass
- Source
- Private repository
Preview is too little. Acrobat is too much. So I wrote my own.
CatActro is a document-based Mac app in the full sense. It has tabs, autosave, version history, iCloud Drive, Share and Print, and every edit can be undone. It saves back into a standard PDF that Preview and Acrobat can still open. It's built for macOS 26 and uses Apple's new Liquid Glass design throughout.
Press a key
The markup tools sit in a floating glass palette, and every tool has a single-key shortcut. Try them on this page. Esc returns to Select.
Three decisions that make it feel native.
Dirty tracking through undo
SwiftUI marks a ReferenceFileDocument as edited when an undo action is registered. Every page and annotation change goes through registerUndo, so undo and "unsaved changes" can never disagree.
Overlay, don't hijack
An annotation overlay takes a mouse event only when it needs it. Text selection, links and form fields keep PDFKit's own behaviour, so they work exactly as they do in Preview.
Edge-to-edge under the toolbar
The palette uses GlassEffectContainer with .glassEffect(.regular.interactive()). The PDF scrolls under the toolbar, with insets taken from the window's contentLayoutRect.
Everything else it does
- Glass sidebar with thumbnails, drag to reorder
- Drop PDFs in from Finder to merge them
- Rotate, insert, duplicate, delete, export a selection
- Search with a glass match navigator
- Native form filling, unlock password-protected files
- Inspector for comments, colours and metadata
Architecture
CatActro/ ├── App/ CatActroApp (DocumentGroup), menu commands ├── Document/ PDFFileDocument — ReferenceFileDocument wrapping PDFDocument ├── Editor/ EditorState — every mutation, every one undoable ├── Canvas/ CanvasPDFView · AnnotationOverlayView · PDFCanvas └── Views/ EditorView · ToolPalette · PageSidebar · InspectorView
Next on the roadmap: reusable signatures, OCR with Vision, and real redaction that removes the content instead of drawing a black box over it.