Hacktakes · Edition 6
Hacktakes · Edition 6 · July 14, 2026

The AZERTY Tax

Companies burn millions in engineering capital every year writing bloated JavaScript that actively breaks perfectly functional native HTML inputs.

By Gordon Pike

Sparked by Just Let Me Write Digits · discussion

The stairs came perfectly functional out of the box, but we felt the house needed a bespoke vertical onboarding experience.
The stairs came perfectly functional out of the box, but we felt the house needed a bespoke vertical onboarding experience.

What happened was, a user attempts to authenticate into a digital identity portal and simply hits a wall. Their credentials are correct. The blocker is entirely hardware: they happen to be typing on a French AZERTY keyboard, a layout that physically demands holding the Shift key to enter digits. Somewhere down the line, a well-meaning frontend engineer had deployed a JavaScript snippet designed to aggressively block all non-numeric keystrokes. By firing a native override, the script blindly threw away the Shift key alongside the letters. That tiny, ostensibly helpful code pushed millions of Francophone citizens out of the system instantly. You end up spinning up an infuriating feedback loop where a user actually has to log in just to file a ticket reporting that their login screen is broken.

So, let's unpack the macro-economic disaster of the naive JavaScript preventDefault() snippet. If you were to draw a side-by-side flow chart of this architecture, the left side would depict the native HTML DOM event flow handling internationalization flawlessly for zero cost. The right side would illustrate an expensive, bloated JavaScript masking component intercepting the keystroke and wedging a steel rod into the gears. We can evaluate the technical debt incurred here across four pragmatic vectors.

1. The Hubris of the Override Browser vendors and the W3C have spent three decades systematically grinding down the edge cases for the humble <input> tag. Since the days of NCSA Mosaic, browser engines have been quietly accumulating fixes for IME composition, right-to-left text, and obscure hardware layouts. The mathematical probability that your bespoke JavaScript event listener is going to out-engineer that legacy is exactly zero; the historical weight of the platform will crush you. When you read the field report on input digits, you see exactly how fast these localized interventions metastasize into structural failures. Someone tries to be helpful by restricting an input field, assumes a standard US layout, and inadvertently bricks the open web for an entire country. It’s a classic case of smart people doing stupid things because they forgot to respect the platform.

2. The Pragmatic Math of Broken Edge Cases The friction scales immediately beyond French keyboards. Once a script intercepts a native DOM event, the author unknowingly assumes total responsibility for the entire spectrum of human input. That means handling copy-paste interceptions from password managers like 1Password, mobile number pads on Android devices, and the labyrinthine, highly specific requirements of screen readers. It means dealing with CJK input method editors where multiple keystrokes compose a single glyph. [Pause for a spoiler alert: You are going to lose this battle.] The browser already handles these accessibility cascades seamlessly; bypassing the foundational platform guarantees disenfranchisement at massive scale. Every time you hijack a keystroke, you are essentially rewriting an operating system module in user space. Badly.

3. Following the Money When evaluating web architecture these days, my primary heuristic is looking strictly at the capital structure. Let's ignore the theoretical purity of React components and focus solely on the financial burn rate. A native HTML text input requires zero dollars in maintenance capex. It ships with the OS, tests itself, and updates automatically when web standards evolve. Contrast that with the financial engine behind a bespoke frontend component burdened with custom masking logic. That codebase demands external dependencies, continuous CI/CD pipeline cycles, cross-browser testing matrices, and endless debugging sessions just to reach parity with what the browser offered out of the box. Every Jira ticket filed against a broken text component represents burnt cash that could have been deployed toward actual product utility. We are funding teams of highly compensated engineers to sit in expensive meetings arguing over how to rebuild a text box. From a purely economic standpoint, this over-engineered, dependency-heavy bloat is an indefensible misallocation of corporate capital. We are paying a massive premium to actively degrade our operating margins.

4. The Echo Chamber Our tribe is entirely aware of this absurdity. You can browse the Hacker News consensus on the matter, where commenters repeatedly point out the collective developer frustration with over-engineered inputs. The participants in that discussion explicitly catalog the collateral damage of hijacking native browser controls—specifically how a clever script on a phone number field reliably causes password managers to stroke out, forcing users back into manual data entry like it's 1998.

And yeah, the community broadly agrees that trusting the platform is the only sane path forward. Yet the industry keeps shipping these overrides anyway, driven by a bizarre cultural reflex to push massive JavaScript payloads rather than relying on boring, bulletproof infrastructure. We know it's broken, our users know it's broken, but the momentum insists we keep reinventing the flat tire.

We have had perfectly functional HTML text inputs since the early nineties. They work on every device, in every language, and they do it for absolutely free. The engineering has already been done for us, paid for by Netscape and Apple and Google over decades of iteration. And yet we continually burn millions of dollars in engineering capital every single year to actively break them. Arrgh.

← Back to Edition 6