Remotext — Privacy Policy
Version: 1.0
Effective date: 2026-07-22
Publisher: Custavia
Contact: support@custavia.com
The short version
Remotext does not collect, transmit, or store any data about you or your work on our servers. Everything stays on your device. We have no account system, no analytics, and no advertising. The only data that ever leaves your device is data you explicitly send — to your own servers, to Dropbox's servers (if you connect a Dropbox account), to Apple/Google for purchase verification, or (only if you opt in during onboarding) to a crash-reporting service.
What is stored on your device
Remotext stores the following data locally on your device only. None of it is transmitted to Custavia.
Files you edit
Files you open, create, or edit are stored wherever you placed them — in the app's local document storage, in Files (iOS) or Storage Access Framework locations (Android), or on your remote servers. Remotext does not copy your file contents anywhere.
Autosave and recovery data
The app maintains an autosave snapshot of open documents to protect against crashes. This snapshot lives on your device in the app's sandboxed storage and is deleted when you close the document normally.
Connection configuration
If you configure remote connections (SFTP, FTP/FTPS, WebDAV), the app stores the host address, port, username, and your chosen authentication method. This data is stored in the app's local database on your device and is never transmitted to Custavia.
Credentials and SSH keys
Passwords, SSH private keys, and passphrases are stored in the platform secure credential store:
- iOS: Keychain with
kSecAttrAccessibleWhenUnlockedThisDeviceOnly. Credentials are not synced to iCloud Keychain and do not leave the device. - Android: EncryptedSharedPreferences backed by Android Keystore (StrongBox where available). Credentials are not backed up to Google's cloud.
SSH passphrases are stored only if you choose to save them; retrieval is gated by biometric authentication on both platforms.
Dropbox credentials
If you connect a Dropbox account, Remotext uses OAuth 2 with PKCE. We never see or store your Dropbox password. The OAuth refresh token is stored in the same secure credential store described above (iOS Keychain / Android Keystore) and never leaves your device. All Dropbox API traffic goes directly between your device and Dropbox's servers.
App preferences and settings
Theme choices, editor preferences, key-binding customizations, and similar settings are stored in the app's local storage on your device.
Purchase state
Remotext verifies PRO subscriptions and lifetime purchases through Apple's StoreKit (iOS) or Google Play Billing (Android). We do not run a purchase validation server; the app asks the platform SDK directly. No purchase information is transmitted to Custavia.
What we never collect
- Your file contents, filenames, directory paths, or project structure
- Your server hostnames, IP addresses, or usernames
- Behavioral analytics, usage events, or session data
- Your device's contacts, location, camera, or microphone
- Any persistent device identifier linked to your identity
Crash reporting (opt-in only)
Crash reporting is off by default. During first launch, the app asks once whether you would like to help improve Remotext by sending crash reports. You can change this choice at any time in Settings.
If you opt in: when the app crashes, it sends a crash report to a third-party crash-reporting service (currently Sentry). The report contains:
- The stack trace at the time of the crash
- Your device model and operating system version
- The app version
The report does not contain file contents, filenames, directory paths, server hostnames, usernames, or any credential data. PII scrubbing is enabled at the SDK level to remove these fields from breadcrumbs.
Sentry's privacy policy is available at https://sentry.io/privacy/.
If you do not opt in: no crash data is ever transmitted. Anonymous crash metadata is still collected by Apple (via MetricKit) and Google (via the Play Console crash feed) under their respective platform privacy policies, independent of Remotext.
Network traffic summary
The only outbound network traffic Remotext ever initiates:
| Destination | Condition | Data sent |
|---|---|---|
| Your configured remote servers (SFTP/FTP/FTPS/WebDAV/SSH) | Only when you connect | File data and commands you initiate |
Dropbox API (api.dropboxapi.com, content.dropboxapi.com) | Only if you connect a Dropbox account | File data and commands you initiate |
| Apple App Store / Google Play | Purchase and subscription verification | Opaque receipt token; handled by platform SDK |
| Sentry crash-reporting service | Only if you opt in to crash reporting | Stack trace, device model, OS version, app version |
| Custavia servers | Never | — |
Children's privacy
Remotext is a professional developer tool not directed at children under 13. We do not knowingly collect any data from children.
Changes to this policy
If we make a material change to this policy, we will update the effective date and version number above and post the revised policy at the same URL. Material changes include adding a new data-collection practice or changing how opt-in crash data is handled.
Contact
For privacy questions or requests, contact: support@custavia.com
Cross-check: alignment with store privacy labels
This section maps each claim above to the corresponding App Store (0986) and Play Data Safety (0987) label answers to ensure no statement contradicts a store label.
| Privacy claim in this document | App Store label (0986) | Play Data Safety (0987) |
|---|---|---|
| No data collected by Custavia | All categories: "Data Not Collected" | "No data collected" |
| Crash data only if opted in; not linked to identity | Crash Data: "Collected, optional, not linked to identity" (opt-in branch A) | Crash logs: "Collected, optional, not linked to user" (opt-in branch A) |
| Files and credentials on-device only | Not declared (on-device only, not covered by label) | Not shared with third parties |
| Dropbox OAuth token stored locally | Not declared (credential, device-local only) | Not declared |
| Purchase receipt handled by platform SDK | Not collected by us | Not collected by us |
| No analytics, no advertising identifiers | Advertising Data: "Not Collected"; Usage Data: "Not Collected" | Analytics: "No data collected" |
Branch dependency: the crash data rows above reflect the opt-in Sentry branch (Branch A from task 0029). If the final decision selects Branch B (MetricKit/Play Console only, no third-party SDK), the crash data rows change to "Data Not Collected" / "No data collected" across the board — and those rows should be removed from the store labels. Update this cross-check and both label documents (0986, 0987) when 0029 is resolved.