Skip to main content

A user found the bug I should have caught myself

I was collecting user feedback on Iqra a few weeks ago. One of the users pointed out a bug. A section of the app was not working correctly. I knew the section. I had made changes to it recently — and shipped them directly to production without running through my usual testing flow.

A user told me about the bug. Not my emulator. Not my test release. A user.

I fixed the bug, made a few more improvements, added some things to the app. When I finally sat down to build the test release properly, this came back to me. So here it is — written down, for anyone building a product right now.

The flow that actually protects you

Every change, no matter how small, goes through three stages before it reaches your users.

First, test on the emulator. Catch the obvious breaks early, before anything leaves your machine. Second, publish a test release and run it on a real device. The emulator lies sometimes — screen sizes behave differently, performance feels different, interactions that work in simulation break on actual hardware. Third, only then push to production.

It takes more time than shipping directly. It has saved me more time than it has cost me.

Why developers skip this

It is not always laziness. Sometimes it is a small change — one line, one fix — and it feels unnecessary to run the full flow for something that minor. That feeling is exactly when the mistake happens. The smaller the change feels, the easier it is to justify skipping the test. And the skipped test is always the one that finds you later, through a user report.

The honest note

If you already do this — good. This was not written to teach you something you know. It was written because someone reading this is about to push a change directly to production right now, and this might be the thing that stops them.

Your users should not be your test environment.

Comments

Popular posts from this blog

Bhai aap ny Flutter kese sikha

Bhai aap ny Flutter kese sikha — yeh sawaal mujhse kai baar pucha gaya hai. Aaj honestly bata deta hun. Seedhi baat karta hun. Maine Flutter sikhne ke liye koi special course nahi kiya. Koi bootcamp nahi. Koi structured plan nahi tha. Mere paas already C++, C#, HTML, CSS, JavaScript, PHP, Python ka background tha. Toh Flutter ek nayi language ki tarah nahi thi — ek nayi duniya thi jisme samajhna tha ke cheezein kaise chalti hain. Maine 2-3 full-length videos dekhe. Har ek 1 hour se zyada ki. Lekin goal yeh nahi tha ke sab yaad ho jaye. Goal sirf yeh tha ke flow samajh aaye. Components kya hain, cheezein kaise connect hoti hain. Bas. Phir maine project shuru kar diya. Aur yahan se asli story shuru hoti hai. Pehla hafte — setup. Sirf setup. Dependencies download hoti thi. Ghanton tak. Mere paas 4Mbps connection hai — ek typical Pakistani developer ki tarah - shayd kch zyada. Ek cheez download hoti, kuch aur missing hota, phir kch aur, phir kch aur. 7 din. S...

Agar dobara shuru karna parta, toh kya karta?

Yeh sawaal mujhse pehle bhi pucha gaya hai. Aur honestly, ab mere paas ek clear jawab hai. Seedhi baat karta hun. Pehli cheez — clarity. Akele Baith jaunga. Aur khud se yeh teen sawaal puchhunga: Main kya seekhna chahta hun? Kyun? Aur kab tak? Simple lagta hai. Lekin zyada tar log yahan skip kar dete hain. Aur phir woh confusion aati hai jo kabhi khatam nahi hoti. Meri apni example deta hun. Flutter seekhna chahta hun — kyun? Apni app banana, usse monetize karna. Premium sell karna ya subscription lena. Kab tak? Ek saal. 365 din. Aur goal? 200 ya 1000 users. Bas. Itna hi kafi hai shuru karne ke liye. Warna kaam karte raho aur pata hi nahi kab success hai aur kab failure. Phir requirements dekhta. Flutter ke liye kya chahiye? Flutter khud. App development. Product marketing. Toh Flutter sikhna shuru karta. Pehle 2-3 lambi videos — sirf flow samajhne ke liye. Widgets kya hain, cheezein kaise connect hoti hain. Yaad karne ke liye nahi — bas ek mental map. Phir 2-4 ...