← Blog Nyura Blog
A green checkmark on a testing dashboard symbolizing all quality gates passing

How Nyura Uses Quality Ratchets to Keep Translations Perfect and Tests Green

Behind the scenes, Nyura enforces automated quality gates that prevent translation regressions and ensure test coverage never drops. With 1200+ tests and zero missing keys across 7 languages, here is how we keep the bar high.

March 16, 2026 5 min read Cyril Simonnet
EngineeringQualityi18n

What Is a Quality Ratchet?

Imagine a turnstile that only moves forward, never backward. That is the idea behind a quality ratchet. Once your codebase reaches a certain level of quality — say, 1200 passing tests or zero missing translation keys — the ratchet locks in that number. Any future change that would drop below that threshold is automatically rejected before it can reach production.

In traditional development, quality tends to erode over time. A developer adds a feature, forgets one translation, and nobody notices until a user sees a raw key like common.save instead of the word Save. Another developer skips writing a test for a quick fix, and gradually the safety net gets thinner.

Ratchets prevent this slow erosion. They are simple rules baked into the build pipeline: the test count can go up but never down, and every translation file must have exactly the same set of keys. If either rule breaks, the build fails. Period.

This approach is not about perfectionism. It is about making sure that every version of Nyura is at least as good as the previous one. You can always improve, but you can never regress.

1200+ Tests: Our Safety Net

Nyura currently runs over 1200 automated tests on every single code change. These are not just basic smoke tests — they cover real user flows, edge cases, and integrations across the entire application.

The test suite includes unit tests for individual utility functions (date formatting, deduplication logic, city matching), component tests that verify UI behavior (task creation forms, filter interactions, travel card rendering), and end-to-end tests that simulate complete user journeys from login to task completion.

What makes this powerful is the ratchet rule: every time someone adds tests, the minimum threshold goes up. If we had 1200 tests last week and someone adds 15 new ones, the new minimum becomes 1215. You cannot merge a change that deletes or breaks tests without replacing them. The number only moves in one direction.

This creates a culture where writing tests is not optional. It is part of every feature. And because the threshold is enforced automatically, there is no need for someone to manually police it during code reviews. The system does the policing.

For you as a user, this means that when we ship a new feature — like the recent birthday reminders or priority suggestions — it has been verified by hundreds of automated checks before it ever reaches your phone. Bugs still happen, but they are caught faster and they affect fewer people.

Seven Languages, Zero Missing Keys

Nyura supports seven languages: English, French, German, Spanish, Malay, Hindi, and Chinese. That is over 1600 translation keys multiplied by seven — more than 11,000 individual strings that need to stay in sync.

Before we introduced the i18n ratchet, keeping translations complete was a constant struggle. A developer would add a new button label in English and French (their two native languages) but forget about the other five. The result: users in Germany or Malaysia would occasionally see raw keys like tasks.archiveConfirm instead of a human-readable message.

The i18n quality gate changed everything. Our build pipeline now compares every translation file against the English source of truth. If any language is missing even a single key, the build fails immediately. The error message tells you exactly which key is missing and in which language, so fixing it takes seconds, not hours of hunting.

But it goes further. The ratchet also catches orphaned keys — translations that exist in the files but are no longer used anywhere in the code. These dead keys add bloat to the bundle and confuse translators. The pipeline flags them for removal, keeping the translation files lean and accurate.

For our users, this means the app feels native no matter which language you use. Every button, every error message, every notification is properly translated. That might sound like a basic expectation, but for a small team maintaining seven languages, it is a genuine engineering achievement — and the ratchet is what makes it sustainable.

What This Means for You

You might never see these quality gates in action — and that is exactly the point. They work silently in the background so that every update you receive is stable, fully translated, and thoroughly tested.

When you open Nyura in Hindi or German and every single label, notification, and error message is in your language, that is the i18n ratchet doing its job. When a new feature arrives and your existing workflows still work perfectly, that is the test ratchet standing guard.

These are the kinds of investments that do not make for flashy release notes. There is no new button to tap, no new screen to explore. But they are the foundation that lets us ship new features confidently — like the recent birthday reminders, smart priority suggestions, and completion sound effects — without breaking what already works.

As Nyura grows, the ratchets grow with it. Every new test and every new translation key raises the bar permanently. The app can only get better, never worse. And that is a promise we can keep because it is enforced by code, not by good intentions.

We believe that quality is not a feature — it is a habit. And habits stick when you build systems that make the right thing the easy thing.

Try Nyura for free

Available on iOS, Android, and web. No credit card required.

Get Started →