Privacy
Fahrenheit Celsius Dual Degree privacy policy.
Last updated: September 20, 2026
Summary
Fahrenheit Celsius Dual Degree asks for as little as possible. No account, no ads in the app, no general behavioral analytics, and no third-party trackers. The app uses your location and your saved cities to fetch weather, place names, and lightning data, so their coordinates are sent to our server and Apple as described below. Our server sends rounded weather coordinates to Open-Meteo. None of these requests includes your name, email address, or an account with us. If you turn on lightning or rain alerts, the app also registers a push token and the cities you want alerts for with our server so it can notify you.
What we don't collect
- No account, no sign-in, no email or name.
- No advertising identifier (IDFA), ATT tracking permission, device fingerprint, or contact list.
- No general behavioral analytics SDKs and no third-party trackers.
- We do not sell or rent data, and we share it only with the services named on this page, so they can provide weather, place names, maps, flags, and notifications.
Location
When you grant location permission, the app uses your coordinates to fetch the current weather and forecast for that point. Coordinates are also sent for any city you save, and widgets send them when they refresh. The app sends coordinates to:
- Our server at api.dualdegree.app — the app's main route for current conditions, forecasts, air quality, 15-minute precipitation, lightning data, and alerts. The server rounds weather coordinates to about 1 km before asking Open-Meteo for those services.
- Apple WeatherKit — asked on every refresh for severe weather alerts and minute-by-minute precipitation, and used as the backup forecast source when our server or Open-Meteo fails. Subject to Apple's Privacy Policy.
- Apple Maps — turns your current location and saved cities that Open-Meteo can't name into place names in your language, and is the fallback for city searches that Open-Meteo can't resolve. Also subject to Apple's Privacy Policy.
- Open-Meteo — receives rounded weather coordinates, city-search text, and language from our server. It sees our server's IP address rather than your device's IP address for those requests. Their terms and privacy apply.
Starting with version 1.0.15, the app does not call Open-Meteo directly. Earlier versions call Open-Meteo's public services from the device, so Open-Meteo receives the request coordinates and the device's IP address. Updating the app moves those requests to the server-side path described above.
Our server caches forecast and air-quality responses by rounded coordinate to reduce repeated upstream requests. Forecast entries expire after at most 12 hours and air-quality entries after at most 6 hours. These cache entries contain only the rounded coordinate and weather data.
City search and place names
When you search for a city, the text you type and the app language are sent to our server, which asks Open-Meteo's place search and caches the result under that search text and language for 24 hours. If Open-Meteo finds nothing or can't be reached, the app sends the search text to Apple Maps instead.
For a city found through Open-Meteo, the app may later send its place ID and language to our server to update the displayed name. For non-English searches, our server may send the result's city-center coordinates to OpenStreetMap's Nominatim to obtain canonical English names used for flag matching. For your current location, other cities, and whenever Open-Meteo can't supply a localized name, the app sends coordinates directly to Apple Maps. Place-name results are also cached on your device.
Background location (opt-in)
If you turn on Background Location in the app's settings, iOS wakes the app when you move a significant distance, and the app refreshes the weather, place name, and lightning data for your new current location, just as it does when you open it. If your rain alerts follow your current location, the new location is also sent to our server (see below). iOS asks your permission separately for "Always" access. You can revoke this at any time in Settings → Privacy & Security → Location Services → Fahrenheit Celsius Dual Degree.
Separately, a widget set to your current location checks your position itself each time iOS refreshes it, using the location permission you gave Fahrenheit Celsius Dual Degree, whether or not Background Location is on.
Lightning data and alerts
Each time the app refreshes the weather for a place, it also asks our server at api.dualdegree.app for recent lightning strikes near that place. This happens even when the lightning card is turned off or the place is outside lightning coverage. The request carries that place's coordinates (for your current location, your device's position) and no identifier.
Tapping the lightning card opens a map drawn by Apple Maps, which receives the area you're viewing. Tapping a strike sends that strike's coordinates to Apple to look up its address. If you choose to open a strike in Google Maps or Apple Maps, that app receives the strike's coordinates and address.
Lightning Alerts and Rain Alerts are off until you turn them on. Turning either one on asks for notification permission, and the app then registers an Apple push notification token with our server. As long as notification permission stays granted, the app re-sends that token each time it launches, even if both alerts have since been turned off.
With Lightning Alerts on, the app sends our server the coordinates and names of your saved cities and your current location, plus your chosen alert distance. With Rain Alerts on, it sends the coordinates and names of the cities that setting covers, which can include your current location and the selected city; the app updates the server when those change. The server stores these coordinates rounded to about 100 meters, with the city names, linked to the push token. To check for rain, it sends the coordinates, rounded to about 1 km, to Open-Meteo every 10 minutes. Notifications are delivered through the Apple Push Notification service and contain the city name and the location they refer to.
Turning an alert off in the app asks our server to remove its cities; the push token itself stays registered. The app sends that request once and does not retry it, so if it doesn't arrive (for example, because you're offline), the cities stay on the server. If you turn notifications off in iOS Settings, or delete the app, while alerts are still on, the app can't remove them either. For a deleted app they stay until the server next tries to send an alert for one of those cities and Apple reports the token as no longer valid, which happens only when lightning or rain actually reaches one of them.
Nothing on our server links a push token to your name or email address, so we can't find your entries from a message. To remove them yourself, allow notifications for Fahrenheit Celsius Dual Degree in iOS Settings, open the app, wait for the weather to load, and then turn the alerts off.
Flags
Flags that aren't built into the app are downloaded from the jsDelivr content delivery network the first time the app needs them, then kept on your device. When it launches, the app downloads any flag it doesn't already have for each saved city, even if that flag isn't on screen. Each download names the country, state, or city the flag belongs to and includes your IP address, but no coordinates. If a flag turns out to be missing, the app reports the flag's name and the city, region, and country code it was for to our server, so we can add it. The report carries no coordinates or identifier.
Our server
Our server at api.dualdegree.app is hosted by Render in the United States. Like most web servers, it keeps a request log: for each request the app makes to it, the log records your IP address and what the request contained, such as coordinates, city names, or search text. Push tokens, Apple attribution tokens, random installation IDs, and StoreKit transaction IDs are masked in the log. Apart from that log, the server stores only weather and place-name caches, missing-flag reports, Apple Ads campaign records described below, and push tokens with their alert cities, your alert distance, the time each token was last registered (updated each time the app launches with notification permission granted), and the time each city last triggered an alert.
The server passes weather and search requests to Open-Meteo as described above. It may also pass city-search result coordinates to OpenStreetMap's Nominatim to obtain canonical English place names. Those Nominatim results are stored by coordinate rounded to about 1 km.
Apple Ads attribution
Starting with version 1.0.18, the app uses Apple's AdServices framework to tell whether an installation came from one of our ads on the App Store. When the app first opens, it asks Apple for a short-lived attribution token and sends that token, with a random installation ID created by the app, to our server. This process does not give us a name, email, advertising identifier, location, or other real-world identity, and it does not use the App Tracking Transparency permission or the IDFA.
Our server sends the token to Apple and does not save it. Apple may return whether the installation came from an Apple Ads campaign and, for an attributed installation, campaign, placement, ad group, keyword, ad, country or region, conversion type, claim type, and a click time rounded to the minute. If Apple reports that the installation was not attributed to an ad, our server retains no attribution record and the app sends no purchase information for advertising measurement.
For an Apple Ads-attributed installation only, our server stores the random installation ID and Apple's campaign-level response. If that installation later completes a verified Dual Degree Plus purchase, the app sends the random installation ID, StoreKit product ID, StoreKit transaction ID, and purchase date to our server. The server immediately replaces the transaction ID with a one-way SHA-256 hash and stores the hash with the attributed campaign record. Repeated reports of the same transaction are ignored. Sandbox purchases, people grandfathered into Plus from a past paid version, and purchases from installations not attributed to Apple Ads are not retained as ad conversions.
Attribution records and their purchase conversions are automatically deleted 25 months after attribution. This data is used only to measure which Apple Ads campaigns lead to installations and Plus purchases. It is not used to track activity across other companies' apps or websites. Apple's handling of the token and attribution response is subject to Apple's Privacy Policy.
Purchases and Dual Degree Plus
Optional Lifetime, Annual, and Monthly Plus purchases are processed entirely by Apple through the App Store and StoreKit, subject to Apple's Privacy Policy. We do not receive your Apple Account, payment details, or billing information. The app receives verified product and entitlement information from Apple so it can unlock Plus, restore purchases, determine trial eligibility, and recognize people who bought the paid app before Plus launched. Purchase information is sent to our server only for the limited Apple Ads measurement described above.
Data stored on your device
Your saved cities, preferred temperature scale, units, language, display preferences, and whether Plus features are available are stored on your device using iOS UserDefaults. They are shared with the Fahrenheit Celsius Dual Degree widgets through an iOS App Group so the widgets can render the same data. The app also stores its random Apple Ads installation ID, whether Apple reported the installation as attributed, and a short ledger that prevents the same attributed purchase from being reported twice. The Apple Ads values are not shared with the widgets. Aside from the requests described above, and links you choose to open (such as a weather alert's details), nothing leaves your device.
Children
The app is suitable for all ages. It collects nothing beyond what this page describes, from anyone, including children.
Changes to this policy
If this policy changes in a meaningful way, we'll update this page and the "Last updated" date above. The app will continue to behave as described unless and until that happens.
Contact
Questions about this policy or how the app handles data? Email support@motomatic.com.