How it plays
Simple to start. Hard to put down.
- Three shapes at a timeDrag each one anywhere it fits on the grid.
- Fill a line, it clearsA full row or column empties and gives you the space back. Clear again soon after and a combo builds.
- Plan aheadNew shapes come only when all three are down. The game ends when none of them fits.
Every game builds a picture.
Mosaics turn your games into pictures. Reach goals in Classic, Challenge, Expert and Odyssey to earn puzzle pieces. Earn every piece and the hidden picture is revealed and goes on your trophy shelf.
- Puzzles grow as you go, from 9 pieces to 49.
- Every puzzle has a gold goal to chase, and a perfect mark for finishing it without a Save.
- The Daily Mosaic is a new puzzle every day, with goals across every mode.
- Finish the daily puzzle and pick one of three presents: extra tools, saves, energy and more.


Today's Game
The same puzzle for everyone.
Every player gets the same seventy-five pieces, in the same order, on the same day. Your result sits on a board next to people who played the very same puzzle.
- Two tries a day. The better one counts.
- A new puzzle arrives at your own midnight, wherever you are.
- Every puzzle can be finished: a perfect run is found before it ships.
- No hammer, no undo, no refresh, no rotating. Everybody solves it the same way.

Odyssey
A new climb every week.
Odyssey starts again every week with one hundred and fifty new levels. Each one has its own opening board and its own goal: collect the gems, or reach the score.
- The weekly board ranks how far up you climbed.
- Within the week, a level you lost is the same level when you come back to it.

Frenzy
Ninety seconds. No mercy.
A clock, hazards, and a tray that runs out if you sit on it. Every clear buys you more time. The only mode in Brickworks that is in a hurry.

Themes
Forty-five ways to look.
Glass, stone, neon, chalk, soap bubble, grass. Each theme has its own colours, backdrop, tile finish and music, and holiday themes turn up on the day and leave again.

Free to play
Fair, and it says so.
For testers
Help test what's next.
Testers play new versions before they reach the store and say what they think. What confused you is the most useful thing you can tell us.
iPhone and iPad
Install Apple's free TestFlight app, then open the link on the same device and tap Accept, then Install.
Please also fill in the tester form: joining by link tells us nothing about who you are.
Sending feedback
Take a screenshot while the game is open and TestFlight offers to send it with a note. It tells us which build you were on. Test builds stop working after 90 days (Apple's rule); TestFlight offers the new one before then.
Android
- Fill in the tester form, choose Android, and give the Google Account your Play Store uses.
- We add you and email a private Play Store link from developer@miljarpro.com.
- Open it on that device, accept the invitation, then Install.
Three things that look broken and are not
The Play Store may show the app as com.miljar.brickworks for a while. "Item not found" right after a new version usually clears within a couple of hours. If your phone has two Google Accounts, the Play Store must be on the one you gave us.
Sending feedback
Shake the phone on any screen. A panel opens with a picture of the screen already attached; draw on it if that helps, choose Bug, Idea or Praise, and send. It is also in the menu under Send feedback.
While you are testing, Remove adverts costs nothing on either phone (Apple's test mode on TestFlight; a test card on Android). On Android, if the payment line shows a real card of yours, stop and tell us before you confirm.
How it is made
One person, two apps.
Brickworks: Block Puzzle is made by one person, Jared Miller, as Miljar Productions. There is no studio.
Every number in this section is counted from the code each time the site is published. Last counted 7 November 2026.
It is drawn, not painted
Most games ship pictures. A tile is a picture file, a background is a picture file, and the app loads them.
Brickworks does not work that way. The tiles, the boards and the backgrounds are drawn by the app while you watch, out of a short list of colour values. That is why 45 themes fit: a version that shipped pictures would need a set of them for every theme, in light and dark, at several screen sizes. This needs one short list of colours each.
Two things are the exception. The music: there are 60 recordings in the iPhone app, most of them written for one particular theme. And the 579 pictures you uncover in Mosaics.
Two apps that have to agree
Brickworks is two apps, not one app wrapped twice. The iPhone and iPad version is written in Swift. The Android version is written in Kotlin. They share no code at all, and they are built alongside each other rather than one following the other.
They are allowed to look different, and they should. Each phone has its own habits for how a menu opens, how a button feels and what a back gesture does. What they are not allowed to disagree about is the maths: scoring, combos, difficulty, Odyssey's levels, Today's puzzles, and the way your saved game is stored. Sign in on an Android phone and you should be able to carry on a game you started on your iPhone. One difference in that arithmetic loses somebody's game, quietly, on some date nobody thought to test.
The checks
There are 251 automatic checks on the iPhone side and another 165 on the Android one. They run against the actual code and read the real numbers out of it. A check that keeps its own copy of the answer is not checking anything; it is agreeing with itself.
- A check that reads nothing passes. So every one has to prove it found something before it is allowed to conclude anything.
- Every new check is tested by breaking the thing it guards on purpose and making sure it goes red, then putting the file back exactly as it was.
- A check that matches text the fix also contains is comparing the fix with itself. That one has cost real time twice.
Everything gets written down
Every change carries a number and a short record: what it was for, what got tried, what got rejected. The reasoning also goes into the code as a comment, next to the thing it explains. That includes the failures: when a measurement kills an idea, it is withdrawn in writing, with the numbers, instead of quietly dropped.
Shape of the thing
Two codebases, no shared source. Neither uses a game engine or a third-party UI framework. The only outside code is Google's: Firebase (sign-in, saves, measurements, crash reports), Google Sign-In, and Google's advert software, plus Play Billing on Android. On iPhone, Firebase is optional at compile time: without it the app builds and plays offline.
- Runs on
- iPhone and iPad with iOS 17 or later. Android phones and tablets with Android 8 or later.
- Where it is
- On the App Store for iPhone and iPad, and on Google Play for Android.
iPhone and iPad
Swift and SwiftUI. No SpriteKit.
- Swift files
- 210 files, 107,177 lines
Engine/- 95 files, 42,393 lines. Foundation only, no SwiftUI
Views/- 82 files, 46,032 lines
Support/- 31 files, 16,271 lines
Cloud/- 1 file, 1,054 lines
- Tests
- XCTest, 88 files, 24,469 lines
- Tooling
- 354 Python scripts, 251 of them source checkers
- Pictures
- 579 Mosaic pictures, 4 score emblems, the icon and the launch mark
- Audio
- 60 recordings
Engine/ compiles without SwiftUI on purpose, so the rules can be tested from the command line without a simulator. Theme colours are stored as raw hex there and turned into colours at the edge of the views.
Android
Kotlin and Jetpack Compose. No Unity, no Godot.
- Kotlin files
- 282 files, 88,412 lines
engine/- 127 files, 32,804 lines. The rules, with no Android in them
ui/- 80 files, 32,400 lines
- Tests
- 250 Kotlin test files
- Tooling
- 250 Python scripts, 165 of them source checkers
- Audio
- 49 recordings
Why the hands are not random
Every hand is chosen for the board you actually built, so a good move exists. You are not told where it is; finding it is still your job. The game also keeps the shapes varied, so each game gives you a fair mix.
Difficulty, as a number of blocks
How full the board is when you arrive depends on how you have been playing: emptier when you are new, a little fuller as you get better. The exact settings stay in the code.
Scoring and the combo
- Each square cleared
- 50 points
- Each square placed
- 25 points
- Clearing the whole board
- 500 points
- Highest combo
- ×10
- Combo grace
- 2 quiet placements, a few more on the ten by ten board
The combo multiplies everything a placement earns, not just the line bonus. The grace is wider on the ten by ten board because a line takes more placements to build there.
Frenzy
- The round
- 90 seconds, and the most the clock can hold
- Clearing the whole board
- 15 seconds added
- No move left
- 10 seconds taken away
- A piece runs out in the tray
- 2 seconds taken away
- Tray timer
- starts at 6 placements, tightens to 2
- Heat
- ×1.0 to ×3.0, ×0.4 per clear, holds 4 seconds after one
All of these are on Frenzy's own rules screen in the app.
Today's Game, and what is actually guaranteed
The promise is not a hidden answer key. In a block puzzle there is rarely one correct cell. What is guaranteed is that a perfect run exists before anybody plays: all 75 pieces fit, in some order of choices a person could find. Which is why nothing random may happen during a daily game: no stones, no bombs. Classic's rules.
The table holds 2,222 days, 1 September 2026 to 30 September 2032. Every day was replayed before it shipped by a replayer that shares no code with the search that found it, and also replayed with line clearing switched off, where none of them survive. A replayer that still passed without clears would not be simulating the game at all.
Themes
A theme is an eight-colour palette plus a finish. The finish is how each tile is shaded, and the tile drawing branches on it: gloss is a vertical gradient with a highlight strip, matte is flat and reads as paper, glass is a see-through face with a bright rim and an inner highlight, and so on.
So changing theme changes the character of the board rather than only its colour, which is the reason 45 of them are worth having instead of 45 recolours. Everything is drawn from those values: there are no tile pictures, sprite sheets or background images in the project.
Keeping two platforms honest
The obvious way to check that iPhone and Android agree is to compare what they produce. That is the wrong way, because two versions can agree with each other and both be wrong, and because it only catches what you thought to compare.
Instead there is a written specification of the shared engine numbers, made from the iPhone source, and each platform has a checker that compares its own code against it. That has a failure worth naming: if the specification goes stale, the other platform compares itself against a version that no longer exists and reports that everything matches. It has happened, so there is now a checker whose only job is to prove the specification is current.
Things I got wrong, kept in the code
The comments in this project are long on purpose, and a good share of them record approaches that failed. Three examples.
- An overlay cannot serve a surface that goes from near-white to black. Empty cells were drawn as a dark overlay, which reads as a soft well on a cream board and as nothing at all on a black one. Frenzy takes the board to black, so late in a round every empty square stopped existing, and with it every sign saying you can place here.
- The fix for that is forced by arithmetic. An empty cell on a pale board has to be darker than the board, and on a black board lighter. Ask for one smooth path between those and the algebra answers with zero opacity at both ends. So three inks now hand over at different brightnesses, staggered, and no two are ever weak at the same time.
- Thirty identical failures is the signature of a broken test, not broken data. A replay check passed the board size where the seed goes and reported every day as unplayable. The data was fine.
About
Jared Miller
I make things under the name Miljar Productions, from Southern California. Brickworks is the first one to go out into the world.
Why a block puzzle
Because I kept playing them and kept running into the same things.
Modes locked until you watch something. Boards that seem to turn on you right when you are doing well. Daily puzzles that are not actually the same puzzle for everybody.
So this is the version I wanted on my own phone. A daily puzzle that is genuinely shared and genuinely finishable. Forty-five themes, because choosing how it looks is half the fun. Nothing locked behind a payment.
And yes, this game has adverts in it. I would rather say that here than let you find out on your own. I am one person and they are what pays for this.
What I would not do is build the game around them. There is no banner sitting on the screen while you play. The full-screen ones come between games, never during one. The video ones are always an offer you can turn down. And nothing is locked behind any of them, so you never have to watch anything to keep going.
It has taken a long time and it is not finished. It is on the App Store for iPhone and iPad, and on Google Play for Android.
For my mom
I dedicate this game to my mom, who passed away in 2024.
She was always lifting me up when I was low, and she always encouraged me to continue on. She loved puzzle games, and she would have been pushing me to take this idea and make something out of it.
Thank you, Mom.
Get in touch
For anything about the game, testing, a bug, or a question:
I read all of it and I answer. If you are writing about a tester invitation, send it from the address attached to your Apple Account or Google Account so I can invite the right one.

