Last updated: 25 August 2026
This document describes what the Worldpiece app does with data. It is written from the source code, not from intent: every claim below can be checked in the repository, and the sections at the end say exactly where.
Worldpiece does not collect, receive, or share any data about you.
The app has no servers of its own, no accounts, no analytics, and no advertising SDK. Nothing you do is sent to us, because there is nowhere for it to be sent: we operate no service that could receive it.
There is exactly one exception to "nothing leaves the device", and it is yours to switch on or off: Apple Game Center. If — and only if — you choose to sign in, the game asks Apple to record your score in the leaderboard under your own Apple ID. That request goes to Apple, not to us. We never see your name, your Apple ID, your rank, or anyone else's score: the leaderboard is drawn by Apple in Apple's own window.
If you never sign in to Game Center, the app makes no network requests at all.
The game saves your progress locally so you can continue where you stopped:
That is the complete list — it mirrors DEFAULT_SAVE in src/storage.js field for field, and you can check it there.
This data is written to the device's own storage (Web Storage inside the app and, on mobile, the system preferences store). It never leaves the device. It is removed when you delete the app, and "Reset progress" in Settings clears it from inside the game.
Worldpiece can turn your own photo into a puzzle. You can pick an existing photo or take a new one — iOS offers both inside its own picker, and either way the picture goes straight into the puzzle and no further.
The app never asks for access to your photo library: the system picker runs outside the app and hands over only the one file you chose. It does ask for camera permission, but only at the moment you choose "Take Photo" yourself.
When you pick a photo:
The app never browses your photo library: it receives only the single file you hand it through the system picker, which runs outside the app. Camera permission is requested once, and only if you yourself choose "Take Photo" in that picker — the shot then goes straight into the puzzle.
Worldpiece contains no chat, no user-to-user contact, no user-generated content shared with anyone, no links out of the app, and no advertising. Nothing in the app can put a child in contact with a stranger.
Purchases inside the app are processed entirely by Apple's App Store or Google Play. Worldpiece never sees, receives, or stores your payment details — the app is told only whether a purchase succeeded. Refunds, receipts, and payment data are handled by the store under its own privacy policy.
Worldpiece contains no advertising. Not disabled by a setting — there is no advertising code in the app at all: no ad SDK, no ad network, no rewarded video, no interstitials between levels.
This is a property of the game, not a paid privilege: nobody sees ads, and nobody has to pay to avoid them.
Reminders about the daily puzzle are off until you turn them on in Settings, and they are local notifications: the phone schedules them and the phone shows them. Nothing is sent anywhere, and nothing about you leaves the device — the reminder is created on your phone from data that was already on your phone.
The app uses no push notifications. Push would require a server that knows who you are and when to write to you; we run no such server and hold no such list. There is no APNs key in the project and no Push Notifications capability in the build.
Reminders never advertise: they say that a new daily puzzle is available, or that a streak you already started is about to end. Turning them off in Settings removes every scheduled reminder. Sound, banner style, badges and Scheduled Summary belong to iOS Settings, not to the app.
There are none. The app does not measure sessions, crashes, retention, or anything else, because it never contacts a server.
None. There is nobody to share data with: no third-party services are embedded in the app.
Because no data ever reaches us, there is nothing for us to disclose, export, correct, or delete on your behalf. You are in full control:
Should this ever change, this policy will be updated first.
Questions about this policy: support@worldpiece.app
We answer every letter. This address forwards to a real person — it is not a robot and not a ticket queue.
Reviewers and curious players can check every statement above:
| Claim | Where to look |
|---|---|
| No network requests of our own | no fetch, XMLHttpRequest, WebSocket, or sendBeacon anywhere in src/ |
| Game Center is the only thing that leaves the device | src/gamecenter.js and ios/App/App/GameCenterPlugin.swift — three calls: sign in, submit a number, show Apple's window |
| Game Center is optional and silent | signIn never presents a sign-in sheet on launch; submitScore does nothing unless the player signed in |
| We receive nothing back | the plugin returns only available and sent flags — no names, no ranks, no other players |
| No analytics or trackers | no such dependency in package.json; no SDK in src/ |
| Storage is local only | src/storage.js — Web Storage plus @capacitor/preferences |
| Photos are never uploaded | src/screens/custom.js — FileReader only, no upload path |
| No camera plugin, no library access | no camera plugin in package.json; src/screens/custom.js uses a plain <input type="file">, so iOS runs its own picker outside the app |
| Camera only on your own choice | NSCameraUsageDescription in ios/App/App/Info.plist; iOS asks before the camera opens, and only if you tap "Take Photo" |
| No advertising at all | no ad SDK in package.json; no ad module in src/; a test forbids one appearing |
| Purchases go through the store | src/billing.js — refuses without a real store plugin |
| Reminders are local, never push | ios/App/App/RemindersPlugin.swift uses UNUserNotificationCenter; no registerForRemoteNotifications, no aps-environment in App.entitlements |
| Reminders are off by default | settings.reminders: false in src/storage.js; the system prompt is shown only after you switch the row on |
| The review prompt is Apple's own | src/rating.js and ios/App/App/RatingPlugin.swift — a single AppStore.requestReview(in:) call and nothing else |
The full plugin list is: App, Haptics, Preferences, Splash Screen, Status Bar, and three plugins of our own — Game Center, Reminders, and Rating. Only Game Center talks to the network, only after you sign in, and only to Apple. Reminders runs entirely on the phone; Rating asks the system to show Apple's own review sheet and learns nothing about what you answer.