WatchDocs is an iPhone and Apple Watch document viewer for reading PDF and DOCX files offline on Apple Watch. The iPhone app imports documents, renders page images, and transfers prepared packages to the paired watch. The watchOS app lists transferred documents and opens them page by page.
- Import multiple PDF or DOCX files from the iPhone Files picker.
- Watch packages generated locally on iPhone.
- Render PDF pages to compressed JPEG page images before transfer.
- Convert DOCX files by extracting readable text from
word/document.xml, rendering that text to PDF, then rendering PDF pages to JPEG. - Transfer prepared document packages with
WatchConnectivity. - View transferred documents offline on Apple Watch.
- Zoom pages on Apple Watch and keep the zoom level while changing pages.
- Delete documents from either device and sync delete requests when possible.
iOS/- SwiftUI iPhone app, document import, preprocessing, and watch transfer.WatchApp/- watchOS SwiftUI app, receiver, local document list, and page viewer.WatchExtension/- WatchKit extension plist used by the watchOS SwiftUI target.Shared/- shared models, constants, package storage.
- Xcode 26.4 or later.
- iOS 17.0 or later.
- watchOS 10.0 or later.
- A paired iPhone and Apple Watch for full testing.
- Open
WatchDocs.xcodeprojin Xcode. - Select the
WatchDocsscheme. - Select a paired testing iPhone destination.
- Confirm all three targets use your Apple Developer team:
WatchDocsWatchDocs Watch AppWatchDocs Watch Extension
- Run the iPhone app from Xcode.
- Install the watch app by running the watch target directly from Xcode (IDK why but installing by Watch app on iOS or even opening it causes bugs with pairing for whatever reason).
For clean device testing, delete WatchDocs from both iPhone and Apple Watch, then use Product > Clean Build Folder before installing again.
PDF support uses PDFKit on iPhone and sends rendered JPEG pages to Apple Watch. The watch app does not parse or display native PDF files.
DOCX support is text-focused. It extracts paragraph text from word/document.xml, preserves line breaks and tabs, flattens table text into the reading flow, and ignores embedded images or advanced styling. This keeps conversion local, fast, and dependency-free.
The app uses local JSON files and package directories. It does not use accounts, cloud sync, subscriptions, analytics, or a backend.
Watch packages use this structure:
<document-id>.watchdoc.zip
manifest.json
pages/
page_001.jpg
page_002.jpg