Privacy Policy

Last updated: 29 October 2026

The developer of "Hi Taigi" (the "App") respects user privacy and has designed the App to handle as little data as possible. This policy describes how the App handles personal information.

1. Personal information we collect

The App does not collect personally identifying information such as your name or email address. If you choose to sign in, only a pseudonymous identifier issued by Apple and a random account ID are stored (see Section 6).

2. Network requests

The App makes HTTPS requests to a distribution origin operated by the developer (Cloudflare R2) in order to download audio for words and example sentences. These requests carry the following standard network information:

This information is temporarily logged by Cloudflare. The App's developer does not access or analyse these logs for the purpose of identifying individual users. Cloudflare's privacy policy is available at https://www.cloudflare.com/privacypolicy/.

When the user signs in, and when a signed-in Plus subscriber's data is synced, the App communicates over HTTPS with the developer's server (a Cloudflare Worker; see section 6).

Even if the user does not download audio (the dictionary text itself is bundled with the App), does not tap the report button described in section 3, has turned off the anonymous measurement described in section 4, and has not signed in as described in section 6, the App still communicates with RevenueCat (section 5) to check the status of in-app purchases. It performs no other network communication.

3. Reporting incorrect content

The App has one-tap report buttons in two places: "回報:這裡有誤 (this is incorrect)" on the "認證700" study cards in the Study tab, and "找不到?回報這個詞 (not found? report this word)", which appears when a search returns nothing. Only when the user taps one of those buttons does the App send the following information over HTTPS to the developer's server (a Cloudflare Worker), for the purpose of correcting errors in the dictionary content and learning which words are missing from it. Nothing is sent automatically or in the background.

The information sent is limited to:

What is not sent:

IP addresses are processed transiently by Cloudflare for rate limiting (to prevent abuse and repeated submissions), but they are not stored in the database.

Submitted data is stored in Cloudflare D1 (a database), and the notification email to the developer is delivered via Resend (an email delivery service). The data is used only to correct incorrect content; it is not used to identify individuals and not used for tracking. Because a report contains no information that identifies an individual, it is retained without a set time limit as a record of dictionary corrections. Note that, as there is nothing indicating who submitted a given report, reports cannot be singled out and deleted for a particular user.

Under Apple's App Privacy categories this corresponds to Diagnostics (Other Diagnostic Data) and Usage Data (Product Interaction), in both cases "Not Linked to You", not used for tracking, and used for App Functionality.

Separately from the above, the "意見、回報問題 (feedback and bug reports)" link on the Info screen opens the mail app on the device. The draft it prepares contains only the app version, the OS version, and the language; whether to send it is the user's decision, and the App never sends it automatically. If the user does send it, the developer receives that email address and the message body, in order to reply and to improve the App.

Reporting tone judgements (Learning: "唸出來")

In the "唸出來" (say it aloud) questions in Learning, you look at the characters and say the word, and the App judges your tones by comparing how your pitch moves with the official recording. Recording and judging happen entirely on the device, and the recording is never saved or sent. If a judgement seems wrong, you can tap "判定怪怪的?" (Judgement seems off?) below it. Only when you then choose "我唸對了,卻判不對" (I said it right but it was marked wrong) or "我唸錯了,卻判對" (I said it wrong but it was marked right), the App sends the following to the same server as above, to improve the accuracy of the judgement:

The recording itself is never sent. No identifiers such as a user ID or device ID are included. IP addresses and storage are handled the same way as the reports above (no notification email is sent). Because there is no way to tell who sent a report, we cannot pick out and delete a particular user's reports.

Under Apple's App Privacy categories, the pitch series is User Content (Other User Content), and the rest falls under the same categories as the reports above, Usage Data (Product Interaction) and Diagnostics (Other Diagnostic Data). All are "Not Linked to You", not used for tracking, and used for App Functionality.

4. Anonymous measurement (purchase flow and early use)

To understand where people stop, the App can send a very small number of anonymous events. There are two things worth knowing: where people stop in the purchase flow — how many open the purchase screen, how many start the trial — and which of a few early actions go together with continuing to use the App.

Under Apple's App Privacy categories this falls under the same categories as section 3 — Diagnostics (Other Diagnostic Data) and Usage Data (Product Interaction) — in both cases "Not Linked to You", not used for tracking, and used for App Functionality and Analytics.

5. In-app purchases and subscriptions

To determine the status of in-app purchases (one-time purchases and the "Plus" subscription), and so that the same purchase can later be used in versions of the App other than iOS, the App sends purchase records to RevenueCat (a purchase management service). Payment itself is handled by Apple; neither the developer nor RevenueCat has access to payment information.

When someone buys Taigi Plus on the web as a gift (for example through an "Ask Family for Plus" link), the payment is processed by Stripe. The email address and other details entered at checkout are handled under Stripe's Privacy Policy, and the developer never sees card numbers or other payment details. The purchase is recorded in RevenueCat under a random ID created for that request and is not linked to the payer's identity. See the Terms of Sale.

Under Apple's App Privacy categories, this is "Purchases (Purchase History)" and "Identifiers (User ID)", both "linked to the user", "not used for tracking", with the purposes "App Functionality" and "Analytics". The anonymous ID contains no name or similar information, but because it stays the same on a device and is sent together with Apple transaction IDs, we declare it as linked.

6. Account sign-in and sync

So that a Plus subscription bought on one device (or in the Android or web version) can be used on your other devices, and so that your data can be synced between them, the App offers an optional account sign-in (Sign in with Apple) under Info → Account. The App works normally without signing in.

Sign-in

Sync (signed-in Plus subscribers only)

For Plus subscribers who are signed in, the following data is stored on the developer's server (Cloudflare D1), linked to the account:

Only entry IDs, headwords, list names, timestamps, and learning results are sent. Search text that you type but do not open is not sent. The data is used only to show the same data on your own devices; it is not used for analytics, advertising, or tracking.

Under Apple's App Privacy categories, favorites, word lists, and learning records are "User Content (Other User Content)", the history of looked-up entries is "Search History", and the account ID is "Identifiers (User ID)" (already declared in section 5). All are "linked to the user", "not used for tracking", with the purpose "App Functionality". Sign-in also falls under the purpose "App Functionality".

7. Third parties

The App does not share or sell user data to third parties for advertising, analytics, or similar purposes. No advertising or tracking SDKs are included in the App. The only third-party SDK included is RevenueCat, used to manage in-app purchases as described in section 5. The transmissions described in sections 3 and 4 are implemented by the App itself: section 3 happens only when you tap the button, and section 4 is on by default and can be turned off in the App at any time. Sign-in and sync in section 6 are also implemented by the App itself and happen only if you choose to sign in.

The following service providers (subprocessors) are used to operate the reporting feature, the anonymous measurement, in-app purchase management, account sign-in and sync, and the audio delivery described above:

8. Crash reports

If the user has enabled "Share with App Developers" in iOS → Settings → Privacy & Security → Analytics & Improvements, Apple may forward anonymized crash logs to the developer. This sharing is controlled entirely by the iOS system settings and is not a collection mechanism specific to this App.

9. Children's personal information

The App has no age restriction, but as stated above it collects no personally identifying information. Accordingly, it does not collect personal information from users under 13 either. Account sign-in is optional, and the App can be used without it; signing in does not give the App your name or email address. The reporting feature does not ask for any personal information.

10. Android version

This policy also applies to the Android version distributed on Google Play. Sections 1–9 apply to the Android version as written, except for the following.

For Google (distribution and payment processing through Google Play, and authentication when you sign in with a Google Account), see the Google Privacy Policy.

11. Changes to this policy

This policy may be revised in response to changes in applicable law or in the App's specification. Significant changes will be announced on this page.

12. Contact

For questions about this policy: