Don't Use Generated Admin UI

English version of this post here (EN)
Spanish version of this post here (ES)
French version of this post here (FR)

Don’t Use Generated Admin UI

Every Rails developer has been there. You need an admin interface, so you reach for ActiveAdmin or RailsAdmin. It feels like the smart choice—why reinvent the wheel? But after years of building products, I’ve learned that generated admin UIs create more problems than they solve.

The Customization Trap

Generated admin tools promise to save you time, but they deliver the opposite. You start with their defaults, then immediately need something custom. A special filter here, a custom action there, some business logic that doesn’t fit their patterns.

Before you know it, you’re writing custom code inside their framework. You’re duplicating logic that already exists in your main application. You’re learning their DSL instead of using the tools you already know.

Distance from Reality

When your client reports a bug, where do you go to investigate? If you’re using a separate admin panel, you’re context-switching. You’re opening a different URL, navigating through different UI patterns, trying to understand what your client actually experienced.

Compare this to having admin functionality built into your main application. Add a simple “Admin” tab to your existing interface. Now when debugging, you’re seeing exactly what your client sees, with the same data, in the same context.

Your Admin is Your Business Logic

Here’s the uncomfortable truth: your admin interface isn’t just a CRUD interface. It’s where your business rules live. The validation logic, the workflow states, the permissions—this is core business logic, not a side concern.

When you treat admin functionality as an “external thing” that lives in a generated tool, you’re separating your business logic from your business. That custom approval workflow? That’s not generic—it’s uniquely yours.

A Better Way

Instead of fighting against generated admin tools, embrace building admin functionality as part of your main application. Use the same components, the same styling, the same patterns your users already know.

Your admin users are still users. They deserve the same thoughtful UX you provide to your customers.