Receipts for expense tracking
The user scans a crumpled receipt, the scanner flattens and crops it, and your backend stores the file and extracts amount, date and merchant with OCR or an AI model.
Bolt + document scanner
If your Bolt app has a file upload, it can have a real document scanner. WebViewGold adds a Scan document entry to the native upload dialog: Apple VisionKit on iPhone and Google ML Kit on Android find the page edges, crop and enhance each page, and hand the result to your existing file input like any other upload.
From $109 one-time per platform, or let our team do it all from $698.
The user scans a crumpled receipt, the scanner flattens and crops it, and your backend stores the file and extracts amount, date and merchant with OCR or an AI model.
Multi-page scans of leases, consent forms or onboarding paperwork go straight into the client record instead of arriving by email as blurry photos.
Delivery notes, inspection sheets, handwritten work orders: crews scan on site and the office sees a clean, readable document a minute later.
The scanner hooks into every standard <input type="file">. If Bolt already has an upload button, the scan entry appears there as soon as the setting is on.
Paste this into Bolt to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.
Prepare the document upload for the native scanner in the WebViewGold app. 1) Make every document upload a standard input type="file" with accept="image/*,application/pdf"; if a dropzone component is used, make sure it still renders that input and accepts PDF. 2) Upload directly from the browser to the Supabase Storage bucket documents under user_id/uuid.ext with supabase.storage.upload, not through a Netlify Function, because large multi-page PDFs exceed function payload limits. 3) Insert a row into a documents table (user_id, path, mime_type, size, status) with row-level security. 4) Add a Netlify Function process-document that is called with the document id, downloads the file with the service role key from Netlify environment variables and stores the extracted text or fields. 5) Show upload progress and a friendly error for files over 20 MB. 6) When navigator.userAgent contains WebViewGold, show the hint "Tip: choose Scan document for a clean copy".

My iOS WebView is finally approved. Thanks!!
Half an hour, including a test on two phones.
iOS: var kVisionKitEnable = true in Config.swift. Android: ENABLE_ML_KIT_DOCUMENT_SCANNER = true in Config.java. Set either one to false to hide the entry again.
Android returns a PDF of up to 5 pages per scan, and the upload dialog adapts its entries to the input's accept attribute. Use something like accept="image/*,application/pdf" and make sure your upload code and storage accept application/pdf.
A multi-page scan is larger than a profile photo. Check the size limits of your upload route and storage bucket, and show progress while the file travels over mobile data.
The scanner uses the camera, so the camera usage description should mention documents, for example "to scan receipts and attach them to your expense reports".
iOS needs iOS 18.4 or later and a device that supports the VisionKit document camera; elsewhere the entry hides itself. Android needs Google Play Services. Simulators and emulators are not a realistic test.
| iOS | Android | |
|---|---|---|
| Scanner | Apple VisionKit document camera | Google ML Kit Document Scanner |
| Setting | kVisionKitEnable in Config.swift | ENABLE_ML_KIT_DOCUMENT_SCANNER in Config.java |
| Entry in the upload dialog | Scan Document, next to Camera and Photo Library | Scan document, next to the photo, video and gallery entries the accept attribute allows |
| What your input receives | The finished scan, like any uploaded file | A PDF, up to 5 pages per scan |
| Requirements | iOS 18.4 or later on a supported device | Google Play Services |
| Built in | Edge detection, cropping, enhancement, additional pages | Edge detection, cropping, enhancement, additional pages, gallery import |
Works for photos, scans and PDFs, in the browser and in the app. Point /api/documents at your upload route; for your Bolt app that lives in: Supabase, Firebase or your own API.
// <input type="file" id="doc" accept="image/*,application/pdf">
document.getElementById("doc").addEventListener("change", async function (e) {
var file = e.target.files && e.target.files[0];
if (!file) return;
var isPdf = file.type === "application/pdf" || /\.pdf$/i.test(file.name);
if (file.size > 20 * 1024 * 1024) { showError("That scan is too large. Try fewer pages."); return; }
var form = new FormData();
form.append("file", file, file.name || (isPdf ? "scan.pdf" : "scan.jpg"));
showStatus("Uploading " + (isPdf ? "document" : "photo") + "…");
var res = await fetch("/api/documents", { method: "POST", body: form });
showStatus(res.ok ? "Saved. We are reading it now." : "Upload failed. Please try again.");
});Usually not. Every standard file input gets the scan entry once the setting is on. Check that the input accepts PDF as well as images, because Android returns a PDF, and that your upload limit allows multi-page files.
On Android a PDF with up to 5 pages per scan. On iOS the VisionKit scan arrives through the same file input; accept both images and PDFs and test the result on a device before you build anything that depends on the format.
The scanner captures, crops and enhances the pages. Reading the text is up to your backend: send the uploaded file to an OCR or AI extraction service on the server and store the result next to the document.
The iOS entry needs iOS 18.4 or later and a device that supports the VisionKit document camera. On other devices it is hidden automatically and users still see Camera and Photo Library.
No. VisionKit is part of iOS and the ML Kit Document Scanner runs through Google Play Services, so there are no per-scan fees. Costs only appear if you send the files to a paid OCR or AI service.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.