← Back to Writing
August 20, 2026 · 2 min

When Half Your Product Can't Ship Daily

DevOpsMobileCI/CD

At Happy Pet Tech, features ship daily on the web platform, often more than one in a day, through GitLab CI/CD onto AWS. The mobile side can’t move like that. The Flutter apps go through app store review, and even after a release is approved, users update whenever they update. Both halves belong to the same product, and they live on completely different clocks.

What the slow clock breaks

A web mistake is short-lived: fix or roll back, and every user has the correction on their next request. A mistake that ships inside the app binary has no rollback. Old versions keep running on phones until their owners choose to update, and some never do. The web pipeline’s safety net of staged rollout and quick reversal simply doesn’t exist on the client side.

Thin clients, heavy backend

The architectural answer is to keep as little logic in the app as possible. The Flutter clients render and collect; the Node.js and Express backend decides. The clearest win from this is Lorem, the AI companion in the Pet Parent App: its prompts, context, and safety rules all live server-side, so they keep improving without a single app store submission.

The same rule has a cost, and it’s paid in API discipline. Old app versions keep calling the API long after new ones ship, so backward compatibility stops being a nice-to-have and becomes a daily constraint on how endpoints evolve. A breaking change against the web front end is fixed in the next deploy; a breaking change against the app stays broken until users update.

Two rhythms, deliberately

So the backend and web move fast, in small reversible releases, while app releases happen on a slower, deliberate cadence, because there’s no taking them back. Keeping those two rhythms from fighting each other is a large part of what running DevOps for this product means.

M
Manthan T.
Systems Engineer · mnthan.com