Dev Idle knows what you played, not who you are.
This version of the game reports what happens in it — which tier you reached, when you shipped a version, how far into the skill tree you are, what you bought, and any crash — to Firebase Analytics and Firebase Crashlytics, both run by Google. It still has no account, no sign-in, no name, no email, no advertising identifier and no ad network, so none of that data is attached to a person. Your save is still a file of numbers on your own phone, and a copy in your own iCloud that only you can reach.
What changed, and when
Every earlier version of Dev Idle collected nothing at all, and this page used to say so at length. That is no longer true, so the page has been rewritten. The rewrite is dated before the release that ships the SDKs, not after — which is what the old version of this page promised would happen, and the only version of that promise worth making.
Concretely: as of 24 August 2026the app links two Google libraries, Firebase Analytics and Firebase Crashlytics. Nothing else about the app’s handling of your data has changed. The save is where it was, purchases work the way they did, and there is still no server of mine anywhere in the picture.
Who you are dealing with
Dev Idle is built and published by David Petrina, an independent developer based in Czechia. There is no company and no team. For anything on this page, write to david@petrina.me. That address is the data-protection contact as well as the support one; there is only one person to ask.
I still run no backend of my own. There is no Dev Idle server, no account database and no receipt validator. What is new is that the game now reports to Google’s servers, which are a backend — just not mine. I read what arrives there through a dashboard. In data-protection terms I am the controller and Google is my processor, under Firebase’s data processing terms; for players in Europe the Google party to that is Google Ireland Limited.
The short version, stated precisely
In Apple’s App Privacy terms, Dev Idle now declares five collected data types— product interaction, a device identifier, purchase history, crash data and other diagnostic data — and every one of them is marked “Not Linked to You”. The answer to “do you use data for tracking purposes?” is still no, and that is a statement about which frameworks are linked rather than a promise about intentions.
The app ships a PrivacyInfo.xcprivacy manifest that says exactly this: tracking false, an empty list of tracking domains, and those five data types each declared not linked and not used for tracking. Apple validates that file at upload and shows it on the App Store product page, so it is a claim I cannot quietly contradict.
The complete third-party list for Dev Idle is now: Apple and Google. Apple for the App Store and iCloud, Google for analytics and crash reports. There is no third company, and no data broker.
What Firebase Analytics receives
Thirty-two named events, all of them about the game. The useful way to read the list is by what question each one answers.
- Where you got to. A progression_snapshot event at the start of a session, every five minutes while the game is in front of you, on every version you ship, on an IPO, and at the end of a session. It carries about twenty-two numbers: how many generator tiers you own, how far into each skill branch you are, your Commit upgrade levels, your currencies as orders of magnitude rather than exact amounts, how many times you tapped this session, and how many minutes it is since you first launched the game.
- What you reached first. One-off milestones: tier_unlocked, first_prestige, version_shipped, ipo_completed, skill_node_bought, commit_upgrade_bought, offline_collected, daily_claimed and their neighbours.
- What you bought. purchase_started when you tap a product, purchasewhen Apple confirms it, and the ways it can end instead — cancelled, failed, pending, restored. The confirmed one carries the product identifier, the price and the currency, read from the live StoreKit product. It carries no payment method, no receipt, no Apple ID and no name, because the app never has any of those.
- Which screens you opened, and whether a save had to be recovered after a bad load.
- Ten user properties, which are the same kind of coarse bucket as above — payer status, days since install, roughly how far through the skill tree — attached to the install so that a number can be read as “of the players who got this far” rather than as a raw total.
Firebase adds a standard set of its own facts to each event without being asked: device model, operating system version, app version, language, and an approximate location derived from the IP address the request arrives on. That location is country-level geography, not an address, and the IP address itself is not something I can see, query or export.
Debug builds do not report.The app configures Firebase only in release builds; my own runs print to a console instead. This is not tidiness. At launch a developer’s own simulator sessions would be most of the data, and every wiped simulator would look like a brand-new install — which is precisely the number a retention figure is computed from.
What Firebase Crashlytics receives
If the game crashes, a report is uploaded the next time it launches: the stack trace, the device model, the operating system version, the app version, and a small set of game values attached as custom keys so that I can tell a crash at tier 3 from a crash at tier 12.
A crash report is a description of a failure in my code. It contains no message you wrote, because Dev Idle has no text field anywhere in it — not a player name, not a company name, nothing you could type — so there is no free text anywhere for a report to pick up. It contains no contacts, no photos, no location and no file of yours; the sandbox would not permit it and the code does not ask.
An install is not an identity
This is the distinction the whole page rests on, so it belongs in plain sight rather than in a footnote. Firebase identifies an install, not a person. When you install Dev Idle, Firebase generates an app-instance ID: a random string with no meaning outside its own database. It is created on install and destroyed when you delete the app. Install the game again and you are a different, unrelated install, and there is no way — mine or Google’s — to reconnect the two.
The other identifier in the manifest is Apple’s identifierForVendor, which is scoped to one developer on one device. It says nothing about who you are, only which of my apps are on this phone, and iOS resets it once they are removed.
Neither is your name, your email or your Apple ID. There is no account to attach them to, no sign-in that could turn them into one, and no other data set of mine to join them against — because there is no other data set of mine. That is why every declared data type is “Not Linked to You”: not as a hopeful reading of a grey area, but because the linking step does not exist.
No advertising identifier, and therefore no ATT prompt
Adding an analytics SDK is the usual moment an app picks up Apple’s advertising identifier along with it. Dev Idle did not, and this is checkable rather than assertable.
From Firebase 11 the Analytics packages inverted: plain FirebaseAnalytics is the build without AdSupport, and FirebaseAnalyticsIdentitySupport is the opt-in that adds the IDFA. Dev Idle links the first and deliberately not the second. The built binary contains no ASIdentifierManager, no advertisingIdentifier, no ATTrackingManager and no AdSupport symbol at all.
The consequences follow from that, and every one of them is observable: the app never shows an App Tracking Transparency prompt, because there is nothing for it to ask permission for. It carries no NSUserTrackingUsageDescriptionand no SKAdNetwork identifiers. Nothing it collects is joined with data from other companies’ apps or websites, which is what tracking means in Apple’s definition and in mine.
Why any of this is collected
To find out how far players actually get, so that new content is built where people are rather than where I imagine they are. That is the entire reason, and it is worth stating in full because it is a good one.
The concrete case that made it necessary: Dev Idle’s skill tree has eighty levels across sixteen nodes, and a simulated player reaching fifty-four of those eighty levels sounds two-thirds finished. Measured by what the levels cost, that same player has bought under a fifth of the tree — the whole tree is 79,442 Pull Requests, and the last levels of it are the ones nobody will ever see. That is why progression is reported as Pull Requests spent rather than as levels: the obvious number was wrong by a factor of three, and only real play could have shown it.
None of this is used to advertise to you, to price anything differently for you, to decide anything about you individually, or to build a profile. It is read in aggregate, as counts of installs that reached a point. There is nobody to sell it to and it is not for sale.
What the app stores, and where
Your save file. One JSON file called save.json, written to Dev Idle’s own Application Support directory inside the app container on your iPhone. Deleting the app deletes it.
What is in it, in full: your money, lifetime earnings, how many of each generator tier you own and their upgrade levels, tap level, tech debt, Reputation, Commits, Pull Requests, Shares, Conference Tickets and how many of them you have ever bought, skill-tree levels, which purchases you own, Sprint Pass season and progress, a boost multiplier, and a short row of clocks: when a version went into App Review, when a Monthly Card runs out, when you last took a daily Ticket, when the season ends, your first-launch date and your last-saved date.
Every one of those is a number, a flag or a timestamp about a game, and none of it identifies you. The analytics events described above are derived from these same numbers; the file itself is never uploaded anywhere except to your own iCloud.
One caveat, stated rather than hidden: if a save ever fails to load, Dev Idle renames it instead of deleting it, so that a bug on my side does not destroy your progress. Those quarantined copies stay in the app’s own folder until you delete the app. They contain the same game numbers and nothing more.
A handful of settings.Your buy quantity (×1 / ×10 / ×max), your chosen editor theme, and four small markers of what a “first time ever” event has already reported — whether you have ever prestiged, whether you have ever bought anything, the deepest tier you have reached, and which Monthly Card expiry has already been noted — are kept in UserDefaults, on the device, in the app’s own container.
A shared container, declared but not yet used. The app and its Live Activity extension both declare an App Group (group.me.petrina.devidle) so that a future Home Screen widget could read the same save without waking the game. Nothing writes to it today. When something does, it will be a folder on your own device, shared between two parts of the same app, removed when you uninstall.
Your own iCloud, if you have it on
So that your progress survives a new phone, Dev Idle writes a copy of the same save into your own iCloud account, using Apple’s iCloud key-value store. One entry stays there: devidle.save.v3, which is the save. At launch it also writes a single true under devidle.probe, purely to find out whether iCloud is reachable at all, and deletes it again immediately — it carries nothing about you or your game, and it is not left sitting in your account.
This happens only if you are signed in to iCloud on the device. If you are not, the feature does nothing at all and the game works exactly the same from local storage. There is no in-app switch for it — it follows your system iCloud setting, and I would rather say that plainly than imply a control the app does not have.
That store belongs to your Apple ID, not to me. I cannot read it, I am not notified that it exists, and no other Dev Idle player can reach it. It holds the same numbers listed above and nothing more, and it is covered by your iCloud storage rather than by anything of mine.
Device backups.Separately from that, if you back your iPhone up — to iCloud or to a computer — the backup includes Dev Idle’s folder, and therefore your save. That is ordinary iOS behaviour for every app rather than anything Dev Idle does, it stays inside your own Apple account or your own computer, and I mention it only because a policy that says “your save is on your phone” should say where else your phone puts it.
Where Apple physically stores any of this, and for how long, is governed by Apple’s privacy policy rather than mine.
What the app asks permission for
Notifications — and only these. Dev Idle never asks at launch. It asks the first time it actually has a reminder to schedule, which is the first time you leave the app with a version in the App Review queue or with your team still earning. Refusing costs you two reminders and nothing else.
Those notifications are composed and scheduled on your device by iOS. There is no push server and no push token, so no notification you receive from Dev Idle has passed through anything of mine or Google’s. Firebase Cloud Messaging is not part of this app.
The App Review Live Activity — the countdown on your Lock Screen and in the Dynamic Island — is started, updated and ended locally by the app itself. It is not push-updated, so no ActivityKit push token is ever requested or transmitted. It shows a countdown, your version number, and the Reputation waiting for you.
Dev Idle never asks for your location, camera, microphone, photos, contacts, calendar, Health data, Bluetooth, or the local network. It has no reason to, and the code contains no request for any of them.
Purchases
In-app purchases and the Dev Idle Pro subscription run through StoreKit, which means the transaction is between you and Apple. I never see your name, your email, your payment method or your Apple ID. Apple gives me aggregate sales reports with no identifying detail about who bought what.
There is no receipt-validation server behind Dev Idle. Entitlements are verified on your device against Apple’s signed transactions and then stored as plain true/false flags in your save. The app does not set an appAccountToken or attach any identifier of mine to a transaction.
What Firebase learns about a purchase is the product identifier, the price and the currency — enough to tell whether a bundle is worth keeping in the shop, and nothing that could reach your payment details, which never touch the app in the first place.
Advertising
Dev Idle has no advertising in it at all. No ad network is linked into the app, no ad is ever shown, and there is no rewarded-video trade anywhere in the game — the “watch something, double your reward” offer that most idle games are built around simply does not exist here. Doubling an offline haul or skipping an App Review wait is bought with Conference Tickets, which are a number in a game rather than a minute of your attention sold on.
So no ad network receives anything about you or your device, for the straightforward reason that there is no ad network to receive it. Firebase Analytics is not one either, and the audience-export and Google Ads features that could make it behave like one need the advertising identifier this app does not have.
If a real advertising network is ever added, it would receive information about your device, and the honest answer on this page would change with it. I would rewrite this section before that release ships, not after, update the App Store privacy label in the same submission, and say so in the What’s New. That is how this page came to be rewritten for analytics, and it is the same promise for ads.
What Dev Idle still does not have
Each of these is an affirmative statement about the shipped app, not an aspiration:
- No account, no sign-in, no name, no email address, and no Game Center. The game never asks who you are, and there is no field in which you could tell it.
- No advertising identifier and no AppTrackingTransparency prompt, because there is nothing to ask permission for.
- No advertising SDK— not AdMob, AppLovin, Unity Ads, ironSource or any other — and no ad is shown.
- No cross-app or cross-site tracking. Nothing Dev Idle collects is joined with data from another company’s app or website, and nothing about you is received from one.
- Nothing sold, and nothing shared with data brokers. I have never sold or shared personal information, in any sense of those words that the CCPA or the GDPR would recognise, and there is no arrangement under which I could.
- No location, contacts, photos, microphone, camera, calendar or Health access, requested or received.
- No push server and no push token; notifications are scheduled locally.
- No user-generated content and no social features. Nothing is authored, shared, posted or seen by another player. There is no leaderboard.
- No web view, so no in-app browsing and no cookies.
How to check this yourself
Put your iPhone in Airplane Mode and play: everything works, because no part of the game needs a connection. Analytics events queue on the device and go out later, or never, if you delete the app first. The only features that ever need the network are buying something, syncing your save, and sending the reports described above.
If you want to be thorough, run the app through a network monitor. You should see Apple’s hosts for the App Store and iCloud, and Google’s Firebase endpoints — app-measurement.comfor analytics, and Google’s crash-reporting endpoints after a crash. If you ever catch Dev Idle contacting a host that is neither Apple’s nor Google’s, that is a bug or a lie, and I want to hear about it at david@petrina.me either way.
Children
Dev Idle is submitted for a 4+ age rating and is not directed at children, nor is it submitted to the App Store’s Kids Category. It asks nobody — child or adult — for a name, an email address, an age or a birthday, and it has no field in which any of those could be typed. What it reports is gameplay, attached to an install rather than to a person, with no advertising identifier, no ad network and no behavioural advertising of any kind behind it. If a child has been playing on your device and you would rather nothing further were reported, turn off Share anonymous analytics in the Shop tab; deleting the app stops it immediately as well, and takes the identifier with it.
The app does contain in-app purchases, which are worth knowing about if you hand your phone to a child; iOS Screen Time can require a password for every one of them.
What you can do about it
Turn it off in the app: Shop tab → Share anonymous analytics. The switch is on by default and takes effect the moment you throw it. It stops both SDKs at source — not just the events the game asks for, but the ones Firebase collects on its own (first_open, session_start, screen_view) and crash reports as well. The choice is remembered, so it holds across launches and app updates.
Note that iOS has no per-app analytics control to fall back on — the “Share iPhone Analytics” setting in Settings → Privacy & Security governs Apple’s own diagnostics, not Firebase, and Settings → Privacy & Security → Tracking has nothing to act on here because the app requests no tracking permission. That is exactly why the switch is in the app.
What does work, completely and immediately:
- Delete Dev Idle from your iPhone. Collection ends at that moment, the app-instance ID is destroyed with the app, the save and every setting go with it, and nothing queued is ever sent.
- Cut off the network: iOS Settings → Dev Idle → turn off Cellular Data, or leave the device in Airplane Mode while playing. The game is fully playable offline; only purchases and iCloud sync need a connection.
- Stop the iCloud copy from being written: turn iCloud Drive off for Dev Idle in iOS Settings, or sign out of iCloud. The game carries on locally.
- Withdraw notification permission: iOS Settings → Dev Idle → Notifications.
- Manage or cancel a subscription: iOS Settings → Apple Account → Subscriptions.
Your rights under the GDPR, UK GDPR and CCPA
The lawful basisfor the analytics and crash reporting is legitimate interests — Article 6(1)(f) — the interest being knowing which parts of the game people actually reach so that the next ones are built where they are needed, and knowing when the app crashes so it can be fixed. The balancing behind that is short to state: the data is about a game, it is pseudonymous, it is read in aggregate, nothing is sold, nothing is shared with a data broker, no decision is made about you individually, and no advertising sits behind any of it. If you would rather it were gated behind a consent prompt instead, that is a fair position and the honest answer today is that the app does not offer one; deleting the app is the control it does offer, and it works absolutely.
The rights you have over personal data are access, correction, deletion, portability, restriction, objection, and the right to complain to a supervisory authority. Write to david@petrina.me to exercise any of them, and expect an answer from a person, because there is only one. In Czechia the supervisory authority is the Office for Personal Data Protection (Úřad pro ochranu osobních údajů); if you live elsewhere in the EEA or the UK, your own authority will take a complaint too.
The limit of those rights, stated rather than discovered:I cannot find your rows. Nothing in the data identifies you, there is no account to look you up by, and I will not ask you for extra personal details in order to manufacture a link that does not otherwise exist — which is the situation Article 11 of the GDPR describes. What I can do is tell you exactly what is held, which this page already does, and delete data for a specific app-instance ID if one is supplied. Deleting the app achieves the same end without needing me.
Under the CCPA, Dev Idle does not sell or share personal information, does not engage in cross-context behavioural advertising, and collects no “sensitive personal information” as that law defines it. There is nothing to opt out of, which is why there is no “Do Not Sell” link on this site.
Where data lives, and for how long
On your device: for as long as Dev Idle is installed. In your iCloud:for as long as you leave it there — Apple determines the storage region for your Apple ID. In Firebase:event-level records are kept for two months, the shortest retention window Google offers, and are then deleted. The aggregate counts derived from them — how many installs reached tier 8 in a given month — outlive that deletion, because they are no longer records about an install. Individual crash reports age out on Google’s own schedule rather than on one I set.
International transfer.Firebase is Google’s, and Google processes this data on servers that include ones in the United States. That transfer runs on Google’s data processing terms, its Standard Contractual Clauses and its certification under the EU–US Data Privacy Framework, all of which are Google’s to publish and mine to rely on. No data reaches a machine of mine, anywhere, because there is no machine of mine.
When this page changes
If Dev Idle ever starts collecting something further — an advertising network, a leaderboard, an account, any third company at all — I will update this page beforethat version ships, change the effective date at the bottom, revise the App Store privacy label in the same submission, and note it in the What’s New rather than leaving it to be discovered. This rewrite is that promise being kept once already, and it is the only evidence for it that is worth anything.
Questions
If anything here is unclear, or does not match what you observe in the app, write david@petrina.me. I would rather rewrite a paragraph than leave a question hanging.