Game review

Emoji Minesweeper

3.5 / 10

Developer
Mu-An Chiou (muan)
Publisher
Self-published, open source
Released
22 May 2015
Platforms
Web browser (desktop and mobile)
Genre
Puzzle, logic, Minesweeper clone
Monetisation
Free, open source, no ads and no in-game purchases
Players
Single-player only

The short version

Emoji Minesweeper is exactly what its name promises: the 1990 Windows classic, rebuilt in vanilla JavaScript with emoji standing in for numbers, flags and mines, and a settings panel to change the board size, mine count and emoji theme. Mu-An Chiou first published it in 2015, and it has picked up a respectable 909 GitHub stars and 163 forks in the decade since — real numbers for a personal project, even if plenty of that traffic is other developers forking it as a coding exercise rather than players returning to it. The code itself is better than it needed to be: full ARIA roles, an aria-live feedback region with a clever toggle trick to force repeated screen-reader announcements, and a legitimate first-click-safety mechanic. None of that is enough to recommend it today. Visiting the official page on a phone right now loads a board of identical broken-image icons, because the default emoji set fetches from a third-party CDN, twemoji.maxcdn.com, that has been dead or squatted for years — it now serves a 14-byte text file dressed up with an image/png header, and two separate GitHub issues (2021 and 2024) reported exactly this with no fix. Switching to "Native emoji" in the settings menu works around it, but almost nobody will find that toggle. And the hold-to-flag mechanic this review was specifically asked to verify only fires on iOS — the code gates it behind a check for `navigator.platform.match(/^iP/)`. On every other touch platform, holding a cell down does exactly what tapping it does: reveals it.

Biggest strengths

  • Faithful, bug-free core Minesweeper logic, including a genuine first-click-safety mechanic (the game silently relocates a bomb if it would end your very first move)
  • Unusually strong accessibility work for a hobby project: full ARIA grid roles and labels, an aria-live feedback region, and a specific fix (a toggled trailing period) so screen readers re-announce identical consecutive messages
  • A real, decade-long community footprint — 909 GitHub stars and 163 forks since 2015 — and a charming "Native emoji" rendering mode that looks genuinely good once selected

Biggest weaknesses

  • "The default view is broken right now: this review confirmed on the live, official GitHub Pages site that the pre-selected \"Twemoji\" image set fetches from twemoji.maxcdn.com, a domain that now returns a fake 14-byte \"Hello World!!\" payload disguised with an image/png header instead of real artwork — every cell renders as an identical broken-image icon, masked and revealed alike. Two GitHub issues (opened 2021 and November 2024) report this exact problem; neither has a response"
  • "Hold-to-flag, the mechanic this review specifically tested, only works on iOS: the game's own code checks `navigator.platform.match(/^iP/)` before enabling it. A genuine, unmoved 700ms touch hold dispatched through Chromium's real input pipeline (the same engine Android Chrome uses) on a non-iOS platform simply revealed the cell, identically to a plain tap — there is no flagging path for Android at all"
  • Cells render at roughly 25 CSS pixels square on a default 10x10 board, well under the ~44px touch target most mobile guidelines recommend, making precise taps genuinely fiddly on a phone

Who it's for: Retro-minesweeper completionists and iPhone users willing to dig into a settings menu before their first game; a poor fit for anyone who expects a link to just work.

Our recommendation: A structurally sound, quietly well-built Minesweeper clone let down badly by a broken default asset pipeline and touch controls that only fully work on one platform — not something to send a friend without a warning label.

3.5 / 10

Introduction

Emoji Minesweeper does precisely what it says: it is Minesweeper, the 1990 Windows classic, with emoji standing in for the mine, the flag and the numbered clues. Mu-An Chiou built it in 2015, and the GitHub repository's own root doubles as the finished build — no compilation step, just index.html, a hand-written game.js, and Twitter's twemoji.js for image rendering. Ten years on it has picked up 909 stars and 163 forks, a genuinely respectable number for a personal project this small, even allowing for the reality that a good chunk of those forks are other developers using it as a learning exercise rather than players who kept coming back. The question this review exists to answer is not whether the idea is clever — "Minesweeper, but the tiles are emoji" is a skin, not a redesign — but whether the execution holds up well enough, today, to earn a slot on a shelf that promises only good games.

It does not, and the reason is almost entirely avoidable.

The board is broken on arrival

Load the official page on a phone right now — this review did, against the live muan.github.io/emoji-minesweeper build, not a local mirror — and the entire ten-by-ten grid renders as an identical wall of broken-image icons. Every cell, revealed or not, looks the same: a small grey rectangle with a torn corner. The reason traces to one hardcoded line in the source: the default, pre-selected "Twemoji" image set pulls its sprites from twemoji.maxcdn.com, and that domain no longer serves Twitter's emoji artwork. A direct request to it returns a 14-byte plain-text body reading "Hello World!!", dressed up with a Content-Type: image/png header so the browser tries and fails to decode it as an image. The domain has clearly lapsed and been repurposed or squatted, and nothing in the game detects or falls back from that failure.

This is not a one-off finding. Two open GitHub issues — one from 2021, one from November 2024 — report exactly this symptom, screenshots included, and neither has a maintainer reply. The fix that exists is buried: opening the small gear-icon settings popup and switching the radio button from "Twemoji" to "Native emoji" solves it completely, and native rendering genuinely looks good — cheerful chick and egg emoji for empty cells, a proper explosion glyph on a loss, keycap numerals for the clue counts. But that toggle is not something a first-time visitor has any reason to find, and the game does not fall back to it automatically when the image set fails to load. The practical result is that the shelf's own test — would this be worth sending to a friend unprompted? — fails at the first screen, for every visitor who does not already know to go digging in settings before their first click.

Hold-to-flag works on one platform

The registry note for this game specifically claimed its long-press-to-flag mechanic was "genuinely implemented," which is the kind of claim this review exists to verify rather than take on trust. It is implemented — for iOS. The relevant code checks navigator.platform.match(/^iP/) before wiring up a touchstart/setTimeout/synthetic-contextmenu sequence that lets an iPhone or iPad user hold a cell to flag it. Everywhere else, that code path never runs, and the game's own comment claims holding "works in Android by default" through the browser's native long-press gesture.

That claim does not hold up under an actual test. This review dispatched a genuine, unmoved 700-millisecond touch hold through Chromium's real input pipeline — the same rendering and input engine Android Chrome uses, and a materially different (and more honest) test than firing a synthetic DOM event, which would only prove the game's own JavaScript listeners exist, not that a real hold triggers them. With navigator.platform reporting a non-iOS value, that same 700ms hold simply revealed the cell, indistinguishable from a plain tap. Re-running the identical test with navigator.platform spoofed to iPhone produced the flag immediately. There is no flagging path for Android, or for any other non-iOS touch device, at all. Flagging is not strictly required to win — a careful player can complete a board by single-tapping every safe cell and never marking a mine — but it is a core part of how Minesweeper is normally played, and its absence also makes the game's own double-tap "chord" shortcut actively dangerous on Android, since chording will happily reveal an unflagged neighbour even if the player privately believes it is a mine.

Desktop fares better: right-click-to-flag works exactly as expected, and double-click chording functions correctly there too. But this is a shelf built specifically because Flash-era games could not be played on a phone, and a touch control that works for one mobile platform and not the other is only a partial answer to that problem.

Where the craftsmanship actually shows

It would be unfair to stop at what is broken. The underlying game logic is solid: a legitimate first-click-safety mechanic silently relocates a bomb if the very first cell clicked would have been one, so no game can be lost before it meaningfully begins. The accessibility work is genuinely better than most hobby projects bother with — proper ARIA grid roles and cell labels, an aria-live region for status updates, and a specific, deliberate fix (toggling a trailing period) so screen readers re-announce two identical consecutive messages instead of silently swallowing the second one. A commit history entry titled "ACCESSIBLE minesweeper yes? yes?! yes" suggests this was a point of real pride for the author, and it shows.

The settings panel's five emoji themes and adjustable board size and mine count give it the same flexibility the original Windows game offered with its beginner/intermediate/expert presets, which is modest but real replay value for a puzzle this simple. None of it, though, offsets a default state that does not render correctly and a touch control that does not work on the majority mobile platform.

Value and maintenance

Emoji Minesweeper is free, open source under the MIT licence, with no ads, no in-app purchases and the licence file present in the repository. There is nothing to fault on the business side. The maintenance side is a different story: the last functional commit landed in October 2019, eight issues remain open, and the two that describe this review's central finding have sat unanswered for as long as five years. This is not a project anyone appears to be actively steering any more.

Final Verdict

Emoji Minesweeper is a well-built, quietly thoughtful piece of code wearing a badly maintained front door. The Minesweeper logic underneath is faultless, the accessibility effort is a genuine credit to the author, and a decade of stars and forks shows real, lasting interest in a project this small. But the default experience is broken today, verifiably, on the developer's own live page — and the specific mobile feature this review was asked to confirm turns out to work on exactly one platform out of the two that matter. A skin over a 36-year-old idea needs to execute close to flawlessly to earn a place on a curated shelf, and right now this one does not clear that bar.

Pros and cons

Pros

  • Faithful, bug-free core Minesweeper logic, including a genuine first-click-safety mechanic (the game silently relocates a bomb if it would end your very first move)
  • Unusually strong accessibility work for a hobby project: full ARIA grid roles and labels, an aria-live feedback region, and a specific fix (a toggled trailing period) so screen readers re-announce identical consecutive messages
  • A real, decade-long community footprint — 909 GitHub stars and 163 forks since 2015 — and a charming "Native emoji" rendering mode that looks genuinely good once selected
  • Configurable board size, mine density and five emoji themes, MIT-licensed with the licence file present, so redistribution is clean

Cons

  • "The default view is broken right now: this review confirmed on the live, official GitHub Pages site that the pre-selected \"Twemoji\" image set fetches from twemoji.maxcdn.com, a domain that now returns a fake 14-byte \"Hello World!!\" payload disguised with an image/png header instead of real artwork — every cell renders as an identical broken-image icon, masked and revealed alike. Two GitHub issues (opened 2021 and November 2024) report this exact problem; neither has a response"
  • "Hold-to-flag, the mechanic this review specifically tested, only works on iOS: the game's own code checks `navigator.platform.match(/^iP/)` before enabling it. A genuine, unmoved 700ms touch hold dispatched through Chromium's real input pipeline (the same engine Android Chrome uses) on a non-iOS platform simply revealed the cell, identically to a plain tap — there is no flagging path for Android at all"
  • Cells render at roughly 25 CSS pixels square on a default 10x10 board, well under the ~44px touch target most mobile guidelines recommend, making precise taps genuinely fiddly on a phone
  • No code changes since October 2019 and several small, live defects going unaddressed for years — alongside the CDN failure, the live site also throws a mixed-content error that silently drops its own webfont over HTTPS

Category scores

Category scores are the reviewer's read on each area. They inform the overall score but do not average into it — the number at the top of the page is a judgement, not a calculation.

  • Gameplay 6 / 10
  • Visuals 2.5 / 10
  • Originality 3 / 10
  • Replayability 4.5 / 10
  • Interface 3.5 / 10
  • Accessibility 7 / 10