Lampion: Shadow Theater · Last updated: September 1, 2026
This policy explains what data the Lampion: Shadow Theater mobile game ("the app", "we") handles, why, and what control you have over it.
The app is developed and operated by Fluttech (MJK APPS SRL), a company established in Romania ("we", the data controller). For any privacy question, or to exercise any of the rights listed in section 8, write to contact@fluttech.com.
The following is kept in the app's local storage, and is not sent anywhere unless you submit a leaderboard result (section 4); aggregate play events are reported as described in section 6:
Uninstalling the app removes all of this. On Android you can also use "Clear app data". The whole game is built into the app — no game content is downloaded, and the puzzles run fully offline.
The app works fully without any account. If you choose to join the Tonight leaderboard, the app creates an anonymous guest account in Firebase Authentication: a random identifier with no personal data attached to it. It exists only so that your leaderboard entries belong to you and to no one else. If you never join the leaderboard, no account is created.
Signing in is optional and is offered only in Settings. If you sign in with Google or Apple, Firebase Authentication stores the account identifier and the e-mail address that the provider returns, and the app saves your progress to Cloud Firestore under that identifier: level bests, the daily streak and garland, the days you have solved, your spark balance, your leaderboard nickname, and your lantern code together with the invitation state described in section 4b. Nothing else is uploaded. You can delete the account and this cloud save from inside the app (Settings → Account → Delete account); the progress kept on the device is not affected.
The daily leaderboard is optional: it receives data only when you solve the day's puzzle and choose to take part. When it does, the following is stored under your guest identifier and is publicly readable inside the app:
Only your first solution of a given day is stored; results cannot be overwritten afterwards, because a day's ranking is the shared record of everyone who played it. If a nickname is offensive or impersonates someone, we may replace or remove it.
Inviting is optional. You can ask the app for a short lantern code and pass it on; when ten different people have redeemed it and played, banner ads stop being shown to you. Sharing is never a condition of playing, and nothing in the game is locked behind it.
When you use the feature, the following is stored:
What we do not do. The person who invited you never learns who redeemed their code — the app only ever shows them a number. We do not read your contacts and we never send anything on your behalf: the invitation is handed to your device's own share sheet, and where it goes from there is your choice. A redemption record cannot be edited or deleted afterwards, because it is what the reward is counted from.
If you open an invitation link in a browser, that page copies the code to your device's clipboard, so a freshly installed app can pick it up. The app reads the clipboard once, accepts only a value in that exact format, and asks you before redeeming anything.
The app shows banner ads, and offers optional rewarded video ads — you may choose to watch one to receive Sparks. Ads are served by Google AdMob.
We request non-personalised ads: they are selected from the context of the app rather than from a profile of your interests. AdMob still processes technical data needed to deliver and measure an ad and to prevent fraud — for example your device's advertising identifier, IP address, device type and operating system. Google's handling of this data is described in the Google Privacy & Terms.
The app contains no in-app purchases. Sparks are earned by playing and have no monetary value (see the Terms of Use). Banner ads stop for good once ten invitations have been redeemed (section 4b); optional rewarded videos remain available.
We use Google Analytics for Firebase to understand how the game is played — mainly where players get stuck or stop. Collection stays switched off until you have answered the consent request, where one is required.
The app reports the following gameplay events:
c12 for a campaign level, daily or
archive for a daily puzzle), its chapter and par, the number
of taps you made, how long the attempt lasted, how many hints, undos and
restarts it involved, whether you had solved that level before, and how
it ended — solved, lost, or left unfinished.We also attach three coarse attributes to the app instance, so that the numbers can be read by group: how many levels have been solved and how long your daily streak is — both as broad ranges, never as exact values — and whether the app is signed in to an account or playing as a guest.
The Firebase SDK additionally collects standard events such as first open, session start and app update, together with technical attributes such as device model, operating-system version, app version, and country-level location derived from the IP address.
What we do not record. No name, e-mail address, leaderboard nickname or account identifier is sent to Analytics, no precise location, and nothing you type. This data is tied to a randomly generated app-instance identifier, and is not used to build advertising profiles. Reinstalling the app generates a new identifier.
The app uses Firebase Crashlytics. If the app crashes or hits an unexpected error, a report is sent containing the stack trace, the device model, the operating-system version and the app version — no game content and nothing that identifies you. Crash reporting is active in released builds and is not tied to the advertising consent choice, because it exists to keep the app working rather than to profile you.
| What | How |
|---|---|
| Everything stored on the device | Uninstall the app, or use "Clear app data" (Android). |
| Your account and cloud save | In the app: Settings → Account → Delete account. This removes the sign-in record and the cloud save that belongs to it. You can keep playing afterwards; progress on the device stays. |
| Your leaderboard entries | A day's ranking is a shared record, so the rows themselves remain — but deleting your account replaces your nickname on them with a neutral label, so nothing identifying is left. If a row is missed (for example the app was offline), write to contact@fluttech.com and we will replace it. |
| Your invitation records | A lantern code and the redemptions filed under it stay, because the ad-free reward is counted from them — but they hold nothing beyond a random identifier, a date and a level count. Write to contact@fluttech.com and we will remove them. |
Retention. Leaderboard entries are kept indefinitely (a day's ranking is a shared record), with the nickname replaced by a placeholder on request. Analytics data is retained by Google for the period configured in our Firebase project, after which it remains available only in aggregated form.
If you are in the European Economic Area or the United Kingdom, the GDPR gives you the right to access your data, to have it corrected or erased, to restrict or object to its processing, and to receive it in a portable form. You may also complain to your national data-protection authority.
Our legal bases are: performing the service you asked for (your leaderboard entries), and our legitimate interest in maintaining, improving and funding a free game (analytics and non-personalised advertising).
Our database and authentication run on Google Cloud infrastructure in the European Union. Analytics and advertising are operated by Google and may involve transfers outside the EEA, carried out under the European Commission's Standard Contractual Clauses.
Our processors are Google Ireland Limited and Google LLC (Firebase Authentication, Cloud Firestore, Google Analytics for Firebase, AdMob). We do not sell your data, and we do not share it with anyone else.
The game's content is suitable for all ages, but the app is not directed to children under 13, and we do not knowingly collect data from them. Because it shows advertising and offers an optional public leaderboard, we ask parents to decide whether it is appropriate for their child. If you believe a child has provided us with personal data, contact us and we will delete it.
Data in transit is encrypted with HTTPS. Access to cloud data is restricted by server-side security rules: a player can write only their own leaderboard entry. Leaderboard entries are readable by everyone by design — that is what a leaderboard is.
If we change how the app handles data, we will update this page and the "Last updated" date above. Significant changes will be announced in the app.
Fluttech (MJK APPS SRL), Romania · contact@fluttech.com