6 min read
Intent Over Components
How vibe coding is changing the way I think about product design
Vibe coding is not just making teams faster. It is changing where product work actually happens. The shift is moving away from components as the center of the process and toward something more important: intent.
For years, product teams worked in a familiar sequence: define requirements, design flows, map them to components, hand off for implementation. In that model, components became one of the main ways teams created consistency, scale, and control. That made sense when building software was slower, more manual, and every interface decision had to be translated carefully into code.
That is not the environment we are moving into anymore.
The real value is not in starting from a perfectly organized library. It is in being able to express clearly how the experience should work — what users need to understand first, what should feel primary, what kind of interaction the product should create.
When you start from zero, vibe coding is liberating because you do not yet owe the system anything. You can move quickly, generate options, test ideas, and delay structural decisions. In early exploration, components are almost a distraction. You want velocity, not perfect reuse.
This is part of why so many people are excited right now. It suddenly feels like anyone can design, build, create something good enough to react to. And to be fair, that is partially true. When something is new — no legacy, no previous logic, no established constraints — AI lowers the barrier dramatically. It lets more people participate in shaping ideas.
But that is only one side of it.
Creating a new concept is not the same as working inside a real, mature product.
Once you are modifying something that already exists, you are not just designing a surface. You are working inside a product with technical history, implementation decisions, workflow dependencies, user habits, and interface patterns that may already be tied to how people use it. In that context, experience still matters a lot.
This is especially visible in B2B products, where complexity, legacy, and workflow constraints make the tradeoffs harder to ignore. But it applies to product design more broadly.
If I am redesigning part of an existing application, I cannot only think about what looks cleaner or more modern. I have to think about how it is already built, what patterns already exist, what can be reused, what should be replaced, what new elements are worth introducing, and how those decisions may affect the rest of the product. In a complex environment, very little is isolated. A layout change can affect usability, onboarding, support, trust, and the speed at which users complete their work.
Vibe coding does not make components disappear. But it changes their role.
Components are becoming less central in the creative process. Not irrelevant — just less important as the starting point. For a long time, components were not only implementation tools. They were also a form of governance. They shaped what was allowed, what was reusable, what had to follow a pattern.
And those constraints are not free.
Once a component is reused across a product, changing it becomes more complicated. Every modification has implications elsewhere. In theory that creates efficiency. In practice, it slows down progress — especially in smaller teams where people do not have the time or resources to maintain the design repo, the production repo, and the Figma library in perfect sync.
Usually the truth ends up living in one place only, and most of the time that place is the codebase. A frontend engineer becomes the person who really knows how the system works, while design and product operate one step away from the actual source of truth. That model has been normal for a long time, but it has also been expensive, fragile, and slow.
What vibe coding changes is that it reduces how much effort teams need to spend translating between intention and implementation.
Because the real value is not in preserving a perfect component structure. The real value is in creating software that feels coherent, usable, and adaptable without so much process weight around it.
It also forces a more important question: where should consistency actually come from?
Teams have long treated consistency as something enforced through components, tokens, and design systems. But in a world where models can generate coherent layouts and patterns from higher-level direction, that becomes less true. Consistency starts to come from principles, semantics, interaction rules, and a clear expression of design intent. Less from fixed assets, more from shared understanding.
Users do not care whether a team has a perfectly maintained component inventory. They care whether the product feels clear, predictable, and easy to use. They care about speed, clarity, and trust.
Components still matter when products need to stabilize. They still matter when consistency has to hold across a large surface area. They still matter when behavior needs to remain predictable. But they matter less as a way of thinking through the problem, and more as a way of locking in what has already been learned.
The shift is this: components stop being the center of gravity.
The products that will stand out are not the ones with the most perfectly maintained libraries. They will be the ones with the clearest point of view, the strongest interaction logic, and the ability to evolve without losing coherence.