I have been vibe coding a lot lately. And if I am honest, writing performant code with these tools is still a struggle. We are in 2026 and somehow most of them are still pretty bad at this part.

The other day it was a simple iOS app. Nothing fancy. Onboarding screen, then the home page. The kind of flow you build without thinking twice.

Except the app took almost 2000 milliseconds to get there.

That number sat with me. Two full seconds for something that should feel instant. I knew something was wrong. My hand went toward the code the way it always does. Then I stopped myself.

I thought, no. Let the agent fix it.

So I told it to fix it. Then I told it again. Then again. Fix it, fix it, fix it.

It did not fix the simple problem. It started inventing new ones. I sat there staring at the chat thinking, this is a flagship model. Why is it behaving like this?

I tried skills next. A swiftui-performance skill, to be precise. The delay stayed. I cleaned the prompt. Rewrote it from scratch. Did all the usual prompt hygiene. Still nothing.

I knew I could open Instruments, find the culprit, and be done in a few minutes. I still waited. I wanted to see if the agent could get there on its own.

It could not.

That is when it hit me. These agents are not failing because they cannot write a performance fix. They are failing because they cannot feel the app the way we do. They do not sit through that awkward pause after onboarding. We do.

So I ran the app through Instruments, grabbed the traces, and fed them into the chat.

Guess what? Tada. It solved the whole thing in a jiffy.

That little moment taught me more than a dozen blog posts about prompting. Context matters. A lot. No matter how good the model is.

And this is not only a local debugging lesson. In production, you do not get to sit with every user through that awkward pause after onboarding. You need real signals. Screen load times. Hangs. Crashes. The kind of numbers that tell you something is wrong before a review says the app feels slow. At work, that tool for me is Zoho Apptics. Same idea: less guessing, more meaningful data.

Coding agents cannot feel how an app performs. Humans feel that. Agents are excellent at crunching numbers and structured data. Give them meaningful data and the output gets better. That is not some deep secret in 2026. That is just how this works.

The gap is perception. When we say “this is not performing well” or “the animation is laggy,” we are describing a feeling. The agent hears a vague complaint. Sometimes that is enough. Sometimes you get a totally different result. Sometimes you accept a half fix and move on. Sometimes you get properly frustrated.

So get the context right, my dear coders. Measure it. Feed the traces. Stop burning tokens on “fix it” when the model cannot see what you feel.

About the author