TapSurge is an offline-first multi-finger click-speed test for iPad competition use. It is built with Vite, TypeScript, native DOM APIs, and Canvas.

The product sounds tiny: count taps for 10, 30, or 60 seconds. The interesting part is making that count credible.

Why a custom tool

Most tap-speed apps are built for casual play. Competition use has different requirements:

  • work offline
  • run well on an iPad
  • avoid accidental browser gestures
  • count multi-finger input correctly
  • preserve enough raw data to audit a run
  • keep history locally without accounts

For this use case, simplicity matters more than visual novelty.

Input model

TapSurge uses pointerdown and active pointer tracking. The key rule is that holding a finger down should not count repeatedly. A tap is a new press, not a frame, animation event, or repeated touch state.

The app records:

  • total taps
  • average CPS
  • one-second live CPS
  • maximum live CPS
  • maximum simultaneous fingers
  • raw timestamps and pointer IDs

That raw data is important. It lets a run be inspected after the fact instead of trusting only the final number.

Offline design

The app is intended to work in a PWA-like mode. It has a local app shell, a service worker, and no backend dependency during play.

This is one of those projects where offline support is not a nice extra. It is part of the user story. If the tool is used at a booth, in a classroom, or during a small event, network dependency is unnecessary risk.

UI constraints

The UI has to be obvious under pressure. A player should not be reading instructions while the timer is running.

The controls are intentionally few:

  • choose duration
  • start
  • tap
  • see result
  • review history
  • export evidence if needed

The harder work is preventing the browser from interfering: double-tap zoom, scroll gestures, safe-area issues, and fullscreen behavior all matter more on a real iPad than in a desktop browser.

What I learned

Small event tools benefit from being boring. The best version is not the most animated one; it is the one that produces trustworthy results with minimal setup.

TapSurge is a good example of a private tool that could be public, but does not need a large roadmap. Its scope is the feature.