I’ve been using Vercel’s AI Builder extensively for several months to develop a large-scale platform. The previous Design Mode was one of the most valuable features in my workflow. I could make visual edits directly, and those changes would be reflected cleanly in the page’s source code. There was zero friction or ambiguity.
The new Design Mode has broken this workflow. Instead of applying edits directly, it now:
1. Captures my visual changes as a JSON diff and screenshot.
2. Sends both to the AI as a “translation task.”
3. It requires the AI to reinterpret my intent from CSS selector paths that don’t always map correctly to the right React component.
4. It forces me to verify, correct, and often repeat the entire process.
What was previously zero steps is now three to five steps, with new failure points introduced at each step. The AI has already made edits to the wrong files as a direct result of this new interpretation layer.
The lack of “go-to-code” with real-time preview of changes saved as edits to the current version is not a minor UX change. For anyone building complex, multi-component projects, this is a significant downgrade in capability. The old behavior, where a visual edit map directly corresponded to a source file, was correct. The new behavior adds unnecessary complexity without offering any clear benefit to developers.
I’d like to understand:
Was this change intentional, or was it a side effect of a larger update?
Is there a way to restore the previous direct-edit behavior?
Is this on the roadmap to be fixed?
I want to make it clear that for power users building real production projects, this change is actively slowing down development and introducing errors that didn’t exist before.
If this change is intentional, a toggle between ‘direct edit’ and ‘assisted translation’ modes would allow power users to opt out of the interpretation layer and retain precise control over their code.
For instance, a styling change intended for the auth login page was applied to a forum thread card on a different route, because the CSS selector path didn’t disambiguate.
Thank you for looking into this.