My Safety Checks Were Monuments to Bugs I Had Already Fixed
I wrote checks so my app could not lie. Each one turned out to be a monument to a bug I had already fixed, and the next bug walked straight past it.
The digital residents app for the Japanese town of Shipaton 2026, built by the reporter, contained several bugs that the reporter discovered and fixed over a period of three weeks. The app's core functionality was a membership subscription with a ¥5,000 annual fee that granted access to certain services, but the services themselves were never actually unlocked by the payment. The reporter found six bugs in the codebase, which they later realized were all instances of the same underlying issue.
The reporter used various checks to find and fix the bugs, including:
1. Verifying that the app's navigation graph contained links to all relevant screens. This check was added after the reporter noticed that a navigation row for the guide screen was being excluded from the web build, even though the guide screen was still functional.
2. Ensuring that a user could reach every screen in the app by tracing the connections between them. This check revealed that a bug in the scanner functionality, which required scanning a QR code to unlock a seal, had no entry point in the app's navigation structure. The reporter added a check to confirm that all necessary screens were accessible from the home screen.
3. Accurately counting the number of upcoming events displayed in the app. Initially, the reporter used a manually maintained JSON file to generate the count, but discovered that the server's code was filtering out events that had already ended. To fix this, the reporter modified the screen to compute the count based on the server's actual data, rather than relying on the potentially outdated JSON file.
The reporter emphasized that their original tests had not caught these bugs because they were focused on specific aspects of the app's functionality rather than the overall interconnectedness of the screens and features. By applying three additional checks, the reporter was able to identify and resolve the underlying issues, ensuring that the app functioned as intended.
Written by urgent.news from HackerNoon's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.