Brickworks
The Brickworks app icon

BrickworksBlock Puzzle

Brick Drop. Brick Pop. Brick Nonstop.

A block puzzle for iPhone, iPad and Android. Drop pieces on the grid, fill a row or a column, and it clears. No timer standing over you and no lives to run out.

Download on the App Store Get it on Google Play Free to play.
A Classic game in the Aurora theme: the board part filled, three pieces waiting in the tray
The Brickworks home screen in the Aurora theme: the logo blocks, Today's Game, Frenzy and the modes

How it plays

Simple to start. Hard to put down.

  1. Three shapes at a timeDrag each one anywhere it fits on the grid.
  2. Fill a line, it clearsA full row or column empties and gives you the space back. Clear again soon after and a combo builds.
  3. Plan aheadNew shapes come only when all three are down. The game ends when none of them fits.
ClassicEight by eight. Just you and the grid.
ChallengeIce, stone and live bombs seed the board.
ExpertTen by ten, and the bigger pieces to match.
OdysseyA new climb of levels every week.
FrenzyNinety seconds. Clears buy you more.
Today's GameThe same puzzle for everyone, every day.
New in 1.1

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.
A Mosaic puzzle: a telescope picture with eight of nine pieces earned
The Daily Mosaic: today's page with its goals

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.
Today's Game: the day's rules and leaderboard

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.
An Odyssey level with gems on the board

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.

A Frenzy round with the clock running

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.

The theme picker

Free to play

Fair, and it says so.

Adverts between gamesNever during one. No banners on the board.
Videos are a choiceWatch one for an extra tool or to keep a game going, or don't.
One purchaseRemove adverts takes away the adverts between games, for good.
No account neededSign in with Apple or Google to keep your progress across devices and join the leaderboards. Or don't: it all plays offline.

Android

Now on Google Play.

Brickworks for Android phones and tablets is on Google Play now. Free to play, the same game as on iPhone.

Get it on Google Play

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.

Join on TestFlight

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

  1. Fill in the tester form, choose Android, and give the Google Account your Play Store uses.
  2. We add you and email a private Play Store link from developer@miljarpro.com.
  3. 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:

developer@miljarpro.com

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.

Privacy policy  ·  Delete your account