Sho's AI Factory
Abstain Dragon iconAbstain Dragon

Privacy Policy

  • Version 2.0.0
  • Effective 2026-11-13
  • Updated 2026-11-13

Abstain Dragon (the "App") is provided by Sho Fujimoto (the "Developer"). The App records how long you have kept away from something you want to quit, such as too much phone, social media, impulse buying, staying up late, or sweets, so that the days you have built up stay with you even after a slip.

This Privacy Policy explains how the App handles information.

This Privacy Policy applies to the following app:

  • App name on the App Store: Abstain Dragon: Habit Breaker (App Store ID: 6479698819)
  • App name on Google Play: Abstain Dragon: Habit Breaker
  • Package name (Android): com.fjsh.reboot
  • Developer (individual): Sho Fujimoto
  • Developer name on Google Play: fjsh

The App does not create accounts. It does not use ads or AI.

1. Information We Collect

1.1 Information you enter or set

  • Habits you want to quit (the type you chose, a name you set yourself, the date and time you started, your goal in days, and their order)
  • The reasons for quitting you chose during onboarding, and any reason you wrote yourself
  • Your answers to the 4 onboarding questions about your current situation
  • In-app settings (for example, whether to show a habit's name on images you share, and whether "Notify me each day I hold" is on)

1.2 Information generated as you use the App

  • The dates and times you recorded "Reset"
  • Your check-in records (when you answered each time your main habit reached another 24 hours, your "Clean" or "Reset" answer for each habit, and whether you checked in from the App or a widget)
  • The days on which the Charm kept your check-in streak
  • The dates and times you tapped "Record: held" on the iOS widget
  • Whether milestone, goal, and koi and dragon growth screens have been shown
  • The times your current koi were lost in battle, a copy of each current koi's battle bonus, wounds, and equipped gear (see Section 3.5; received from the server), and the gear worn by koi that went into the aquarium after a reset
  • Ranking participants you have hidden
  • If you join the ranking, your anonymous ID and authentication token, league events not yet sent (see Section 3.1), and the league tier and rank you last received

The information in 1.1 and 1.2 is stored on your device. It is not sent to the Developer's server, except for the information in Section 3 that is sent when you join the ranking. Your check-in answers ("Clean" or "Reset") are not sent even if you join the ranking. For usage analytics, only the information in Section 4 is sent. Your anonymous ID and token are stored in your device's secure storage (the iOS Keychain or the Android Keystore).

Koi in the aquarium, Overall grass, and your Team koi and their boost are not stored; they are rebuilt each time from your start and reset records.

Depending on your device settings, the records on your device may be included in your OS backup (iCloud Backup on iOS, Google backup on Android). They may be lost if you delete the App, reset your device, or because of OS behavior.

1.3 Information sent automatically

  • When you open the App, it sends your OS type (iOS or Android), the App version, and your device language to the Developer's server to check whether an update is needed. Every request to the Developer's server includes the OS type and the App version.
  • To deliver App updates, the App communicates with Expo's update servers and sends information such as the App version and OS type.
  • Usage and crash and error information is sent to Google (Firebase) (see Section 4).
  • During communication, technical information such as your IP address is processed by our server infrastructure (Cloudflare), Expo, Google, and RevenueCat.

1.4 Purchase information

Subscriptions and one-time purchases are processed through the Apple App Store or Google Play. The Developer uses RevenueCat (RevenueCat, Inc.) to process and manage purchases, and the following information is handled:

  • Purchase and subscription status, products purchased, expiration dates, and free trial usage
  • Receipts and transaction IDs issued by the store
  • RevenueCat's anonymous user ID

To measure subscriptions, the App passes its Firebase app instance ID to RevenueCat. RevenueCat sends subscription events such as starts, renewals, and cancellations to Google Analytics for Firebase, linked to this ID. These are used for the usage analytics described in Section 4.

The Developer does not collect or store payment information such as credit card numbers, bank accounts, or store account passwords.

2. How We Use Information

  • To provide the App experience, including habit records, check-ins, the Charm, grass and Overall grass, power and Team koi, koi and dragon growth, the aquarium, and widgets
  • To show check-in and milestone notifications and reminders before a free trial ends
  • To provide the ranking, the weekly league, and challenge battles (only if you join) and send ranking notifications
  • To respond to reports of inappropriate names, keep the App safe, and prevent abuse
  • To notify you of and deliver updates
  • To improve the App by analyzing usage and fixing crashes and errors
  • To provide subscriptions and check subscription status
  • To comply with laws, the App's Terms of Service, and platform policies

3. How the Ranking Handles Information

Joining the ranking is optional. You join only when you tap "Join and show habits" or "Join privately" on the join screen, and nothing is sent for the ranking until you join. No account is created. The Developer's server issues an anonymous ID and a token. The server stores only a SHA-256 hash of the token, not the token itself.

The ranking has an overall ranking ordered by power and a league in which participants of similar strength compete for XP each week. When you join, you can also use challenge battles (see Section 3.5).

3.1 Information sent and stored

When you join, the following information is sent to and stored on the Developer's server (Cloudflare):

  • Your anonymous ID
  • Your name (an automatic name, or a name of 1 to 12 characters you set yourself)
  • Your power (including the Team boost), total days, longest current streak in days, number of habits, koi and dragon stage, and weekly gain
  • The age of the current koi of your main habit, and the current koi's ID (an identifier the App creates on your device) and the time it was born. These are used to set the upper limits of your stage and power, and for challenge battles (see Section 3.5)
  • The age in days of each of your Team koi (up to 4 of the oldest current koi of your habits other than your main habit). The server stores the largest Team koi age it has received and the Team boost calculated from those ages. These are used to set the upper limit of your power and are added to your HP in challenge battles (see Section 3.5). Which habit each koi belongs to is not sent
  • The dates and times your reports were received, and the date and time you joined
  • Whether the App version that sent your latest report was 7.0 (7.0.x). This is determined from the App version included in each request and is used to choose which notifications to send (see Section 3.4)
  • Only if you chose "Join and show habits," the list of your habit types (for example, Too much phone or Staying up late)

For the league, the following is also sent and stored:

  • League events: the days you checked in and the days the Charm kept your check-in streak. Only the type of event and the day (your local date) are sent. Check-ins and Charm days from before you join are kept on your device, and only today's and yesterday's are sent when you join
  • The date and time each event was received, and the XP calculated from your events
  • Your league tier, the group you were in each week, your rank in the group, and your weekly result (moved up, stayed, or moved down)

If you have allowed notifications, the following is also sent and stored:

  • Your push notification token (Expo push token)
  • Your time zone offset (in minutes), device language, and whether ranking notifications are on

We do not send: names you set for your own habits, your check-in answers ("Clean" or "Reset"), the dates and times of "Reset," your grass, the koi in your aquarium, your reasons for quitting, or your goals.

3.2 Information shown to other participants

  • In the overall ranking, your rank, name, koi and dragon stage, power, and weekly gain are shown to other participants.
  • In the league, your rank, name, koi and dragon stage, power, and XP for the week are shown to other participants in the same group.
  • In challenge battles, a copy of your current koi is shown to other participants as an opponent, as described in Section 3.5.
  • If you chose "Join and show habits," your habit types are shown to other participants who have a subscription. You can make them private at any time with "Show what I quit" in the ranking settings. When you do, they are deleted from the server.

3.3 Reporting names

You can report a name that another participant set themselves. When you report, we store the anonymous IDs of the reporter and the reported participant, and the date and time of the report. A name reported by 3 different people is changed back to the automatic name, and the reports about it are deleted.

3.4 Ranking notifications

If you have allowed notifications and ranking notifications are on, the Developer's server sends the following notifications through Expo's push notification service. They are not sent between 22:00 and 09:00 in your local time.

  • When another participant in your league group passes you (at most once per day in your local time)
  • When the league week is about to end (at most once per week)
  • When your league result for the week is decided (at most once per week)
  • When a challenge arrives in challenge battles (at most once per day). The notification includes the opponent's name, koi and dragon stage, and power

If the App version that sent your latest report was 7.0 (7.0.x), the following notifications are sent instead:

  • When another participant passes you in the overall ranking (at most once per day)
  • When you enter the top of this week's gains (at most once per week)

3.5 Challenge battles

If you have joined the ranking and have a main habit, a copy of another participant's current koi, or an opponent prepared by the Developer's server (a bot), challenges the current koi of your main habit once a day. If you have a subscription, you can also start one challenge yourself each day. The Developer's server chooses the opponent and calculates the result. Your HP includes the Team boost stored by the server under Section 3.1.

For challenge battles, the following information is stored on the Developer's server:

  • For each current koi: its battle bonus, the number of wounds and when they were received, and the time the koi was lost in battle
  • Challenges (challenges you received and challenges you started): when they arrived, the deadline to answer, a copy of the opponent, your "Fight" or "Flee" answer and when you answered, and the result and battle record
  • Gear you found and your inventory: slot, rarity, value, the league tier when found, when it was found, and which koi is wearing it

League XP gained from battles is stored as league information under Section 3.1.

The Developer's server chooses opponents from copies of other participants' current koi whose last report was within the past 7 days. This means a copy of your current koi (your automatic name, koi and dragon stage, power, stats (HP, attack, critical rate, and speed), Team boost, and equipped gear) is shown to other participants as an opponent in their challenges. A name you set yourself is not included in the copy and is never shown as an opponent's name. Speed is based on your check-in streak, counted from your league events. If the copy loses, your koi does not get wounded. You are not notified when your copy is used as an opponent.

4. Usage Analytics and Crash Reporting

The App uses Google Analytics for Firebase for usage analytics and Firebase Crashlytics for collecting crashes and errors (both provided by Google LLC).

4.1 Information collected

  • Screens viewed
  • Onboarding progress (which screen was shown, the habit type you chose, the number of reasons for quitting, and your goal in days)
  • Opening and closing the purchase screen, where it was opened from, purchase and restore results, and the product selected
  • Recording "Reset," milestone and koi and dragon growth screens shown, sharing grass images, opening the widget guide, and whether you turned the Lock Screen Live Activity on or off
  • Your total days and its range, the number of days you checked in, and the streak length at a reset
  • Habit types (for example, Too much phone or Staying up late), your main habit type, the number of habits, and your koi and dragon stage
  • Whether you have a subscription, whether you joined the ranking, and the App's display language
  • Subscription events such as starts, renewals, and cancellations (from RevenueCat, see Section 1.4)
  • App instance ID, device and OS information, and approximate region (estimated from your IP address)
  • Crashes and errors (stack traces, device state, and similar) and failed purchase operations

We do not send names you set for your own habits, reasons for quitting you wrote yourself, your answers to the questions about your current situation, your check-in answers, or your ranking name.

4.2 Purpose and retention

We use this information to understand the following and improve the App:

  • Which features are used most
  • Where people stop using the App
  • How many people subscribed from which screen
  • Where crashes and errors occur

Habit types are used to categorize usage and are not used for advertising or tracking. Google Analytics event data is retained for up to 14 months.

4.3 Advertising identifiers and tracking

The App does not track you. It does not collect or use advertising identifiers such as the IDFA (iOS) or the advertising ID (Android), and it does not show the App Tracking Transparency (ATT) tracking permission prompt. If you would like us to stop analytics and crash reporting, contact us at the address in Section 13.

5. Notifications

  • The notification each time your main habit reaches another 24 hours and the notification when your check-in streak is about to end are local notifications scheduled on your device. Their content is not sent to the Developer's server.
  • Milestone notifications are local notifications scheduled on your device. Their content is not sent to the Developer's server.
  • If you are in a subscription free trial and have not canceled, the App shows a reminder before the trial ends as a local notification scheduled on your device. Its content is not sent to the Developer's server.
  • Ranking notifications are described in Section 3.4.
  • You can turn off notification permission at any time in your device settings. You can also turn off the 24-hour notification with "Notify me each day I hold" on the "Manage habits" screen.

6. Third-Party Services

The App uses the following third-party services. Each service handles information under its own privacy policy.

Service Provider Main purpose
Cloudflare (Workers, D1) Cloudflare, Inc. Server infrastructure, storing ranking, league, and challenge battle information
Expo 650 Industries, Inc. App platform, update delivery, sending push notifications
Google Analytics for Firebase Google LLC Usage analytics
Firebase Crashlytics Google LLC Collecting crashes and errors
RevenueCat RevenueCat, Inc. Managing subscriptions and purchases
App Store / Google Play Apple Inc. / Google LLC Payment and purchase processing, delivering push notifications

7. Transfers to Third Parties in Other Countries

Because the App uses the third-party services in Section 6, information may be sent to, processed in, and stored in countries outside Japan (mainly the United States).

You can find information on personal information protection systems in other countries on the website of Japan's Personal Information Protection Commission (https://www.ppc.go.jp/personalinfo/legal/kaiseihogohou/#gaikoku ).

8. Disclosure to Third Parties

The Developer does not sell your information. We do not provide it to third parties except in the following cases:

  • With your consent
  • When we entrust processing to the service providers in Section 6 to the extent needed to provide the App
  • When required by law
  • When necessary to protect a person's life, body, or property
  • In connection with a business transfer

9. Retention

  • Data on your device remains until you delete the App or it is deleted by your device or OS.
  • Ranking, league, and challenge battle information (including your Team koi ages and Team boost) is stored until you tap "Leave the ranking" in the ranking settings. When you leave, we delete your participant information, your league group membership, events, and weekly results, your challenge battle information (battle bonus and wounds for each koi, challenges and results, gear and inventory), your push notification token, and the reports you made and received.
  • Copies of your current koi saved in challenges delivered to other participants (see Section 3.5) remain in those participants' challenge records. When you tap "Leave the ranking," your anonymous ID is removed from these copies so they are no longer linked to you. Only the automatic name, koi and dragon stage, power, stats, Team boost, and gear remain in them.
  • Participants whose last report is more than 14 days old are not shown in the overall ranking. Their information on the server is not deleted in this case.
  • If you delete the App without tapping "Leave the ranking," the token on your device is lost and you can no longer delete your ranking information from the App. To have information left on the server deleted, contact us at the address in Section 13.
  • Push notification tokens that Expo reports as invalid are deleted from the server.
  • Usage analytics information is retained as described in Section 4.2. Purchase information is retained under the rules of RevenueCat and each app store.

10. Age Requirement

The App is intended for people aged 18 and over. People under 18 may not use the App.

11. Your Choices and Rights

  • Ranking: You can choose whether to join. After joining, you can change whether your habits are shown, turn ranking notifications on or off, and change your name in the ranking settings. "Leave the ranking" deletes your information from the server, including your league and challenge battle information (copies kept in other participants' challenge records remain in a form no longer linked to you, as described in Section 9).
  • Notifications: You can turn off the App's notifications at any time in your device settings.
  • Usage analytics: If you would like us to stop analytics and crash reporting, contact us at the address in Section 13.
  • Data on your device: Deleting a habit deletes its records. Deleting the App deletes the data on your device.
  • Requests for access, correction, suspension of use, deletion, and similar: Contact us at the address in Section 13. For requests about ranking information, include the name shown in the ranking. We will respond in accordance with applicable law.

12. Security and Changes to This Policy

The Developer takes reasonable measures to protect information against leaks, loss, unauthorized access, and similar risks.

We may update this Policy in response to changes in laws, the App's features, or third-party services. We will announce significant changes in the App or on our website.

13. Contact

  • App: Abstain Dragon (App Store ID: 6479698819, Android: com.fjsh.reboot)
  • Developer: Sho Fujimoto
  • Email: zero@zerotoone.app