The iOS app and the Android app “UV neko” (together, the “App”) and this website are designed to collect as little information as possible. This policy explains what kinds of information are handled, where they are sent, and what choices you have. The sections below are written mainly for the iOS version; everything that differs on Android is collected in section 12.
1. No account is required
The App does not require you to create an account. The Developer does not collect or store information that identifies you personally, such as your name, email address, phone number or date of birth.
2. Information stored on your device
The following is stored only on your device and is never sent to or held on the Developer's servers.
- Your character choice (cat, or sun & moon)
- Whether you have turned off the sending of usage data
- The most recently fetched UV forecast (a temporary copy so the widget can display it; it includes the place name and the hourly values)
- Your sun care record (the times you pressed “Going out” and “Back inside”, which gear you turned on or off and when, and the times you applied sunscreen)
- The skin brightness you picked (one of eight steps; it is used to show the rough guide for time outdoors)
- Whether vibration feedback is turned on
- Whether the review prompt has been shown (so that it is not asked again and again)
- Outdoor time imported from your Apple Watch's Time in Daylight (only if you turn this on in Settings; see 2-1 below)
- The day's peak UV index at your current location (one value per day, shown next to each day's record on the Review screen)
All of this is erased when you delete the App from your device.
2-1. How Health data is handled
Only if you turn on “Use Time in Daylight for records” in Settings, the App reads Time in Daylight (data your Apple Watch records from ambient light) from the iOS Health app.
- Time in Daylight is the only Health data type the App reads. It does not read heart rate, steps, or any other Health data.
- The App never writes to Health.
- What is read is stored only on your device, as outdoor time intervals. It is never sent to the Developer's servers or to any third party, including the usage data and the advertising described below. It is not stored in iCloud either.
- Health data is never used for advertising or marketing.
- If you turn the setting off, the imported intervals are deleted from your device. Records you entered yourself are kept.
- You can change the Health permission at any time in the iOS Settings or Health app. The App works as before without it.
3. How location is handled
The App uses your location in order to show the ultraviolet index where you are.
- Permission is requested as “While Using the App”. There is no background tracking and no continuous collection.
- The coordinates are sent to Apple's WeatherKit to obtain the ultraviolet data, and to Apple's reverse geocoding to show a place name (for example “Chiyoda”). Both are Apple services, and Apple's privacy policy applies to them.
- The city name you type when saving a location is sent to Apple's geocoding to convert it into coordinates (also an Apple service). Neither what you type nor the locations you save are ever sent to the Developer's servers or included in the usage data described below.
- On iOS, the coordinates and the place name are never sent to the Developer's servers. On Android, the coordinates pass through a relay server operated by the Developer in order to fetch the weather data (see 12-2).
- The coordinates and the place name are never included in the usage data (analytics) described below.
- The App still launches if you do not grant location permission. If you save a location, the App shows the forecast for that place instead. You can change the permission at any time in the iOS Settings app.
4. Usage data (analytics)
To improve the App, anonymous usage data is sent to the analytics service PostHog (servers in the EU region).
4-1. What is sent
Only a fixed, predetermined set of recorded actions is sent. Automatic screen capture (autocapture), automatic collection of screen transitions, and session recording are all disabled.
- app_open
- That the App was launched
- forecast_loaded
- That the forecast was displayed successfully, and what kind of place was shown (current location or a saved location — never the place name or coordinates)
- forecast_failed
- That fetching failed, the kind of failure (location denied / could not get location / could not get weather), and — when the location could not be obtained — a numeric code identifying the cause (it contains no coordinates)
- theme_changed
- That the character was switched, and which one it was switched to (cat / sun & moon)
- place_added
- That a location was saved (never its name or coordinates)
- place_switched
- That the displayed place was switched, and only the kind it was switched to (current location / saved location)
- outdoor_started / outdoor_ended
- That “Going out” or “Back inside” was pressed (never how long you were outside, nor the percentage of that time with sun care on)
- sunscreen_applied
- That “Applied sunscreen” was pressed (never how many times that day)
- gear_toggled
- That a piece of gear was switched, which kind it was (hat / parasol / long sleeves / sunglasses / face cover), and whether it was put on or taken off
- analytics_opt_out
- That the sending of usage data was turned off (see 4-3 below)
- paywall_shown
- That the Pro screen was opened, and where it was opened from
- purchase_started / purchase_completed / purchase_failed / purchase_restored
- That a purchase was started, completed, failed or restored; the plan concerned (monthly / yearly) and, on failure, the kind of failure
Alongside these, the analytics service automatically attaches the following: the time at which the event was sent, a random anonymous identifier generated per device, the device model and the name and version of the operating system, the App's version and build number, the language and time zone settings, the screen width and height, the kind of connection (Wi-Fi or cellular), and a session identifier used to group a single run of the App.
About the sun care record, to be straight with you. The App sends only the fact that a button was pressed — never how long you were outside, and never the percentage of that time with sun care on. But as stated above, every event carries the time it was sent and a per-device anonymous identifier. So pairing outdoor_started with outdoor_ended does let the analytics service see when that device was outside and for how long. It would be wrong to say the record never leaves your device. The record itself (which hours on which day, and which gear) stays on the device, but if this sending concerns you, turn off Settings → “Share Usage Data”. Once it is off, none of the events above are sent.
4-2. What is not sent
- Your coordinates or place name
- Any data read from Health (Time in Daylight and its intervals)
- Measured or forecast ultraviolet values themselves
- Information that identifies you personally, such as your name or email address
- Payment information (card numbers and the like — the Developer never receives any)
The App is also configured not to build person-level profiles, and the feature that estimates location from the sending IP address (GeoIP) is disabled on the App side.
4-3. How to turn it off
Turn off “Share Usage Data” in the App's Settings and sending stops immediately. You can change this at any time.
One thing we want to be straightforward about. At the moment you switch it off, the App sends exactly one record saying that it was switched off (analytics_opt_out), and then stops. This is so we can see how many people prefer not to send data and reconsider whether the default is right. That single record contains no location and nothing that identifies you. Nothing is sent after it.
5. Advertising
So that the App can be used free of charge, one banner ad is shown at the bottom of the screen. Ads are served through Google's ad service (Google AdMob). No ads are shown while you have a Pro subscription.
5-1. Information handled for advertising
To serve ads, measure impressions and prevent fraud, Google and Google's advertising partners may obtain information such as the following. This is obtained by Google; the Developer does not receive it.
- Basic information such as device type, operating system name and version, and language setting
- IP address (used to determine an approximate region)
- Records of how many times an ad was shown and whether it was tapped
- The advertising identifier (IDFA) — although, as set out in 5-3 below, the App does not ask for permission to use it
5-2. If you are in the European Economic Area or the United Kingdom
If you are in the European Economic Area (EEA), the United Kingdom or Switzerland, a consent screen provided by Google's User Messaging Platform (UMP) is shown before any ad is displayed. You can change your choices from that screen at any time.
5-3. We do not track you
The App does not track you across other companies' apps and websites. It therefore does not show the iOS “Allow tracking?” prompt (App Tracking Transparency) and does not ask for permission to use the advertising identifier (IDFA). As a result, the ads you see are mostly not based on your interests (non-personalised ads).
5-4. How to remove ads
Ads are not shown while you have Pro (a monthly or yearly subscription). You can cancel a subscription at any time from your App Store account settings.
6. Purchases (Pro subscription)
All Pro purchases are handled by Apple (the App Store). The Developer does not receive payment information such as card numbers. All the Developer can know is whether a given device holds a valid subscription. Purchases, refunds and cancellations are governed by Apple's rules.
7. About this website
This site (uvneko-site.pages.dev) also sends anonymous records to PostHog so that we can see how many times pages are viewed.
- What is sent: page views, reaching the bottom of a page, link taps, and the parameters that indicate where a visit came from (utm_source and the like).
- No cookies or browser storage are used (records disappear when you close the page). A return visit is therefore counted as a separate view.
- The pre-registration form is provided through Google Forms. What you enter is stored on Google's services, and Google's privacy policy applies.
8. Third-party services
The App and this site send information to the following. Please see each company's policy for how they handle it.
9. Retention and deletion
Information on your device is erased when you delete the App. Anonymous records sent to the analytics service are retained according to that service's retention period. If you would like a particular record deleted, please contact us (although, because the records are anonymous, it may not be possible to identify an individual user's records).
10. Children's privacy
The App is not directed primarily at children. We do not knowingly collect information from children under 13.
11. Changes to this policy
If this policy changes, this page will be updated and the “last updated” date revised. Even if the kinds of information sent are extended, the scope of “what is not sent” above will not change. Any change will be reflected by revising this policy.
About this translation. This page is an English translation of the Japanese
プライバシーポリシー, provided for convenience. If there is any discrepancy between the two, the Japanese version prevails.
12. The Android version
The Android version (distributed through Google Play) follows the same principles as the iOS version. This section only describes what is different. Everything not mentioned here applies as written above.
12-1. Information stored on the device
The Android version has no sun care record, no widget, no Apple Watch integration and no Pro subscription. The items in section 2 that relate to these (the record, the cached forecast, time in daylight, the daily UV maximum) and the health data handling in 2-1 therefore do not exist on Android. What is stored is: the character you chose, the places you saved, the skin tone you selected, the vibration setting, the usage-data setting, and whether the review request has been shown. All of this is deleted when you remove the App from the device.
12-2. Location and the weather relay server
- The App asks for approximate location, while using the app only. There is no background tracking and no continuous collection.
- Android has no built-in way to obtain Apple's weather data, so the Developer operates a relay server (running on Cloudflare Workers) that forwards weather requests. The App sends the coordinates of your current location or of a saved place, together with your language setting, to this relay server, which fetches the UV data from Apple WeatherKit and returns it.
- The relay server rounds the coordinates to roughly 2 km before contacting Apple. It receives only the rounded coordinates and the language setting; it does not receive place names, device identifiers or anything that could identify you, and it does not log the coordinates. The weather data it fetches is kept temporarily, per rounded coordinate, for at most 15 minutes so that people in the same area receive the same response.
- Showing the place name, and searching for a city when you save a place, use Android's geocoding feature (a Google service). The coordinates, or the city name you typed, are sent to Google, and Google's privacy policy applies.
- Coordinates and place names are never included in the usage data (section 4). The App starts without location permission; save a place and its forecast is shown. You can change the permission at any time in Android's Settings.
12-3. Usage data
The destination and the principles are the same as in section 4. The Android version sends only seven of the events listed in 4-1: app_open, forecast_loaded, forecast_failed, theme_changed, place_added, place_switched and analytics_opt_out (none of the record- or purchase-related events). In addition, a value “platform: android” is attached to tell the two versions apart. Turning it off works as described in 4-3.
12-4. Advertising
- Ads are served through Google AdMob (the Android SDK). In addition to the information in 5-1, Google may obtain the Android advertising ID. The Developer never receives this information.
- The App explicitly requests non-personalised ads. It does not track you across other companies' apps or websites. Apple's App Tracking Transparency (5-3) does not exist on Android; you can reset or delete the Android advertising ID in Android's Settings.
- The consent screen for the European Economic Area, the United Kingdom and Switzerland (5-2) is the same on Android.
- The Android version currently has no Pro subscription, so there is no way to remove the ads (5-4). If Pro is offered through Google Play billing in the future, this policy will be revised.
12-5. Purchases
There is currently nothing to purchase in the Android version.
13. Contact