Privacy Policy — MeshView
Effective date: October 9, 2026
MeshView ("the app") is an Android, iPhone and iPad app that opens and inspects 3D model files (.stl and
.3mf) — dimensions, triangle count, volume, surface area, and (with the optional MeshView Pro
unlock) Pro tools such as a two-point measure tool, a printability check, a wall-thickness map and cross-sections.
This policy explains exactly what the app does and does not do with your information.
Your model files never leave your device
All parsing and rendering happen locally on your phone. The app does not upload, transmit, back up, or copy your model files, their geometry, or any embedded colour data to any server — ours or anyone else's. There is no account and no cloud storage (purchases use an anonymous ID — see "Purchases" below). Opening and viewing model files works fully offline.
The app reads a file only when you explicitly choose it through the Android file picker, or when you share a file into MeshView from another app (for example, a file manager's "Open with" menu). It does not request broad storage access and cannot browse your device on its own.
Anonymous usage analytics
The app sends a small number of anonymous usage events through Aptabase, a privacy-focused analytics service, to understand which features are actually used and to guide future development. Aptabase is the only processor of this usage data; purchases are handled separately by RevenueCat (see "Purchases").
Every event is a discrete, named occurrence with a small number of fixed-value properties. There are 23 events in total:
- the app was opened
- a file was opened, plus its format (STL or 3MF), how it arrived (picked, or shared in from another app), a coarse size band for its triangle count, and whether it carried embedded colour
- a file failed to open, plus the general kind of failure (for example, unsupported format or corrupt file), the file's extension reduced to a fixed list of known labels (anything else is just "other"), how it arrived (picked, or shared in), and a general reason bucket from a fixed list (never the error text itself)
- a shared/opened file was received, before MeshView attempts to read it (this shows how often the share-in path fails, separately from files opened successfully)
- the model was rotated or zoomed for the first time on a given file
- the model was panned, and whether that was via the on-screen pan buttons or a two-finger drag
- the on-screen zoom buttons were used
- a standard camera view (isometric, top, front, or one of the other standard views) was used
- the view was reset to its default framing
- a large model was simplified for smoother preview, plus its size band
- the printability check was opened
- the printability check finished, and which of three general verdicts it reached
- measure mode was turned on or off
- a measurement was completed (never the distance itself)
- the model's display colour was changed, to which colour from a fixed palette
- the About screen was opened
- the cross-promotion link to MeshView's sibling app was tapped
- a loaded 3MF had brush-painted colour regions the app can't display
- an existing user was recognised and given MeshView Pro free (no properties)
- a free user reached the monthly open limit, and which limit was in force (a number from a fixed, small set)
- the Pro upgrade screen was shown, and which Pro feature triggered it
- Pro was unlocked, and whether by purchase or restore, which feature, and which plan type (annual, lifetime, or unknown) — never any price or payment detail
- a Pro tool was used, and which one, from a fixed list of tool names (for example wall thickness, cross-section, separate parts, display mode, or a unit choice) — never anything from the model
Along with each event, Aptabase records standard technical context: operating system version, device model, app version, country (derived from IP address, which Aptabase does not store), and a session identifier that rotates and is not tied to you.
What is never sent, under any event:
- your model files, their geometry, or any file contents
- file names, folder names, or file paths
- exact triangle counts — only coarse size bands (for example "10k–50k triangles"), never the precise number
- exact measured distances — only that a measurement happened
- colour as a hex or RGB value — only the name of a colour from a fixed palette built into the app
- your name, email address, or any account information (the app has no accounts)
- advertising identifiers or persistent device identifiers
- precise location
This data is anonymous and is not linked to your identity. It is transmitted over an encrypted connection (HTTPS) and is never sold and never shared for advertising; Aptabase acts only as our analytics processor. Sending this data is required to use the app — there is no in-app toggle to turn it off, short of denying the app network access at the operating-system level (see below).
Purchases (RevenueCat / Google Play / Apple App Store)
MeshView Pro is optional and unlocks the Pro analysis tools (measure, printability check, wall thickness, cross-sections, separate parts, extra display modes and views, and unit choice), either as a yearly subscription or a one-time lifetime purchase. Purchases are processed by Google Play (Google Play Billing) on Android or the Apple App Store (in-app purchase) on iPhone and iPad, and entitlements are managed by RevenueCat, our purchase-management processor. Purchase data is only sent when you buy or restore a purchase, or when the app checks whether Pro is active.
- What is processed: an anonymous app user ID generated for the app (not your name, email, Google account or Apple ID), and purchase history / transaction data (which product, when, and its status) supplied via Google Play or the App Store.
- What MeshView never sees or stores: your payment details (card, bank, or Google Pay / Apple Pay data). Google Play or the App Store handles payment directly.
- Existing users: if you opened a model in MeshView before version 1.1.5, you keep Pro
features free. This is decided once, on your device, from a local counter that is never
sent anywhere; only the anonymous
pro_grandfatheredevent (see above) is recorded. - Your model files are still never uploaded.
RevenueCat's own handling of this data is described in its privacy policy: https://www.revenuecat.com/privacy
Units preference: if you choose millimetres, centimetres or inches, that choice is stored only on your device and is never sent anywhere (the separate analytics event above records only that a unit was chosen).
Permissions
MeshView requests two Android permissions: Internet, used to send the anonymous analytics events described above, to communicate with RevenueCat for purchases, and to open an external browser link if you tap the cross-promotion for MeshView's sibling app; and com.android.vending.BILLING, used solely so Google Play can process a MeshView Pro purchase. The app does not request storage permissions — it uses the Android file picker and share system, which only ever hand it the specific file you chose. On iPhone and iPad, MeshView requests no permissions at all: files reach it only through the Files picker, Share or Open With, which hand it the one file you chose.
Children
The app is a general-purpose file utility and is not directed at children.
Data retention and your choices
Because the analytics data is anonymous and carries no identifier tied to you, there is no per-user analytics record we can locate or delete on request. Aptabase retains aggregate event data under its own retention policy. Purchase records are different: RevenueCat holds an anonymous purchase record keyed to your app user ID, and Google (Play) or Apple (App Store) holds your purchase history. Because MeshView has no account, we cannot match that record to you from your name or email — to request deletion, write to the contact below from the device (or include your Google Play or App Store order number) and we will ask RevenueCat to delete the matching record, or you can contact RevenueCat directly. Uninstalling the app removes the local ID and counter from your device. If you prefer not to send any analytics at all, you can deny the app network access in your device settings — the app still opens and inspects files normally with no network connection — or uninstall the app, which removes all app data from your device.
Changes to this policy
If this policy changes materially, the updated version will be published at this same URL with a new effective date, and the app's Google Play Data safety declaration and App Store privacy details will be updated to match.
Contact
Questions about this policy: amantwd@gmail.com