AI can generate UI faster than ever. That’s obviously useful, but it has an awkward side effect: it makes it easy to ship a UI that technically works while quietly losing consistency.
If you’re building one screen in isolation, you can get away with that. If you’re building a product you plan to live with, you can’t.
The Problem: AI Amplifies Inconsistency
AI doesn’t care if your app feels coherent. It cares if the code compiles and the prompt boxes are ticked. Without constraints, you end up with:
- Spacing that changes per screen because the model picked different “reasonable” values
- Typography that drifts because it’s always guessing what “headline” means
- Components duplicated three times with tiny differences because it solved the same problem three different ways
- Micro-interactions that feel inconsistent because there’s no shared behavioural contract
None of these issues are dramatic, but collectively they make the app feel cheap. Worse, they make it hard to evolve because every change becomes a archaeology exercise.
DesignKit Is the Guardrail
DesignKit is my answer to that. It’s not a “nice-to-have design system” for later, it’s a contract that makes AI-generated UI viable long term.
When I say DesignKit, I mean:
- A token layer: spacing scale, typography styles, colours, radii, shadows, motion durations
- A component layer: buttons, rows, cards, empty states, form fields, sheets
- A pattern layer: navigation structure, loading states, error handling, “what a list looks like”, “what a settings screen looks like”
The point is not that tokens are fashionable. The point is that the decisions are made once, and then everything else is a composition problem.
- No hardcoded values
- Composable components
- Predictable patterns
- Theme-aware
What This Changes With AI
This changes the AI dynamic in a very practical way.
- It constrains output. The model stops inventing UI constants and starts assembling from a known set of parts.
- It speeds up iteration. Once the building blocks exist, most UI work becomes “wire up state + choose components”, which is exactly the kind of work AI is good at.
- It maintains quality. You can do fast generation without accepting random drift as the price.
It also changes code review. Instead of arguing about whether 14pt is “better” than 16pt, you ask a simpler question: “Why is this not using the system?”
The Real Shift
The real shift is that you’re not just building UI screens anymore, you’re building the system that produces screens.
That sounds abstract, but it becomes obvious the moment you do AI-heavy development for a few weeks. Without a design system, you end up spending your time fixing inconsistency created by speed. With a design system, you spend your time deciding what the system should do next, and the generated output starts to look like it came from the same product.