Mahjong Moonwindow

Privacy

Updated 16 August 2026. Covers Mahjong Moonwindow on iOS and Android.

Mahjong Moonwindow is made by The Next Beacon. There's no login, no account and no profile, so the game never learns who you are. That isn't a feature we're bragging about — it's just how the game is built.

Below is every field the game sends. Not categories, the actual fields. The list comes from the code that sends them, so you can check it against the game rather than take it on trust.

You're asked once whether to allow any of it, and the game plays exactly the same either way. Say no and nothing below leaves your device. If your device has "Do Not Track" set, that wins even if you said yes.

What it sends

The game reports anonymous gameplay events to a server we run. We use them to see which boards people give up on, whether the hint button is doing its job, and where a screen is confusing enough that people leave.

About the device, once per batch

FieldWhat it is
vendor_idEmpty, always. This game is built as a web app, and a browser has no publisher-scoped device id to give. We send the field empty rather than substitute something else, because substituting would quietly create a second way to identify you.
install_idA random id the game makes up the first time it runs. Ours, stored on your device, and gone if you delete the game. It isn't derived from you or your hardware, and it doesn't follow you to another device. You can read it yourself: Settings, under Backup.
platform, os_versionReported as "web" with an empty version, because that's what the game honestly is under the wrapper. We'd rather send a true empty than a guess.
model_classJust "phone", "tablet" or "desktop", worked out from the window width. A model name is close to a fingerprint and all we need is which of those three.
locale, tz_offsetYour language region, and how many minutes you are from UTC. More on these below.
app.version, app.buildWhich release you're on, so a bug report can be tied to the build it happened in.

About the game, per event

Every event is a game fact. There is no free text anywhere in this list: nothing you type is in it, and there is no field a sentence could fit into.

EventWhat it carries
app_openYour language and which theme you're using.
page_viewWhich screen opened — "/home", "/settings".
ui_tapWhich screen you were on and which control you tapped, as internal names like "hint" or "theme-jade". Never the words on the button, which change with your language.
run_start, run_endWhich mode, how it ended, how long it took.
stage_started, stage_resultWhich chapter and how far into it.
hint_used, undo_used, shuffle_usedHow many tiles were left when you used it, and for a shuffle, whether you asked or the board was stuck.
deadlock_rescuedThe board ran out of moves and the game reshuffled it for you.
chapter_complete, daily_played, quest_claimed, login_rung_claimed, currency_changedProgress: stars, streaks, lanterns.
theme_viewed, theme_applied, theme_purchase_intentWhich look you looked at, chose, or tapped to buy.
ad_shown, ad_suppressedWhere an ad appeared, or why one didn't.
settings_changedOnly your language, and only which one.
save_migrated, save_recovered, errorYour save needed upgrading or repairing. These are about the save file, not about the device.

Two things worth naming

Language and timezone are regional signals. They narrow you down to a region, and we'd rather say so than let you find it in the table and wonder why we didn't. They are not location under either store's definition, and the game never asks for or receives your location.

Our hosting sees your IP address, as every network in between does. We don't collect it, store it, or put it in any of the data above — which is a claim you can check against the field list. What we can't honestly claim is that no computer between you and us ever sees it, because that's how the internet works.

Your save, and the code that restores it

The game backs your progress up to a server we run, so a new phone can pick up where the old one left off. That backup holds your progress and your settings — boards cleared, stars, which themes you own. It does not hold a name, an email address or anything you typed.

It's reached with the backup code shown in Settings. Anyone holding that code can read the save it belongs to, which is why the game tells you to keep it somewhere safe. We can't look a save up any other way.

If you send feedback

There's a box in Settings for telling us something is wrong. That one is different: it's free text, and it goes to us as you wrote it, along with which version of the game you're on. Please don't put anything in it you'd mind us reading. It doesn't go through the anonymous statistics described above, and it isn't linked to them.

Buying things

Some themes and tile sets are paid. Apple or Google takes the payment and tells the game whether you own the item. We never see your card details or your billing address, and we don't receive a name or an email address from the transaction.

Children

The game isn't directed at children under 13, and we don't knowingly collect anything from them. There's nothing in it that asks a player who they are.

Keeping it, and deleting it

Events are kept for up to 24 months and then dropped. Deleting the game stops collection immediately.

To have the statistics from your installation deleted, open Settings, find the installation ID under Backup, and send it to info@thenextbeacon.com. That id is the only handle we have — there's no account to look you up by — so we can't find your records without it. We'll delete them within 30 days.

If you've lost the id because the game is already gone from your device, tell us anyway and we'll explain what else might narrow it down. We'd rather say that plainly than promise a lookup we can't do.

Nothing is sold

We don't sell any of this, we don't share it with advertisers, and there is no advertising identifier in the game. Ads, where they appear, are not personalised.

Asking us

Write to info@thenextbeacon.com. If a change here ever matters, this page will say so at the top and the game will ask again.