# 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`