- Category
- Games
- Status
- In development
- Platforms
- iOS, Android
- Stack
- React Native, Expo, TypeScript, Reanimated, Gesture Handler, react-native-svg
A block puzzle on an 8×8 grid: three pieces at a time, fill a row or column and it clears, and the run ends when nothing fits. The rules are pure functions with no React anywhere in them, which is what makes a game this small worth testing properly.
Drop a piece, watch a line vanish, line up the next one. There is no timer, no lives and nothing asking you to come back tomorrow — the run simply ends when none of your three pieces fit anywhere.
The rules are not in the components
Grid, scoring, piece bag, placement legality and game-over detection are pure functions that import nothing from React. That separation is what lets 207 tests cover the interesting cases — the combo multiplier, a board that is full but not finished, the exact move where nothing fits — without rendering anything or simulating a touch.
What the tests could not catch
All 207 passed while the first drag on a real device crashed. The animated style was calling an ordinary JavaScript helper from a worklet, which Jest cannot see and a phone refuses to do. A second defect had the same shape: the board's position was read once on layout, so moving the window left every drop landing a cell out. Both needed a device, not a test run — which is the argument for the rest of the suite, not against it.
- A pure rules engine
- Placement, line clearing, scoring and game-over are functions over plain data, tested without a renderer.
- Combo scoring
- Clearing on consecutive moves builds a multiplier, so the reward is for setting up rather than for luck.
- Offline and accountless
- No sign-in, no network in the play path, and nothing that expires while you are not looking.
- Lifetime unlock
- A single non-consumable purchase removes every ad, permanently.
Captures of Gridlock Pop are pending. We would rather show you nothing than a drawing of a screen that was never photographed.