Fig. 3 2025 — 2026
LaSu
Translation that lives inside the page you are reading.
- Role
- Founder, designed, built and shipped
- Status
- Live, extension v2.6.0
- Built with
- Next.js 15, React 19, TypeScript, Chrome Extension (MV3), Server-Sent Events, OpenAI API, MongoDB, Mongoose, NextAuth.js, Stripe

The constraint
A translation was a request that returned a finished object. The reader stared at a spinner for as long as the slowest of four languages took.
What shipped
Answers stream as they are written, a parser reads the JSON before it is valid, and pricing changes on the server without a store review.
- Lines shipped
- 23.6kLines shipped16,579 TypeScript in the app · 7,018 JavaScript in the extension
- Target languages
- 72Target languagesOne catalogue, mirrored client-side and asserted by the suite
- Interface locales
- 12Interface localesBoth surfaces, RTL included, plus 51 Chrome Web Store locales
- Runtime dependencies
- 0Runtime dependenciesThe extension ships no framework and no bundler output
- Test suites
- 5Test suitesWiring, behaviour, streaming, i18n and style, run in a Node vm
- API routes
- 22API routesTranslation, billing, community, settings, history and webhooks

3.1 The card, over the page you were already reading 
3.2 Four languages at once, each written as it arrives 
3.3 Practice, built from the words you actually saved
Inside the build
- Perceived latencyReading JSON before it is valid
- Manifest V3A translation is a port, not a message
- Injected UISurviving somebody else's stylesheet
- MeteringSpending the allowance before spending the money
- Distributed stateTwo writers, one settings document
- Release engineeringA build that cannot ship pointed at localhost
- LocalisationTwo locale systems, because they answer different questions
- Learning loopGrading an answer that is nearly right


