Privacy Policy — Worldpiece: Jigsaw Puzzles

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.

Short version

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.

What is stored on your device

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.

Your photos

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.

Children

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

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.

Advertising

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.

Notifications

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.

Analytics

There are none. The app does not measure sessions, crashes, retention, or anything else, because it never contacts a server.

Data sharing

None. There is nobody to share data with: no third-party services are embedded in the app.

Your rights

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.

Contact

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.

Where to verify these claims in the source

Reviewers and curious players can check every statement above:

ClaimWhere to look
No network requests of our ownno fetch, XMLHttpRequest, WebSocket, or sendBeacon anywhere in src/
Game Center is the only thing that leaves the devicesrc/gamecenter.js and ios/App/App/GameCenterPlugin.swift — three calls: sign in, submit a number, show Apple's window
Game Center is optional and silentsignIn never presents a sign-in sheet on launch; submitScore does nothing unless the player signed in
We receive nothing backthe plugin returns only available and sent flags — no names, no ranks, no other players
No analytics or trackersno such dependency in package.json; no SDK in src/
Storage is local onlysrc/storage.js — Web Storage plus @capacitor/preferences
Photos are never uploadedsrc/screens/custom.jsFileReader only, no upload path
No camera plugin, no library accessno 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 choiceNSCameraUsageDescription in ios/App/App/Info.plist; iOS asks before the camera opens, and only if you tap "Take Photo"
No advertising at allno ad SDK in package.json; no ad module in src/; a test forbids one appearing
Purchases go through the storesrc/billing.js — refuses without a real store plugin
Reminders are local, never pushios/App/App/RemindersPlugin.swift uses UNUserNotificationCenter; no registerForRemoteNotifications, no aps-environment in App.entitlements
Reminders are off by defaultsettings.reminders: false in src/storage.js; the system prompt is shown only after you switch the row on
The review prompt is Apple's ownsrc/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.