Ordering · Engineering

Two taps, two tabs

A button that does nothing visible for a second is not a polish problem. On a food hall’s wifi it is a second record you did not want — and the guest who made it has no idea they did.


There is a button on our food-hall page that opens a group tab. Somebody puts a name in, sets a limit if they want one, and taps it. Behind that tap is a request to the server, and the server answers when it answers.

Until this week the button did nothing at all in the meantime. It did not dim, it did not change its word, it did not stop listening. On an office connection that gap is imperceptible. In a building with four hundred people and one access point it is long enough to think the tap missed.

So you tap it again. And because nothing was stopping you, the second tap opened a second tab.

Why that is worse than it sounds

Only one of them was remembered. The code that files the tab away keeps the last one it was handed, so the first tab existed — on the server, with its own identifier — and the phone had already forgotten it. If the share link had gone out before the second tap, everybody else in the group was now adding rounds to a tab their friend could no longer see.

Nothing errored. Nobody was told. The only way to notice is to go looking in the data afterwards and wonder why there are two.

The fix is the boring one

The button now goes dead the instant it is pressed — before the request is sent, not after the answer comes back — and says Opening… while it waits. A second tap in that window does nothing whatsoever.

We proved it rather than assuming it. Holding the server's reply for two and a half seconds and tapping twice now produces exactly one tab. With the guard stubbed out, the same two taps produce two. That second run matters as much as the first: a test that cannot demonstrate the bug is not evidence that the bug is gone.

Where to look in your own setup

Any button that creates something — a tab, an order, a booking, a staff record — and does not visibly change the moment it is pressed. The test is cheap: throttle your connection in the browser's developer tools, press it twice quickly, then count the rows.

If you get two, you have had two for as long as that button has existed. Busy sites just find out sooner.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.


Written with food halls in mind — see HelchPOS for food halls.