VisionKit Document Scanner
Let users scan paper documents with the camera and upload them through your web app's file upload — powered by Apple VisionKit.
The Document Scanner feature adds a Scan Document option to the standard file-upload chooser of your app. The user can scan one or more pages with the camera; the app produces a document scan and uploads it through the standard <input type="file"> flow used by your web app. It is powered by Apple's VisionKit framework (VNDocumentCameraViewController) — with automatic edge detection, cropping, and enhancement.
How to Enable:
Turn the feature on in Config.swift:
var kVisionKitEnable = true
Set to false to hide the Scan Document entry.
User Experience:
- On your web page, the user taps an
<input type="file">. - The app shows an upload dialog with entries such as Scan Document, Camera, and Photo Library.
- Tapping Scan Document launches the VisionKit scanner: it detects edges, crops and enhances each page, and allows adding more pages.
- The resulting scan is fed back into the
<input type="file">— your web app receives it exactly like any other uploaded file.
Notes: Requires iOS 18.4 or higher and a device that supports the VisionKit document camera. On unsupported devices, the Scan Document entry is hidden automatically.
SDK-style implementation notes
Treat this feature as a native capability exposed to your web layer: keep your production website or PWA as the source of truth, then use the documented WebViewGold configuration flags, URL commands, and JavaScript bridge calls to opt in to native iOS behavior only where it adds value. This approach keeps your codebase maintainable because the same web application can serve browsers, WebViewGold for iOS, and the other WebViewGold platforms with minimal conditional logic.
For reliable results, prefer HTTPS endpoints, stable route names, explicit success/error states in your UI, and small JavaScript helper functions that wrap native calls. For example, a web app built with jQuery Mobile, Lovable, Base44, Bolt, WordPress, Bubble, a custom React/Vue/Angular stack, or static HTML can expose a single button or event handler that triggers the native WebViewGold API while still showing a graceful browser fallback.
- Recommended integration pattern: detect the app context, call the WebViewGold API, then update your web UI after the native callback or route change.
- Testing checklist: validate the feature on a real device or packaged build, verify permissions and store review text, and confirm that browser-only users still receive a useful fallback.
- SEO benefit: keep feature pages, route titles, and structured content indexable on your website while WebViewGold delivers the native app shell for iOS users.