NEON HOLD

Privacy Policy: NEON HOLD

Effective date: October 16, 2026

NEON HOLD is made by Jan Rohweder, trading as Marketing Bear. This policy explains, in plain language, exactly what leaves your phone, why, and how to get rid of it. It describes version 1.4 of the app. The few things an earlier version does not do yet are marked "from version 1.4".

The short version: the game is fully playable without sending us anything. If you choose to join the global grid, we publish a small scoreboard row: a name, a flag and a best time. There is no tracking, no advertising, and no analytics.

Contact: nova@neonhold.com


1. Playing alone works without us

Your runs, personal best, streak, revive balance, achievements and settings live in your device's own storage. The game is fully playable this way. Every mode, every level, every purchase you have made, all of it works with the network off and with the grid switched off.

Delete the app and that local data goes with it.

2. The global grid is opt in

The global grid is the shared leaderboard, plus friends and invites. It is off until you turn it on, and the switch is joining it: JOIN THE GLOBAL GRID on the start screen, or the grid switch under Game Center in Settings. Until you join, your times stay off our grid: you can see yourself on it, and nobody else can. The app does keep an anonymous record for this install on our server from the first launch, which is what lets revives and invite codes work before you join. It is not a row on the leaderboard, and until you join it carries no Game Center identity, and (from version 1.4) a white flag 🏳️ in place of your country's. It also notes the first time this install finishes a run: the moment, never the run's time, because that is when an invite you accepted pays the person who sent it (section 4).

Leaving the grid takes you off it. From version 1.4, switching the grid off in Settings, or STOP USING GAME CENTER, takes your row, with your name, flag and best time, off the public board and out of search, and puts the white flag back on your record. That happens straight away, or the next time the game opens if your phone was offline. It keeps your friends, your revives, your streak and your invite code, because none of those are the grid. Your friends still see you, under your name, with the white flag and no time. Deleting all of it is a separate control (section 8).

Game Center is a separate thing, and it is between you and Apple. If you are signed in to Game Center in your iPhone's Settings, the game connects to it when it opens, the way Apple asks games to, so that Game Center challenges and activities can find you. That connection on its own sends nothing to Apple's leaderboards. Your times go to Apple's leaderboards, and your achievements to Apple, under your Game Center account, only once you have said yes to Game Center. A yes is any one of these: tapping SIGN IN TO GAME CENTER, or USE GAME CENTER in Settings; pressing a Game Center challenge in the game; starting a NEON HOLD challenge or activity from Apple's Games app; or joining the global grid. A yes you gave in an earlier version of the game still counts. That connection runs between your phone and Apple, under Apple's privacy policy. It does not put you on our grid: your Game Center alias, and the hash of your Game Center id described below, reach our server only once you join the grid. If you are not signed in to Game Center, Apple's sign-in screen only ever appears after you tap one of the game's Game Center or grid controls, such as SIGN IN TO GAME CENTER or JOIN THE GLOBAL GRID, never on its own. "Stop using Game Center" in Settings stops the game connecting to Game Center at all, stops anything more going to Apple from that moment, and takes you off the grid with it.

This is the complete list of what we hold. Most of it sits on that anonymous record from the first launch, under the placeholder name the app gives you (such as NEON_4821). Joining the grid is what puts a name, a flag and a best time on the public board, and what lets your Game Center alias become that name.

WhatExampleWho can see it
A per install player ida random 9F2C1A34-... made on your phone at first launchOnly us. It is never shown to other players.
A public player id7K4MQ2XR9TVWX3ZAPublic. It is how other players' apps refer to you.
Your display nameVOLT_99Public, on the grid.
Your handleVOLT_99#4821Public on the grid. It is the searchable version of your name, and only players on the grid can be found by it.
Your country flag🇩🇪Public once you join the grid. Until then, and after you leave it, the app sends a white flag 🏳️ in its place (from version 1.4).
Your best score84300 millisecondsPublic.
First seen and last seen timestamps1754500000000Only us.
When this install first finished a run1791000000000Only us. No run time comes with it.
The app build number9Only us.
A write tokena random secret stored on your deviceOnly us. It proves a score really came from your install.
A one way hash of your Game Center ida3f1... (64 characters)Only us. It is never shown to other players.
Your revive balance12Only us.
Your daily streak9 days, and which day was the last oneOnly us.
A reference for each revive purchasetx-2000000123456789Only us.
Friendships, pending requests and blocksa pair of public player ids and a timeOnly us, and the other player.
Reactions you send or receiveimpressive_thumb, and who it was betweenOnly us, and the two of you.
A push token, only if you allow notifications, grid or no grida string of 64 or more hexadecimal characters that Apple issuesOnly us, and Apple, which delivers the notification. Section 5 says exactly what comes with it.

Six notes on that list, because they are the parts people are usually surprised by.

The per install player id is not you. It is a random identifier created on your device. It is not your Apple ID, not your phone's advertising identifier, not your device serial. We cannot use it to find you anywhere else, and nobody has ever handed it to us from another app, because no such sharing exists.

The Game Center hash is what lets your record survive. Before it existed, your place on the grid was tied to that per install id, and a per install id dies with the install. Delete the app and your row stayed on the board with nobody behind it; reinstall and you started again as a stranger, sitting next to yourself. The hash is how we recognise you coming back.

Three things about it. It is derived from teamPlayerID, an identifier Apple mints for us and only for us: it is not your Apple ID, it is not your Game Center nickname, and no other developer ever receives the same value. It is hashed on your phone with SHA-256 before it is sent, so the identifier itself never reaches us and we could not recover it from the hash. And it is only ever sent for a player who has joined the grid, so if you never join, we never have one.

That does change one thing, and it should be said plainly rather than left to be discovered. Deleting the app still takes everything on your phone with it. What it no longer takes is your place on the global grid, because that was never really the phone's: it belongs to the Game Center account you chose to attach it to. Erase inside the app still deletes all of it, this hash and the link it provides included, and that erasure is final.

The revives, the streak and the purchase references are there so they survive your phone. Revives are what Apple calls a consumable purchase, and Apple does not restore consumables: ask the App Store to restore them on a new handset and it will correctly tell you there is nothing to restore, forever. Keeping the count is the developer's job, so we keep it, and joining the grid again with the same Game Center account is what brings it to your next phone. The purchase reference is Apple's own id for the transaction, and we hold it for one reason: so that a purchase which reaches us twice, because a reply got lost, is banked once. It is not a receipt, it does not contain a price, a card, or anything about you, and it is never used to work out what you might buy next.

The streak is there for the same reason: so that playing on your iPad on Tuesday and your iPhone on Wednesday is a two day streak rather than two first days.

If you never join the grid, none of this is tied to your Game Center account, so a new phone or a reinstall cannot bring it back, and the app says so at the point it matters rather than in this document. It is on the Vault before you buy anything.

Nothing anybody sends you was written by them. The only messages that exist between players are six lines this app ships with, and a friend request that carries no message at all. Nobody can type anything at you in NEON HOLD, which is a deliberate design decision rather than a feature we have not built yet.

The country flag is a setting, not a location. It starts from your device's region setting, which is the country you picked when you set up your phone. You can change it in the app at any time. We never ask for or receive GPS, precise location, or anything derived from your network position. From version 1.4 it stays on your phone while you are off the grid: before you join, and again after you leave, the app sends a white flag in its place, so not even your friends see it.

Your display name may become your Game Center alias. If you join the grid, the app adopts your Game Center alias as your grid display name, so the board shows a real identity instead of the generated NEON_0000 placeholder. That alias then becomes public on the grid. Being signed in to Game Center on its own never does this. If you would rather it did not, do not join the grid: the app has no other way to set a name, so the alias is the name.

Check that your Game Center alias is one you are happy to see in public before you join. It is shown to every other player.

3. Friends, requests and reactions

Adding somebody is a request, and a request has to be accepted before anything else happens. While it is waiting we store the link between your public player id and theirs and the time you sent it; once they accept, that becomes a friendship, stored in both directions. Declining deletes the request, and we do not tell the person who asked. That is the whole record either way. No message, because there is no message to send: a request is a request and nothing else travels with it.

You can find other players by searching their name or handle, by opening an invite or challenge link somebody sent you, or by entering their invite code. Search only finds players who are on the grid, which means players with a row on the public board. A player who has never joined cannot be found by search at all, under their placeholder name or any other, and a player who leaves the grid drops out of search with their row. The only ways to reach them are a link or a code they chose to share, or a request they sent you. Your friends, and anybody you send a request to, see the name on your record (the placeholder the app gave you, such as NEON_4821, until you join). They see your best time only while you are on the grid, and, from version 1.4, your flag only then too. There is a ceiling of 200 friends per player, which exists to keep the service cheap to run rather than for any privacy reason.

Reactions are a list, not a text box. Friends can send each other one of six fixed messages, once a day, and the list is written into the app. What we store is which one, who sent it and who it was for. It is stored as an id rather than as words, which is how the same reaction can be read in another language later, and it means there is no free text anywhere in this feature for anybody to have to moderate, report or read.

Removing and blocking. Removing a friend deletes the link on both sides and ends the ability to send anything either way. Blocking does that and also stops them sending you another request. They are not told either has happened, and the app tells them the same thing it tells anybody who is not taking requests.

4. Invites and challenges are links, not addresses

Inviting somebody is one screen: the app shows you an eight character code and a link, and hands them to the iOS share sheet. Challenging somebody works the same way: the game hands the share sheet a short summary of your run, a picture of it, and a link that carries your code and the time to beat. You choose where that goes, in whatever app you already use to talk to that person.

Here is the whole of it.

  1. The app asks our server for your invite code. The server knows your player record and nothing about whoever you are about to send it to.
  2. You hand that link to the iOS share sheet and pick an app and a person. This part happens entirely on your phone. iOS never tells us which app you chose or who received it.
  3. Your friend taps the link. On a phone with the latest version of NEON HOLD it opens the game: an invite opens the Vault with your code filled in, ready for them to redeem (or, if they have already used their one invite, offers to send you a friend request instead). A challenge puts your time on their progress rail and carries your code too: a friend who has never used an invite is offered CLAIM, which opens the Vault with it filled in, and one who has, and is not your friend yet, is offered to add you. On a phone without the game, the link opens a page on neonhold.com that shows how to get it; that site keeps no log of who opened what. Your friend can also type the code into the Vault. In their first week, if a link is on their clipboard, the start screen offers a Paste button: the game asks iOS only whether the clipboard holds a link, without reading it, and reads it only when they tap Paste.
  4. When a challenge link is opened, the game asks our server for the name, flag and best time that the link's code shows on the public grid, so the challenge can say who sent it. That request carries nothing about the person asking, and the server answers only for a player who is on the grid. It counts these requests per code for an hour, so the list of names cannot be scraped through it.
  5. When your friend redeems the code, the server learns that two players are now friends. When they finish their first run, their app tells the server so (section 2), and that is when you are paid for the invite. Neither step needs either of you to have joined the grid.

We are not part of step 2, and we cannot be. There is no address book access, no contact picker, no email field anywhere in the app, and nothing here has ever asked for one.

So the honest version of this section is short: we hold no address for your friend, because we are never given one. There is no send, no suppression list, no unsubscribe, and nothing to unsubscribe from. NEON HOLD sends no email to anybody, ever.

What we do hold is the code itself, which is a random string tied to your player record, plus a count of how many times it has been redeemed. When somebody redeems it, both of you appear on each other's friends list, a player new to the game is given their welcome revives, and you get a note in your inbox; your own revives follow once they have played.

An invite can be redeemed once per player, for life, and rewards are capped at 10 a week per player. Both limits exist to stop reward farming, not to profile anybody.

If you received an invite or a challenge you did not want, it came from the person who sent it, in their own messaging app. We did not send it, we do not know it happened, and there is nothing on our side to remove.

5. Notifications, and the one token we hold for them

Most of what the game tells you is worked out on your phone. The warning before a streak ends, the note when a free revive lands, the nudge after a few days away, the Halloween dates: all of these are scheduled by the app, on your device, by iOS, from state that is already on the phone. Nothing is sent to us to make one of them happen.

Some things only our server knows at the moment they happen: a friend request, a request being accepted, a reaction, an invite being redeemed or paying out, a friend passing your best time. To tell you about those while the app is closed we use Apple Push Notification service. When you allow notifications, the app registers your phone with Apple, Apple gives it a device token, and the app sends that token to our server. If you never allow notifications, no token exists and none is sent.

This is everything we hold for it. For each phone that has registered, up to five:

WhatExampleWhy
The device token Apple issued for NEON HOLD on that phone64 or more hexadecimal charactersIt is the address Apple delivers a notification to.
Which Apple service the token belongs toproduction or sandboxSo the notification goes to the right one.
Your phone's time zone nameEurope/BerlinSo anything arriving between 21:30 and 09:00 on your clock lands silently instead of waking you, the same hours the app keeps for its own notifications. It is a setting, not a location.
The app's build number36So we know which version of the app a token came from.
When that phone last registered1791000000000So the token can expire sixty days later.

And once for your player record, whatever number of phones:

WhatExampleWhy
Your on or off switch for each kind of notificationfriend requests on, reactions offSo we never send a kind you switched off.
Today's date and how many notifications we have sent you today20261031, 3 in all and 1 of the softer kindsSo nobody is sent more than the daily limits: at most eight friend requests, accepted requests and invite news, and at most two reactions or friends passing you. The count starts again from zero each day, at midnight UTC.

It sits under your player record, with a one way hash of each token pointing back to that record, so that a phone which changes hands stops receiving the previous player's news.

How long we keep it. Sixty days after your phone last registered. The app registers again at least once a week while you are using it, so a phone that stops opening the game stops being sent anything. It is deleted sooner the moment Apple tells us the token is no longer valid, when the app withdraws it (which it does the next time it opens after you turn notifications off for NEON HOLD in iOS Settings, and for an old token after a reinstall or a restored backup gave the phone a new one), and when you erase your data (section 8). Leaving the grid does not delete it, because notifications are about friends and invites, which work without the grid.

Never shared, and never used for anything else. The token goes to Apple and nowhere else, as the address on a notification, and nothing travels with it except the notification itself: its title and text, which can include a friend's display name; which screen of the game a tap should open, such as the friends board; which kind of notification it is, such as a friend request; the id of the inbox entry it is about, so the app can tell it from the ones it already has; and the instructions Apple needs to show it: whether it plays a sound, which stack of notifications it joins, and how loudly it may interrupt. It is never shown to another player, never written to a log, never used for analytics or advertising, and never used to recognise you. A token is an address, not an account.

You decide what arrives. Settings in the app has a switch for each kind of message: Streak, Friends, Reminders, and Invites and events. Turning one off stops both the reminders your phone schedules and the notifications our server sends of that kind. Turning notifications off for NEON HOLD in iOS Settings stops all of them, and withdraws the token.

Until push notifications are switched on at our end, and whenever they cannot work there, the app still sends its registration; our server checks that it is well formed and stores nothing. Each time the game opens it also asks our server whether push is working. If it is not, because we switched it off or it failed, the app goes back to telling you that news itself, from its own inbox, as it did before push existed.

6. No tracking, no ads, no analytics

We want to be specific rather than vague here, because "we respect your privacy" is worth nothing on its own.

  • No advertising. There are no ads in the app and no ad network SDK in the binary.
  • No analytics. There is no Firebase, no Amplitude, no Mixpanel, no Sentry, no crash reporter of our own, no session recording, no heatmaps, no funnels. We do not know which screens you visit or how long you play.
  • No tracking across apps or websites. We do not use the advertising identifier, we do not ask for App Tracking Transparency permission, and we do not build profiles.
  • No IP addresses retained. Our server sits behind Cloudflare, which necessarily sees the IP address of any request in order to route it, the same as every website you visit. Cloudflare's request logging and log forwarding are deliberately switched off for our service, so no IP address is written to any store we hold or can read.
  • No selling or sharing. We have never sold, rented, traded or shared personal information, and we have no plans to. There is no advertising business here to feed.

7. The only companies involved

Two companies process data on our behalf, each bound by its terms with us to act only on our instructions.

CompanyRoleWhat it touches
Cloudflare, Inc.Hosting and infrastructure. Our server code and the grid database run on Cloudflare Workers and Workers KV.Everything in the table in section 2, plus the friend links and invite codes. Sees request IP addresses in transit, as any host must, with logging off.
Apple Inc.Delivers push notifications through Apple Push Notification service, if you allow notifications.Your phone's device token, and each notification our server sends: its title and text, which can include a friend's display name, and the short labels and display instructions described in section 5.

Nobody else receives your data. There used to be a row here for the company that delivered invite emails. The email feature was removed, so that processor was removed with it. The one credential our server holds for any other company is Apple's push signing key, which proves our server to Apple when it sends a notification and is not data about anybody.

Separately, and not as our service providers: Apple runs the App Store, so it handles your purchases directly, and we never see your payment details, card, or billing address. If you are signed in to Game Center, Apple operates its leaderboards, challenges and activities under Apple's own privacy policy. Those are your relationships with Apple, not data we pass on.

8. How long we keep things, and how to delete everything

Your grid row, friend links and invite code are kept for as long as you keep using the grid, because they are the service. There is no archive, no backup copy hoarded for analysis, and no dataset of former players.

Short lived operational records expire on their own: the counters that enforce rate limits last only as long as their window, the weekly invite counter expires after 14 days, and a push token expires 60 days after its phone last registered (section 5).

To delete everything, use DELETE MY GRID DATA in the app (from version 1.4): Settings, then ABOUT & PRIVACY. It asks you to confirm first. It removes your player record, your event history, your friend links, requests and blocks in both directions, every invite code you have ever held, your Game Center link and its hash, the push token of every phone you registered, and your rate limit counters, and it takes you off the grid. Your runs, revives and settings stay on your phone; deleting the app clears those. If you keep playing, the app later starts a fresh anonymous record for this install, as it does on a first launch.

Or write to nova@neonhold.com and we will do it for you. We will ask for something that ties the request to the account, usually your handle, since we hold no email address for you and cannot otherwise tell who is asking.

There are no exceptions and nothing survives it. An earlier version of this policy carved out one, for the list of addresses that had asked never to be emailed. That list no longer exists because the emails no longer exist.

9. Children

NEON HOLD is rated 4+, which means the content is suitable for everyone. Here is what that means for data, plainly.

The game is designed so that a child's play publishes nothing: the grid is off until somebody switches it on. The app does keep the anonymous install record described in section 2 from the first launch, under a generated placeholder name and with no score. If the grid is switched on, the only thing that becomes public is a display name, a flag and a score. We collect no birthday, no email address, no photo, no contacts, no location and no behavioural profile, from anyone. There is no advertising and no tracking, so there is nothing here that could target a child.

Two things worth a parent's attention. First, the display name is public, so it should not be a real name or anything identifying, and a Game Center alias will be adopted as that name if the child chooses to join the grid. Game Center itself is between the child's Apple account and Apple: if the phone is signed in to Game Center, the game connects to it when it opens, as Apple asks games to. The game never shows Apple's sign-in screen unless somebody taps for it, sends nothing to Apple's leaderboards until somebody says yes to Game Center (section 2), and never joins the grid on its own. Second, inviting or challenging a friend hands a link to the iOS share sheet, which means the child picks an app and a person themselves, exactly as they would sharing anything else.

We do not knowingly collect personal information from children in a way that would require verifiable parental consent under COPPA, the UK Age Appropriate Design Code, or GDPR Article 8. If you are a parent or guardian and believe a child has put something identifying into the app, write to nova@neonhold.com and we will delete it. No proof of purchase, no forms, no argument.

10. Your rights

If you are in the UK, the EU or the EEA (UK GDPR and EU GDPR) you have the right to access your data, correct it, delete it, restrict or object to its processing, and receive it in a portable form. You also have the right to complain to your data protection authority.

Our lawful bases:

ProcessingLawful basis
Your grid row, handle, flag, score, friendsConsent, Article 6(1)(a). You opt in. Leaving the grid withdraws it for the row, handle, flag and score, and the delete control in the app withdraws it for all of it.
Your invite code and how many times it has been redeemedConsent, Article 6(1)(a), given by opting into the grid.
Rate limit counters keyed to your install idLegitimate interests, Article 6(1)(f): keeping the service usable and unfarmable. They expire on their own.
Your push token, time zone name and notification switchesConsent, Article 6(1)(a). You give it by allowing notifications, and withdraw it by turning them off.

There is no row here for email, marketing or profiling, because we do none of them. We send no email of any kind, we run no advertising, and we build no profile of anybody.

If you are in California (CCPA and CPRA) you have the right to know what we collect and why, to delete it, to correct it, and not to be discriminated against for exercising those rights. We do not sell personal information and we do not share it for cross context behavioural advertising. We never have. There are no financial incentives tied to your data. In the last 12 months, the categories we collected are the identifiers and the game content listed in section 2, and, for a phone that allows notifications, the device token listed in section 5, from you and your device only, for the purposes described here.

Wherever you live, you can exercise all of this yourself with the delete control in the app, or by writing to nova@neonhold.com. We answer within 30 days, and we do not charge for it.

11. Where data is processed

Cloudflare runs our code close to whoever is asking, so processing may happen outside your country, including in the United States. Transfers out of the UK, the EU and the EEA rely on the Standard Contractual Clauses in Cloudflare's data processing terms.

12. Changes

If we change what we do, we will change this policy first, update the effective date at the top, and ship the new text inside the app. If a change is significant, and especially if it would ever widen what we collect, we will ask you again rather than assume the old opt in still covers it.


Operator: Jan Rohweder, trading as Marketing Bear
Contact: nova@neonhold.com

© 2026 Jan Rohweder, Marketing Bear. All rights reserved.