KeystoneJS Admin UI is built on React and allows full replacement or extension of the interface via custom Views. This is not just a theme—you can override components for specific Lists, add custom pages, change navigation and the dashboard. In our practice, there are often cases where the standard admin panel doesn't meet business requirements: unique dashboards with complex analytics, non-standard bulk editing forms, or integration with external services. It is precisely for such situations that we develop custom View components. Our team has over 10 years of experience and more than 100 completed projects on KeystoneJS (since 2018). We guarantee that custom Views will work stably and won't break when Keystone is updated.
Why custom Views?
Standard configuration via Keystone config does not cover all scenarios. Custom Views provide 2-3 times more flexibility than standard configuration: you can implement any business logic right in the admin panel without resorting to workarounds. For example, we faced a task: we needed to display a dashboard with real-time server response time and request graphs. Using a Custom Dashboard and the Recharts library, we integrated live widgets in a couple of days. A typical dashboard costs $2,000–$5,000 and can save thousands in manual reporting each year. For one client, this reduced report generation time from 3 hours to 15 minutes—a 12x improvement—saving approximately $50,000 annually in labor costs.
What problems do custom Views solve?
- Complex navigation — when there are many lists and they need to be grouped by department, custom Navigation allows creating a hierarchical menu with separators and custom links.
- Non-standard analytics — if you need to show aggregated data from different models, a Custom Dashboard with Apollo Client and GraphQL queries can easily display any metrics.
- Bulk operations — for example, publish all drafts with one button. This is implemented via
extendGraphqlSchemaand a custom UI component on the list page.
On one project, we integrated a custom dashboard that reduced report generation time by a factor of 12 compared to manual processes. Compared to building a separate analytics app, our custom View approach is 3x faster to implement and 2x more cost-effective.
How we implement custom Views
Stack: React 18, TypeScript, Keystone-6/core, Apollo Client. For styling we use Tailwind CSS—fast and no conflicts with Keystone UI components. Dashboards are built with Recharts or Chart.js; if needed, we embed Metabase iframes. All components are wrapped in PageContainer or NavigationContainer for a consistent style.
Example of creating custom navigation:
// keystone.ts ui: { getAdditionalFiles: async () => [ { mode: 'write', src: ` export { default } from '../admin/navigation'; `, outputPath: 'admin/config.js', }, ], }, // admin/navigation.tsx import { NavigationContainer, NavItem, ListNavItems } from '@keystone-6/core/admin-ui/components'; import type { NavigationProps } from '@keystone-6/core/admin-ui/components'; export default function CustomNavigation({ authenticatedItem, lists }: NavigationProps) { return ( <NavigationContainer authenticatedItem={authenticatedItem}> <NavItem href="/">Dashboard</NavItem> <div className="mt-4 mb-1 px-3 text-xs font-semibold text-gray-400 uppercase"> Content </div> <ListNavItems lists={lists} include={['Post', 'Category', 'Tag']} /> <div className="mt-4 mb-1 px-3 text-xs font-semibold text-gray-400 uppercase"> Users </div> <ListNavItems lists={lists} include={['User', 'Role']} /> <NavItem href="/admin/analytics">Analytics</NavItem> </NavigationContainer> ); } Process
- Analysis — study interface requirements, identify bottlenecks in the standard admin panel.
- Design — develop the structure of custom Views, approve mockups.
- Implementation — write React components using Keystone SDK, test on test data.
- Testing — check compatibility with your lists and fields, load testing of dashboards.
- Deployment — deploy to production, configure CI/CD.
What's included
- Source code of all custom components with comments.
- Documentation on architecture and extension points.
- Instructions for updating Keystone without losing customizations.
- Code warranty (3 months) and support if needed.
- Access to the repository with change history.
Development timeline and cost
| Task | Time | Cost estimate |
|---|---|---|
| Custom Navigation | 0.5 day | $500–$1,000 |
| Custom Dashboard with statistics | 1–2 days | $1,000–$3,000 |
| Custom Page (analytics, import) | 1–3 days | $1,500–$5,000 |
| Full Admin UI redesign | 1–2 weeks | $5,000–$15,000 |
Contact us for a precise estimate of your project—we will calculate timelines and cost individually.
Results of customization on real projects
| Customization type | Achieved effect |
|---|---|
| Custom Dashboard with sales analytics | Report load time reduced by 60% (from 5 seconds to 2) |
| Custom Navigation for CMS | Simplified navigation for 20+ lists, reduced search time by 40% |
Overriding Item View
Sometimes it's necessary to replace the standard item editing page. For this, use a custom page with route /admin/{list}/{id}. This is more complex but allows implementing unique forms. Adding custom actions (e.g., "Publish All" button) is done via extendGraphqlSchema and a custom UI component on the list page. All custom Views integrate easily with your existing project. Request a consultation, and we will choose the best solution.
Technical tip: how to avoid style conflicts
When customizing Admin UI, use CSS modules or Tailwind with prefixes to ensure custom component styles do not override the standard ones. Also, it's recommended to import existing Keystone UI components to maintain a consistent visual style.According to KeystoneJS official documentation KeystoneJS Custom Admin UI, custom Views allow full control over the admin interface without losing compatibility with future updates.







