Legal
Cookies & Storage
Android app: From version 0.1.4, optional Google Analytics and advertising tracking are disabled. The app does not show a cookie-choice banner or offer optional tracking settings. The optional consent instructions below apply to the website. Necessary login, gameplay, security and preference storage remains available; clearing app data can still log you out and reset preferences.
iPhone app: Like the Android app, the iPhone app has no optional analytics, advertising or crash-reporting storage and shows no cookie-choice banner. It keeps your sign-in in the iPhone's Keychain for this device only, and uses the same functional app storage described below for chat drafts, notifications and preferences.
Last updated: 6 October 2026
This page explains the cookies and local storage used by the rookx website and the Android and iPhone apps, and the website's optional Google Tag Manager consent choices.
1. Consent choices
rookx uses necessary cookies and local storage to run accounts, matchmaking, gameplay, preferences, security, and support. On the website, Google analytics and advertising tools stay off before you accept an optional category. Analytics enables Google Analytics visitor measurement; Marketing enables advertising features where configured. Rejecting Analytics also disables Google Analytics measurement without cookies, even if Marketing is accepted.
On the website, you can accept all optional categories, reject them, or choose Analytics and Marketing separately. Necessary storage remains available whichever choice you make. You can change your choice later from the Cookie settings link in the footer. The Android app has no optional analytics or advertising choices; its notification and optional crash-report controls are separate.
2. Cookies and local storage we use
| Storage | Purpose | Type | How long it lasts |
|---|---|---|---|
plumin_join | Legacy short-lived game join token retained only for older sessions during migration. | Strictly necessary technical cookie | Usually about 60 seconds, then cleared or expired. |
plumin_auth_token session cookie and auth UI state | Keeps you logged in, connects the website to the backend, and supports guest/player identity. The login token is stored in a secure, HttpOnly cookie; localStorage keeps only non-secret UI state. | Strictly necessary auth cookie plus necessary UI localStorage | Until logout, expiry, account/session change, or browser storage clear |
| Theme, game mode, pool, rating, profile, sidebar, chat, and UI preferences | Remembers your choices and keeps the page from flashing/loading empty UI every navigation. | Necessary/functional localStorage | Until changed or browser storage clear |
App chat drafts, Android and iPhone (rookx-android-chat-drafts) | Preserves unfinished message text, reply details and selected attachments on your device, including when a match opens. Saving a local draft does not itself upload it; files already uploaded through a media feature are separate server records. | Functional on-device IndexedDB storage, separated by account | Valid for 24 hours after the last save. Expired drafts are removed when the app next checks them, saves drafts or changes account; cleanup does not run while the app is closed. Drafts are also cleared when sent or discarded, on logout/account changes, or when you clear app storage. |
| App notification registration | Stores the notification token, RookX installation identifier and account association needed to register this installation for optional notifications. | Functional app localStorage; Firebase also maintains its own native storage | The RookX registration is updated during notification use and cleared locally on logout/account changes or when app storage is cleared. This is not deletion of all Google-held data; see notification retention. |
| iPhone sign-in (Keychain) | Keeps you signed in to the iPhone app between launches. The sign-in is held by the app's native code and is never readable by the app's web pages. | Essential on-device iOS Keychain storage, this device only | Removed when you log out or delete your account, and on the first launch after the app is reinstalled. |
| App notification preferences | Remembers each account's message/challenge notification choices and whether the notification prompt was answered. | Functional app localStorage | May remain after logout, until changed or app storage is cleared. The phone's notification permission (and Android's notification channels) are managed separately in system settings. |
Android crash reports and reporting choice (rookx_diagnostics) | Remembers your installation-wide choice and stores technical crash reports locally. Sharing with Google is off by default. Crash records may be saved on the device even while sharing is off. | Android preferences and Firebase native storage | The choice remains until changed or app data is cleared. Completed unsent reports are deleted on app opening when sharing is off and when the choice changes; further reports may be saved during the current session. Google-held reports have a separate retention period. |
Android update reminders (rookx_app_updates) | Remembers the offered app version, last update prompt and a deferred restart so reminders are not repeated on every page. | Functional on-device Android preferences | Reminder suppression lasts 24 hours. The stored version and timestamps remain until replaced or app data is cleared; they are not linked to your RookX account. |
| App notification navigation state | Remembers a tapped notification until the correct chat or challenge can open, and recent notification identifiers to avoid opening the same alert twice. It contains identifiers, not message text or attachments. | Functional app localStorage | Pending navigation is cleared when handled or during logout/account changes, and expires after 24 hours when next checked for a signed-in account. Up to 20 recently opened identifiers remain until replaced by newer ones or app storage is cleared. |
| Browser asset cache | Stores website scripts, styles, images, and native game assets so the site can load faster on repeat visits. | Necessary technical cache | Until the asset version changes, browser eviction, or manual clear |
| Daily puzzle state and gameplay UI state | Tracks local puzzle progress, mistakes, streak display, board preferences, and similar game UI details. | Necessary/functional localStorage | Until puzzle reset, browser storage clear, or account sync replaces it |
rookx_consent_preferences_v1 | Remembers your cookie and storage choices so the banner is not shown on every page load. A choice stored under the older key rookx_cookie_consent_v1 is reused only if its consent version is still current. Material changes to these choices require a fresh decision; ordinary website updates do not. | Necessary localStorage | Until browser storage clear or the consent version changes |
Google Analytics cookies _ga and _ga_VTXJ78B78F, if Analytics is accepted | Distinguishes visitors and maintains session state to measure website usage and performance. | Optional first-party analytics cookies | Google's default expiration is 2 years, renewed when you return while Analytics is enabled. Browsers may impose shorter limits, and cookies may be removed earlier by clearing storage or withdrawing consent. |
| Google advertising/marketing storage | The Marketing choice controls advertising features if configured. As of this policy's update date, our published Tag Manager container has no separate advertising tags and our Analytics property has no Google Ads account linked. | Optional marketing category; no advertising cookies configured through these services | Not applicable to the current configuration. We will update this notice with the relevant cookies and lifetimes before enabling new advertising storage. |
Cookie expiration is separate from how long Google keeps data already collected. Our Google Analytics settings retain event-level data for 2 months and user-level data for 14 months, with the user-level period reset by new activity. Standard aggregated reports can remain longer. See Analytics data retention, Google's cookie documentation and cookie renewal settings.
3. Google Tag Manager and consent mode
With Analytics accepted, we measure page visits and navigation, engagement, scrolling, links to other websites, supported embedded-video interactions and file-download clicks. Automatic form-interaction and site-search measurement are off. Google email redaction and selected URL-parameter redaction help remove sensitive values before Analytics collection, but are not a guarantee that all personal information is removed. These settings do not delete previously collected data.
Google Tag Manager is loaded only after you accept Analytics or Marketing. Before acceptance, or after rejecting both on a new page, we do not load optional Google scripts or send their measurement requests. Google Analytics is disabled whenever Analytics is rejected. Advertising storage, advertising use of data, and personalization remain denied unless Marketing is accepted. Accepting a category permits its configured features; it does not mean that rookx is running an advertising campaign.
If you withdraw consent, we update Google's controls, disable Google Analytics measurement when Analytics is rejected, and clear known first-party cookies for the rejected categories. Already-sent data cannot be recalled by changing this setting. The choice is also applied to other open rookx tabs. With JavaScript disabled, optional Google tools stay off.
4. Third-party storage
If you grant optional analytics or marketing consent, Google services loaded through Google Tag Manager may use their own cookies or browser storage according to their settings and policies. If you open a PayPal donation flow, PayPal may use its own cookies or browser storage. If you connect or use Lichess features, Lichess may use its own cookies or browser storage. These are controlled by those third parties, not by rookx.
5. How to clear or change storage
Website: Change optional analytics and advertising consent from Cookie settings in the footer. To remove locally stored website data, clear site data for rookx.io in your browser's privacy settings.
Android app: Manage message and challenge notifications in RookX settings or Android's notification settings. Manage optional crash reporting in Settings → Security → Crash reports. This is separate from analytics and advertising, which remain disabled. To remove locally saved app data, use Android Settings → Apps → RookX → Storage → Clear data (wording varies by device). Clearing only the cache does not clear all saved app data.
iPhone app: Manage message and challenge notifications in RookX settings or in iOS Settings → RookX → Notifications. Logging out removes the saved sign-in. Deleting the app removes its locally saved data, and a reinstalled app always starts signed out.
Website and app storage are separate: clearing one does not clear the other. Clearing local data may log you out, remove unsent drafts and selected attachments, reset preferences, interrupt matchmaking, and require assets to download again. Logging out does not clear every saved preference. Clearing local storage does not delete your RookX account, sent messages, or files already uploaded to the service.