One week, six platforms: React and Claude Code
Last week I shipped across six platforms. Not prototypes. Working software, each solving a different problem, each using a different tool.
Here is what I built and why this was possible.
The six platforms
1. Web pages (React)
The baseline. A set of pages with components, state management, and routing. React is the foundation everything else builds on.
2. Email templates (React Email)
React Email lets you write email templates as React components. Same JSX, same composition patterns. The output is HTML that works across email clients, but you never have to think about table layouts or inline styles directly.
If you know how to build a React component, you know how to build an email template.
3. Desktop app (Tauri + React)
Tauri wraps a web frontend in a native shell. The frontend is React. The only new surface is the Rust backend for system-level features like file access and notifications.
The component layer? Identical to what you would write for the web.
4. Mobile app (Flutter)
Flutter is not React. The syntax is Dart, not JSX. But the mental model is the same: declarative components, a widget tree, state flowing down, events flowing up. If you have internalized React’s component model, Flutter feels familiar immediately.
The gap is syntax, not concepts.
5. Video (Remotion)
This was the surprising one. Remotion treats React components as video frames. You write a component, parameterize it with time, and Remotion renders it as a video.
The same composition and prop patterns you use for a web page now produce MP4s. Your React instincts transfer directly.
6. Agent-driven UI (a2ui)
An experimental interface where an AI agent drives the UI. Components render based on what the agent decides to show, not what the user clicks. Still early, but the building blocks are the same: declarative components that receive data and render accordingly.
The pattern
These six tools have different APIs, different ecosystems, different deployment targets. But they share one thing: the declarative component model.
You describe what the UI should look like given some state. The framework handles the rest. Whether “the rest” means updating a DOM, generating an email, rendering a video frame, or building a native widget, the mental model stays the same.
Once you internalize this model, switching between frameworks is a syntax problem, not a conceptual one. And syntax problems are exactly what AI is good at solving.
Claude Code as the multiplier
Here is where it gets interesting. I did not have deep experience with Tauri, Remotion, or Flutter before this week. What I had was a solid understanding of the component model and Claude Code running in my terminal.
The workflow was the same every time:
- Describe the component architecture I wanted
- Let Claude Code handle the framework-specific syntax
- Review, adjust, iterate
Claude Code reads your codebase, understands your patterns, and generates code that matches your style. When I moved from React to Flutter, Claude handled the Dart syntax. When I moved from web to Remotion, Claude handled the time-based rendering API. The conceptual work stayed with me. The translation work went to the AI.
Could I have used React Native instead of Flutter? Electron instead of Tauri? Probably. Claude Code makes the choice almost irrelevant because the ramp-up cost for any framework that shares the declarative model drops to near zero.
The takeaway
Learn the model, not the framework.
The declarative component pattern is now the universal UI abstraction. React popularized it, but it has spread everywhere: Flutter, SwiftUI, Jetpack Compose, Remotion, React Email. The specific framework matters less than understanding the pattern underneath.
And with AI-augmented development, the syntax differences that used to take weeks to learn now take minutes to bridge. Your value is in the architecture decisions, the component design, the state management strategy. The AI handles the rest.
One person, one week, six platforms. Not because I know six frameworks. Because I know one pattern and have a tool that translates it everywhere.