Loading [000/100]
← All case studies

Game Prototype / Mobile Distribution

Just One Flap

A canvas-based hyper-casual game prototype packaged for native iOS and Android distribution, exploring how far a vanilla JavaScript build can go without a game engine.

Role
Product Manager and builder: game mechanic, build tooling, mobile packaging.
Timeframe
February 2026
Stack
  • HTML5 Canvas for rendering
  • Vanilla JavaScript ES modules
  • Vite for dev tooling and production bundling
  • Capacitor for iOS and Android app packaging

Why Now

Hyper-casual games have converged on the same set of engines and the same light, forgiving physics model, because those choices maximize early retention. That convergence has flattened the category. The current generation of mobile browsers and packaging tools makes it realistic again to ship a canvas-only game from a small codebase to native app stores, which reopens a design space that game engines had effectively closed.

The Problem

For a product manager, the question underneath a hyper-casual prototype is how much of the "feel" of a game depends on the engine and how much depends on the physics tuning on top of it. If the answer is mostly the tuning, then the category is still open to small teams. If the answer is mostly the engine, then the category is closed.

Product Bet

The bet is that a sixty-second prototype can convey a specific game feel within the first few interactions, using only a canvas, vanilla JavaScript, and a tuned physics loop. If the first few interactions do not communicate the intent, no downstream polish will recover it.

What I Built

A canvas game running on vanilla JavaScript ES modules, with Vite handling dev and production builds. Capacitor wraps the web build for iOS and Android, which keeps the web codebase as the single source of truth while still producing real native app builds.

The packaging choice is the product decision. It says the prototype is not a browser toy. It is a mobile-first game that happens to be written on the web stack, and the intended distribution is the app store.

Tradeoffs

I did not ship sound design in this version. Sound is half the feel of a physics game, but it is also the fastest path to feature creep. Holding it back keeps the physics tuning as the variable under test.

I did not build a persistent leaderboard. The prototype is focused on the core micro-interaction, not on the retention mechanic that would sit on top of it.

Business Read

The useful takeaway for non-game products is that feel is a designable product lever, not a property of the engine. Ride-hailing pickup animations, delivery ETA updates, and chat send feedback all leave feel on the table because no one on the product side owns it explicitly. A game prototype is a clean place to practice owning it.

Outcomes

  • A playable canvas-only game built on vanilla JavaScript and bundled with Vite, with no heavy engine dependency.
  • Capacitor packaging in place for iOS and Android, which keeps one web codebase as the source of truth while producing real app-store builds.
  • A small, legible codebase that is cheap to iterate on, which matters more for a feel-first prototype than any specific performance headline would.
Get in touch →