Draft for legal review. Version of 6 November 2026. Text in [square brackets] is a placeholder or a question for the lawyers. Not yet published.
This policy explains what RunBattle collects when you use the RunBattle iPhone app, the runbattle.io website and our servers, why we need it, and what you can do about it. We wrote it in plain language. If something is unclear, write to us.
1. Who we are
RunBattle is run by Citadel Technology South Limited, a company incorporated in Hong Kong (company no. 81230040), [registered address] (“we”, “us”). We decide how your data is used.
Privacy questions and requests: privacy@runbattle.io.
[Legal review: the company is outside the EU and the app launches worldwide, EU countries included. Do we need an EU representative under GDPR Art. 27? If yes, add their name and address here.]
2. The short version
- We track your location only while you are recording a run.
- We have no ads, no advertising ID, and no analytics or crash-reporting SDKs in the app.
- We don’t sell your data.
- Other players can see your nickname, your zones and a trimmed replay of the run that captured a zone. A zone shows the contour you ran, and your loop’s start lies on it, so if you don’t want your home area on the map, start and finish away from it. Replays don’t show the stretch around your start and finish or what time you ran.
- Messages are only possible between accepted friends, and only from the year you turn 14.
- You can delete your account in the app. That deletes your runs, zones, friends and messages.
3. What we collect and why
Account
When you sign in, we receive a stable user ID from the sign-in service you chose: Sign in with Apple, Google, Facebook or VK ID. If you sign in with your e-mail, we send a one-time code to that address. We never see your passwords. If the service shares your e-mail address, we store it. Apple can give us a private relay address instead of your real one.
You also give us:
- a nickname, shown on the map as
name#1234(the four digits tell people with the same name apart); - your territory colour;
- an optional profile photo, which you pick from your photo library. We store a small compressed copy, up to 300 KB. The app only gets the photo you pick, not your whole library;
- your birth year. We use it to check the minimum age and to decide whether chat is open to you (see section 9). You can correct it once, as long as the correction doesn’t open chat; anything else goes through us. If you enter a year under the minimum age, we don’t store the year, only a note that the account is locked for that reason.
We use this to run your account and show you to other players.
Location and runs
The app uses your location only while you are recording a run. That includes the time when the screen is locked or another app is open, so the run isn’t cut off. When the run ends, location tracking stops. We don’t track you in the background otherwise.
When you allow location access, the map can also show where you are while the app is open. That position stays on your phone unless you are recording a run. The map itself is drawn by the Mapbox SDK (see section 5).
When you finish a run, the app sends us:
- the route as a series of points (latitude, longitude, time, altitude);
- distance, duration and pace;
- average heart rate and calories, if available;
- the name of the city, which your iPhone works out from the route using Apple’s geocoding service.
We use this to show your run history and stats, to decide whether your loop captured a zone, to award coins, missions and Mystery Boxes, and to catch cheating. For example, we reject parts of a run that are faster than a person can run.
If the server has to estimate your calories, the app sends your body mass for that one calculation. We don’t store it.
What other players see
RunBattle is a game on a shared map, so some of your game data is public to other players:
- your nickname, colour, profile photo, level and stats on your profile;
- the shape, size and capture time of your zones, and the time someone has to beat to take a zone over. A zone’s outline is the route of your loop, and the loop’s start lies on it. If you don’t want your home area on the map, start and finish away from it;
- a replay of the run that captured a zone. For anyone except you, we cut the stretch around the start and the finish of that replay, 300 to 600 m depending on direction, and remove the date and time of day, so the replay doesn’t show when you run;
- “zone taken” events. If someone takes your zone, you see their name when you open the app. Other players see the event later (at least 2 hours), without names, and only to the precision of a district.
Apple Health
Apple Health is optional. You choose what to allow in the iOS permission screen, and you can change it in the Health app at any time.
- Writing: we save your RunBattle runs to Apple Health as workouts with distance, route and calories.
- Reading: we read heart rate and body mass to show effort and calories for your runs.
- Importing: if you open the import screen and choose runs, we read the running workouts and routes that other apps (for example, your watch app) saved to Apple Health, and import the ones you pick. We don’t read them otherwise.
We use Health data only to provide these features. We don’t use it for advertising, we don’t sell it, and we don’t share it with third parties. You can share a run yourself: when you tap Share, the image you see in the preview goes to the app you pick. For a run imported from Apple Health, that image can show its route, distance, time and pace. The start and finish of the route are hidden. The image never shows your heart rate or body mass, and we don’t receive it.
[Legal review: does “we don’t share it with third parties” stay true when the user sends, through the system share sheet, an image with a route that came from HealthKit? Can a user-initiated share of Health-sourced runs stand under Apple’s rule about third parties that aren’t health or fitness services?]
Friends, messages and safety
- Friends: friend requests you send and receive, and your friends list. People can find you by
name#1234. - Messages: you can message only friends who accepted your request, and only from age 14 (see section 9). We store the messages, the zone cards you share in a chat, and when you last read a conversation.
- Reports and blocks: if you report a person or a message, we store the report: the reason, any details you add, and the reported player’s nickname as it was at that moment. If you block someone, we store that too. A block removes the friendship and stops requests and messages between you.
We use this to deliver messages and to keep people safe. We read reported messages and profiles when we review a report. We don’t read private messages otherwise.
Game economy
Your coin balance and a log of every coin earned or spent, the Mystery Boxes you picked up and what they contained, the cosmetic items you own and wear, your missions and their progress, your level, and your time zone (so daily missions reset at your midnight). We use this to run the game and to keep balances correct.
Technical data
Our servers log requests: IP address, time, the address requested, and the app version. We use logs to keep the service running, stop abuse (for example, rate limits) and fix bugs. The app doesn’t collect an advertising ID, and it doesn’t use analytics or crash-reporting SDKs.
The website
runbattle.io doesn’t use analytics or advertising cookies. The demo map on the site loads its tiles from Mapbox or OpenFreeMap, which see your IP address, as any web server does. [If web analytics is switched on later, this section and a cookie notice must be updated first.]
4. Legal bases (EEA and UK users)
- Contract: to provide the app you signed up for: account, runs, zones, game, friends and messages.
- Consent: location, Apple Health and photo access. You give it in the iOS permission screens and can withdraw it in iOS Settings or the Health app.
- Legitimate interests: anti-cheat, safety and moderation, security, and fixing bugs. You can object (see section 8).
- Legal obligation: when the law requires us to keep or hand over data.
5. Who else handles your data
We use a few service providers. They process data for us under contract, and only to provide their service:
- [Hosting provider to be confirmed: we are moving off Heroku (Salesforce); name the new host]: hosts our servers and database. Region: [EU or US, to be decided].
- Mapbox: draws the map in the app. When you take over a zone, our server sends the outline of that zone to Mapbox to build a route along the streets. The Mapbox SDK in the app collects de-identified location and usage data for Mapbox’s own purposes, under Mapbox’s privacy policy. You can switch this off in the app: tap the (i) next to the Mapbox logo on the map.
- MET Norway: weather for the map. Our server asks for the forecast of a grid cell about 11 km wide (coordinates rounded to 0.1°). MET Norway gets our server’s request, not your identity or exact position.
- Apple: Sign in with Apple, Apple Health on your device, and city names from geocoding.
- Google, Meta (Facebook) and VK: only if you choose to sign in with them. They learn that you used their sign-in for RunBattle.
- E-mail provider: sends one-time sign-in codes. [Provider to be chosen: Resend, Postmark or Amazon SES.]
Place names and outlines on the map come from © OpenStreetMap contributors and the Overture Maps Foundation. We don’t send them any of your data.
We may share data if the law requires it, to protect people from harm, or as part of a sale or merger of the company (we would tell you first).
6. International transfers
We are based in Hong Kong. Our servers are in [the EU or the US]. Our providers may process data in other countries. Where the law requires it, we use safeguards such as the European Commission’s standard contractual clauses. [Legal review: confirm the transfer mechanism once the region and providers are fixed.]
7. How long we keep data
- Account, runs, zones, game data, friends and messages: until you delete your account, or until we delete an account that broke the Terms.
- Conversations: a conversation is deleted when either person in it deletes their account.
- Reports: kept after the reporter’s or the reported player’s account is deleted, with the reported nickname as it was, so that we can handle repeat abuse. We keep them for [period to be decided].
- Mystery Boxes already picked up: stay in the game history without your account ID.
- Server logs: [period to be decided, e.g. 30 days].
- Backups: deleted data disappears from backups within [period to be decided].
8. Your rights
Depending on where you live, you can ask us to:
- give you a copy of your data;
- correct it;
- delete it;
- send it to you or another service in a common format;
- stop or limit some uses, or object to them.
You can also withdraw consent at any time; that doesn’t affect what we did before.
To use these rights, write to privacy@runbattle.io from the e-mail linked to your account, or tell us your name#1234. We answer within 30 days. If you are in the EEA, you can also complain to your data protection authority. In Spain, that’s the Agencia Española de Protección de Datos (aepd.es).
Delete your account in the app: Profile → Settings → Delete account. This deletes your profile and photo, runs and routes, zones, friends and friend requests, conversations and messages, coin history and items. Runs already saved to Apple Health stay there; you manage them in the Health app.
[Legal review: to hide the ends of a shared route, the app keeps a short list of hidden areas in the phone’s Keychain. It never reaches our servers, but it stays on the phone after account deletion, and it can survive uninstalling the app. Should this paragraph say so, or must the app delete it with the account?]
9. Children and teens
RunBattle is for people aged 13 and over. We only know the birth year, so we count the age you reach this calendar year: you qualify from 1 January of the year you turn 13. If the birth year you enter is later, we don’t store it and the account is locked (no runs, friends, messages or shop) until you delete it or we correct the year after you write to us. The map stays open without an account. The minimum age is a server setting (Safety:MinAge, 13).
- Parental consent. In the EU, if you are under your country’s age of digital consent, a parent or guardian has to agree to you using RunBattle. In Spain that age is 14; GDPR Art. 8 lets countries set it between 13 and 16. [Legal review: we need a parental consent flow, or a minimum age at or above the highest local age, before launch.]
- Messages from 14. Chat opens on 1 January of the year you turn 14, counted from the birth year you enter. From 13 until then you can still run, capture zones, add friends, open Mystery Boxes, do missions and use the shop. The chat age is a server setting (
Safety:MinChatAge, 14) and may change, but chat never opens below the minimum age of 13. Under COPPA, we would need verifiable parental consent before collecting personal information from children under 13 in the United States, so we don’t keep accounts for them. - Protections for younger players. Messages work only between accepted friends. Report and block are available wherever a name appears. Replays shown to other players leave out the stretch around a run’s start and finish. A zone’s outline stays visible, so start and finish away from home if you don’t want that area on the map. Mystery Boxes and coins can’t be bought.
If we learn that someone under the minimum age has an account without the consent that’s required, we delete it. Parents can write to privacy@runbattle.io.
10. Security
Data travels between the app and our servers over encrypted connections (HTTPS). Access to the database is limited to the people who run the service. No system is perfectly secure; if a breach affects your data, we will tell you and the authorities as the law requires.
11. Changes to this policy
If we change this policy in a way that matters, we will tell you in the app before the change takes effect. The date at the top shows the current version.
12. Contact
Citadel Technology South Limited, Hong Kong, [registered address] E-mail: privacy@runbattle.io