Bilingual app patterns and mobile-first polish — the boring details that separate hobby from product.
There is a difference between an app that runs and an app a stranger trusts with their email and their card. The gap is not feature count. It is the absence of small failures that make the user wonder whether the people who built it pay attention. A button that says null for half a second. A modal whose Close button is half off-screen on a 375px phone. A pricing page showing the English string Total next to a euro amount in otherwise-translated checkout. A form input that triggers 200% zoom on iOS because the font-size is 14px.
None of these break the build. None fail in tests. Each one, alone, is forgettable. Together they are the texture of "this feels like a side project". The polish problem is invisible when done right — nobody blogs about making locale strings sync. But it compounds: one miss signals that nobody is looking, and every subsequent flaw confirms it. The broken-windows theory of software.
This kit gives you five chapters (the polish problem, bilateral i18n audit, mobile parity checklist, responsive CSS fixes, desktop polish methodology) plus five runnable templates. A 30-minute weekly audit. Regex patterns that catch hardcoded strings. Scripts that fail your build if locale files are out of sync. The boring work that prevents a paid app from looking like a hobby.
"Shipped" vs "trusted". Why polish is invisible when done right but compounds catastrophically when ignored. Silent locale failure (Italian users see raw key names). Mobile checkout breakdown (form off-screen, date picker hidden, pay button under notch).
The bilateral mental model: one logical dictionary in N parallel projections, all present or the build is broken. Delta tracking script (12 lines of bash), three categories of hardcoded strings (alerts, page titles, error messages), linter integration, Language A/B abstraction.
Feature parity, not just visual parity. The four-breakpoint test (320/375/768/1024px). Hidden on mobile: intentional vs accidental. 44×44 touch target rule. Form input attributes (type, inputmode, autocapitalize, autocomplete) that determine whether iOS fights you or helps.
Viewport meta tag foundation. 16px font-size minimum (iOS zoom prevention). The 100dvh mobile bug fix. Overflow-x audit (long URLs, fixed images, tables, iframes). Safe-area-inset for notched devices. Retina 1px borders. Drop-in CSS patterns.
The 1440+ problem (unbounded layouts, hover-only affordances, retina borders). Rules for large screens (capped layouts, hover-only on hover devices, retina pixels, fluid typography). 30-minute weekly audit cadence. Triage rule (fix 2+ of: primary path, above fold, <15min fix). Polish budget (10% dev time).
i18n-bilateral-audit.sh (CI-ready), hardcoded-strings.regex.md (12 patterns), mobile-parity.checklist.md (printable breakpoint matrix), responsive-fixes.css (16 drop-in patterns), polish-weekly-audit.md (30-min protocol).
Chapter 2 (i18n Bilateral Audit) is the most actionable chapter and the one that gives you measurable improvement on day one. Run the script, add to CI, fix locale mismatches. If it doesn't justify the price, don't buy the rest.
All of them. next-intl, i18next, vue-i18n, react-intl, rolled-your-own — any library that stores locales as JSON. The bilateral audit script only cares that you use jq to extract keys. Swap the jq line for YAML and the rest stays the same.
No. The 16 CSS patterns in `responsive-fixes.css` are vanilla CSS. Use them with any framework — Tailwind, Bootstrap, plain CSS, whatever. Copy what you need, leave the rest.
Yes. The bilateral audit script returns non-zero on any mismatch. Wire it as a required check before merging. The hardcoded-strings regex patterns return exit code 1 on any match. Both catch failures that no human review catches reliably.
No. You need basic comfort with CSS, shell scripts, and locale files. If you have never used an i18n library, read your library's docs first, then this kit covers the bugs those libraries don't surface.
Not if you follow the kit. The 30-minute weekly audit + the checklists catch the failures a designer would catch. The bilateral script catches the failures only automation catches. This is designed for solo devs and small teams who don't have dedicated QA or design review.
Yes. The checklist breaks it down: bilateral script (3 min), hardcoded-strings sweep (4 min), 4-breakpoint walkthrough on a real phone (10 min), desktop check (3 min), CSS hygiene (3 min), triage and file (5 min). Adapt to your stack; the 30-minute box is the constraint that matters.
30 days, no questions. Email info@shippedstack.com if the book or templates don't land. Single-seat license — please don't share the files.
i18n & Mobile Polish Kit — €19 one-time, lifetime v1.x updates, 30-day refund.