Jetpack Compose, with the Meadow tokens re-valued as the Playfield theme object rather than Material's colour scheme — so the press-down shadows, the cream paper and the green primary are the same values as the web. Android is the only client that ships mounted ad placements — the web has the same advertising runtime, including a rewarded-hint call, but its in-feed components are unmounted and no AdSense client is configured in this repo.
Quizzja3 days3 hints
Ready to play?
Saturday, August 22, 2026 · English
TODAY'S CROSSWORD
Monday MiniEasy5×5English10 clues
28% filled4:32 so far
3-day streakSolve today's to make it 4
17M
18T
19W
20T
21F
22S
23S
ADSponsoredA non-personalized AdMob native card. Hidden entirely for Pro and Remove-ads accounts.AdChoices
Quick minis
Android — Todayui/TodayScreen.kt · AdPlacements.ktIdentical structure to the web and Apple Today. The one addition is the sponsored native card: it is requested only after Google UMP permits requests, always as non-personalized inventory, and it disappears for any account holding Pro or Remove ads.
Monday MiniEasy · 5×5 · English
4:32
1H
2E
3A
4R
5T
6E
7A
8
9
7 Across · crossing 1 DownOak's seed
QWERTYUIOP
ASDFGHJKL
ZXCVBNM⌫
Android — Solveui/SolveScreen.kt + PlayfieldKeyboard.ktThe keyboard is Quizzja's own, per puzzle language, rather than the system IME — the same rule as iOS. Hardware-back leaves the board, and unsynced fills are written to the device first so a kill mid-solve loses nothing.
Android — Puzzlesui/PuzzlesScreen.kt + PuzzlesPresentation.ktArchive, catalogue and saved tabs. Filter and paging state live in a plain Kotlin presentation class, so the same “3 crosswords on Saturday 22 August” result is asserted in a unit test without composing anything.
Packs
Explore packs
Android — Packsui/PacksScreen.kt · PackPagination.ktThe whole pack catalogue for the chosen crosswords language, loaded in one pass and cached per language. Picking a pack hands its id to the Puzzles destination as a filter, exactly as on the web.
Ranks
AYou're #912,345 pts · top 9% of 101 players
1MMarguerite38,910 pts
2Kkasia_w34,205 pts
3TTomasz29,640 pts
4SSofia R.27,118 pts
5Ddmitri8824,902 pts
6IIngrid21,447 pts
7NNaledi18,203 pts
8Yyuki.t15,760 pts
9AYour account12,345 pts
Android — Ranksui/RanksScreen.kt + RanksPresentation.ktPresentation logic lives in a plain Kotlin class so the same standings — and the same "top 9% of 101 players" wording — can be asserted in a unit test without composing the screen. Same three periods and the same opt-in rule as every other client.
YYour accountSynced across your devices
12Solved
7Dailies
3Streak
9Best streak
4:32Avg time
1,234Points
Settings
Android — Youui/YouScreen.kt + SettingsCard.ktTwo settings the browser cannot offer — sound and haptics — plus an Ad privacy choices row that reopens the Google UMP form. Firebase Analytics stays disabled until Usage measurement is turned on separately, independently of advertising consent.
‹Quizzja Pro3 hints
Premium
PremiumUnlimited hints · No ads · Every pack unlockedPOPULAR
Get more hints
10 hintsHint pack€1.99
50 hintsHint pack€4.99
Watch an adEarn 1 hint · rewardedWatch
Your purchases
Remove adsRemoves ads everywhere in QuizzjaOwned
PacksNot active€2.99
Android — Store (Google Play Billing)ui/StoreCatalogScreen.kt · PlayBillingController.ktPlay Billing's own catalogue, including the introductory free trial Google returns for the subscription. The rewarded row is the only one a player can reach today: watching an ad grants a hint. Every purchase token is verified server-side, with Play Integrity attached, before the entitlement changes.
Android — Splashui/SplashScreen.kt · the platform splash screen APIHanded over from Android 12's own splash window rather than drawn on top of it, so there is no double flash on launch. The same four-cell reveal, authored in Compose against the same specification as the web and Apple ones.
Monday MiniEasy · 5×5 · English
✓ 4:32
1H
2E
3A
4R
5T
6E
I
G
H
T
7A
C
O
R
N
8V
I
N
E
S
9Y
I
E
L
D
Solved!
Monday Mini · Aug 22
4:320 hints
17M
18T
19W
20T
21F
22S
23S
4-day streak — keep it going!
Android — Solvedui/SolveScreen.kt SolvedCelebrationDialogThe celebration is an overlay on the board rather than a route, so the finished grid stays behind it. Sharing goes through the Android share sheet with the result image attached; a completion is also what schedules the next daily reminder.
Language & privacy
Account
QRegisteredSynced across your devices
Privacy and data
Legal
Android — Language & privacyui/AccountPrivacyScreen.kt + AccountPrivacyPresentation.ktAndroid's consent surface, kept apart from Settings because the choices are legally distinct: play history and offline puzzles, Firebase usage measurement, and the Google UMP advertising form are three separate answers. Measurement stays disabled — including automatic screen reporting and the Advertising ID — until this toggle is switched on, and withdrawing resets Firebase's local state immediately.
Language
Crosswords
Search…
Your languages
All languages
Android — Language pickerui/OptionPicker.kt · UiLocales.ktOne searchable picker component serving both axes, with the interface list generated from the same locale registry the other clients ship. Each language is named in its own endonym; a search matches either the endonym or the English name.
GGuestPlaying on this device only
Create Account
Keeps your progress and hints — your guest account becomes a permanent one.
Android — Account accessui/AccountAccessDialog.kt · SocialSignIn.ktOne dialog with three modes — create account, sign in, reset password — over the same form. Registration attaches a Play Integrity token so a new account can be attested as coming from a genuine install, and Google sign-in uses Credential Manager rather than a web view.
Monday MiniEasy · 5×5 · English
4:32
1H
2E
3A
4R
5T
6E
7A
8
9
Play together
Share crossword
Invite someone to play Monday Mini, or scan the QR code on another device.
Puzzle link
quizzja.com/p/5PY11MrJym8OwX3gweDqKJ2Vb
Android — Shareui/CrosswordShareDialog.kt · CrosswordSharing.ktQuizzja's own dialog first — link, QR and the networks — with the system share sheet behind “More”. A ShareCompletedReceiver hears which target the player actually chose, which is the only reason the app knows a share finished rather than just started.