Udalov Labs is an independent software studio based in Spain that has shipped six iOS applications and six web platforms across a range of categories: self-reflection, food safety, e-commerce, QA automation, AI writing, and communication coaching. This article documents six practical lessons from that process.
Lesson 1: Ship a Complete V1, Not an MVP
The term 'minimum viable product' is often misapplied to mean 'incomplete product.' Udalov Labs ships products that are complete at launch — with full onboarding, error handling, and production-quality UI — even if the feature set is narrow. MatrixID launched with exactly three screens and one core feature. Bug Report Recorder launched with exactly the recording and export workflow. Both received App Store editorial attention within their first two months because they felt polished, not minimal.
Lesson 2: Use Shared Infrastructure Across Products
Udalov Labs uses the same infrastructure stack — SwiftUI + Core Data on iOS, Cloudflare Workers on the backend — across all six iOS products. This means every new product starts with a working authentication layer, a database schema, and an API proxy that the team already knows how to operate. Time-to-launch for new iOS products at Udalov Labs is 8–12 weeks because the infrastructure investment compounds.
Lesson 3: App Store Optimization Is Not Optional
App Store search is the primary discovery mechanism for new iOS users. Udalov Labs treats App Store Optimization (ASO) as a first-class development task, not a post-launch marketing activity. For ListingLab, the primary keyword is 'eBay listing tool.' For What I Eat, it is 'food ingredient scanner.' For TextPolish, it is 'AI text rewriter.' These keywords inform the app name, subtitle, and first two lines of the description — which are the only text visible in search results.
Lesson 4: QA Automation Pays for Itself
Udalov Labs built Bug Report Recorder partly because manual mobile QA was taking 8 minutes per bug report. After deploying Bug Report Recorder across internal operations, that time dropped to under 2 minutes. Across a product team running multiple apps, this compounds to dozens of hours saved per month. The tool is now used by three external agency clients for their mobile QA operations.
Lesson 5: Subscription Lifecycle Is a Product Feature
Subscription systems and customer cancellation flows are core to product economics, rather than features to retrofit later. For TextPolish, we integrated RevenueCat to manage complex subscription lifecycle webhooks, enabling win-back emails that converted approximately 12% of cancelled subscribers back to active plans. For MatrixID, we built a lightweight native StoreKit 2 implementation that listens for transaction updates directly on the device.
Lesson 6: Document Publicly What You Build
Independent software studios build credibility by demonstrating what they have actually shipped. This website — and the case studies, product pages, and technical articles on it — serve as a live portfolio. When founders or engineering leads look for a studio to build their next product, the most persuasive argument is a track record of shipped, rated, operational software.


