Customizing Flows
Make your iii development console flows look exactly how you want
By default, the iii development console shows your Steps with their code. Great for developers. But what if you're sharing with:
- Frontend developers who just need to know the API
- Product managers who want to see the big picture
- Designers who care about the flow, not the code
You can override how Steps look in the iii development console with custom React components.
Custom UI for Steps
Want to change how a Step looks? Create a .tsx or .jsx file next to it.
File structure:
Same name, different extension. Motia connects them automatically.
Simple Example
Let's use the built-in EventNode but add an icon:
That's it! The Step now shows with your custom content inside, plus an icon.
Built-in Components
Motia gives you ready-made components for different Step types:
| Component | For which Steps | What you get |
|---|---|---|
EventNode | Queue triggers | Styled box with connection points |
ApiNode | API triggers | Box with request/response info |
CronNode | Cron triggers | Box with schedule info |
NoopNode | NOOP steps | Different color for visual distinction |
Fully Custom UI
Want complete control? Build from scratch. Here's a real example:
The Step:
Custom UI:
What this does:
- Shows a clean card instead of code
- Has connection points (the
BaseHandleparts) - Prevents code viewer from popping up
- Uses your brand colors (blue border here)
Important parts:
BaseHandlecomponents - These are the connection dotsonClick={handleClick}- Stops the code viewer from openingPosition.TopandPosition.Bottom- Where connections attach- Export as
default function- Required for Motia to find it
NOOP Steps
NOOP = "No Operation". These Steps don't actually run code. They just sit in your flow diagram to represent:
- External stuff - Webhooks, third-party APIs, manual processes
- Human actions - Approval gates, manual reviews
- Testing - Placeholder nodes while building flows
- Documentation - Show the complete picture visually
Creating NOOP Steps
NOOP Steps are config-only. No handler needed.
Add custom UI (optional):
Common NOOP Examples
1. Waiting for Stripe Payment
2. Human Approval
3. GitHub Webhook
Tips
For Custom UIs:
- Start with built-in components (
EventNode,ApiNode) - Keep it simple - focus on clarity
- Use Tailwind for styling
- Add
BaseHandlefor connections - Don't overthink it - simple cards work great
For NOOP Steps:
- Always include
virtualSubscribes(even if empty[]) - Use clear, descriptive names
- Explain what happens externally in the description
- Connect them to your flow with virtual enqueues/subscribes
Quick Reference
What to Import
Where Handles Go
- Top (
Position.Top) - For inputs (things coming in) - Bottom (
Position.Bottom) - For outputs (things going out) - Flows go top to bottom
Export Format
or