# Bug Report: Custom Admin Views cause TypeError with path-to-regexp
## Summary
Custom admin views registered via `admin.components.views` cause a `TypeError: Missing parameter name at 5` error from path-to-regexp when used together with `@payloadcms/plugin-multi-tenant`.
## Environment
- **Payload Version:** 3.68.4
- **Next.js Version:** 15.5.9
- **React Version:** 19.2.3
- **Node.js Version:** 22.x
- **Database:** PostgreSQL 17.6
- **Plugin:** @payloadcms/plugin-multi-tenant 3.68.4
## Steps to Reproduce
1. Create a Payload 3.x project with the multi-tenant plugin
2. Add a custom view to the admin config:
```typescript
// payload.config.ts
export default buildConfig({
admin: {
user: Users.slug,
components: {
views: {
MyCustomView: {
Component: '@/components/admin/MyCustomView#MyCustomView',
path: '/my-custom-view',
},
},
},
},
plugins: [
multiTenantPlugin({
tenantsSlug: 'tenants',
collections: { /* ... */ },
}),
// other plugins...
],
})
```
3. Create a simple client component:
```tsx
// src/components/admin/MyCustomView.tsx
'use client'
import React from 'react'
export const MyCustomView: React.FC = () => {
return (
Custom View
)
}
export default MyCustomView
```
4. Build and run the project
5. Navigate to `/admin/my-custom-view`
## Expected Behavior
The custom view should render correctly.
## Actual Behavior
A server-side error occurs with the following message in production:
```
Uncaught Error: An error occurred in the Server Components render.
The specific message is omitted in production builds to avoid leaking sensitive details.
```
When running in development or checking server logs, the actual error is:
```
тип TypeError: Missing parameter name at 5
at (.next/server/chunks/XXXX.js:5:9989)
at (.next/server/chunks/XXXX.js:5:10666)
at g (.next/server/chunks/XXXX.js:5:11896)
at e (.next/server/chunks/824.js:96:517138)
at (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:31665)
at Array.find ()
at (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:31644)
at ax (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:34637) {
digest: '3964718924'
}
```
## Additional Context
### What works:
- Admin panel without custom views
- Components in `afterNavLinks` (e.g., TenantBreadcrumb)
- Components in `beforeNavLinks` (e.g., DashboardNavLink)
### What fails:
- ANY custom view registered via `admin.components.views`, even the simplest component without any dependencies
### Investigation findings:
- The error originates from `path-to-regexp` (version 6.3.0)
- The error occurs during route matching in `handleEndpoints.js`
- The error message "Missing parameter name at 5" suggests an invalid route pattern like `/:` is being generated somewhere
- This happens regardless of the view path used (tested with `/dashboard`, `/tenant-dashboard`, `/test-dashboard`)
- The issue appears to be triggered by the combination of custom views and the multi-tenant plugin
### Workaround
Disable custom views and use only `afterNavLinks`/`beforeNavLinks` components:
```typescript
admin: {
components: {
afterNavLinks: ['@/components/admin/TenantBreadcrumb#TenantBreadcrumb'],
// views disabled due to bug
},
},
```
## Related Plugins
- `@payloadcms/plugin-multi-tenant` (may be related to the conflict)
- `@payloadcms/plugin-redirects`
- `@payloadcms/plugin-seo`
- `@payloadcms/plugin-form-builder`
- `@payloadcms/plugin-nested-docs`