shadcn-ui/ui · warning
- ${file}${symbol}: ${issue.reason}
Error message
- ${file}${symbol}: ${issue.reason} What it means
This is the per-item detail line printed under the manual-review header by printUnsupportedIssues: a relative file path, an optional symbol name in parentheses, and the reason the transformer skipped it. Like error 8 it is a logged warning line, one per unsupported CnMigrationIssue, guiding the developer to the exact code to migrate by hand.
Source
Thrown at packages/shadcn/src/migrations/cn/index.ts:185
const match = version.match(/(?:^|[^0-9])(\d+)(?:\.|$)/)
return match ? Number(match[1]) : null
}
function printUnsupportedIssues(issues: CnMigrationIssue[], cwd: string) {
if (!issues.length) {
return
}
logger.break()
logger.warn(
`Manual review required for ${issues.length} item${
issues.length === 1 ? "" : "s"
}:`
)
for (const issue of issues) {
const file = issue.file ? path.relative(cwd, issue.file) : "unknown file"
const symbol = issue.symbol ? ` (${issue.symbol})` : ""
logger.warn(` - ${file}${symbol}: ${issue.reason}`)
}
}
View on GitHub (pinned to 5c7072da67)
Solutions
- Open the reported file at the reported symbol and rewrite the usage to use the new cn package manually.
- Address the specific reason given (e.g. replace a custom twMerge config with the supported setup).
- After fixing, rerun the migration or its dry check and confirm the item disappears from the list.
Defensive patterns
Strategy: try-catch
Try / catch
// parse each ' - <file>(<symbol>): <reason>' warning line and open tickets
const items = cliOutput.match(/^\s{2}- .+$/gm) ?? []
for (const item of items) logger.warn(`Needs manual migration: ${item.trim()}`) Prevention
- Fix each reported file/symbol directly using the printed reason.
- Standardize imports of clsx/tailwind-merge so the transformer recognizes them.
- Rerun the migration after manual fixes to confirm the list is empty.
When it happens
Trigger: Emitted for every issue in the unsupported list of a migrateCn run; `unknown file` appears if issue.file is falsy, and the symbol segment is omitted when issue.symbol is undefined.
Common situations: Locating which helper or import in which file could not be auto-migrated — e.g. `src/lib/utils.ts (cn): custom twMerge configuration not supported`.
Related errors
- Manual review required for ${issues.length} item${ iss
- No files found matching: ${options.path}
- We could not find a valid `ui` path in your `components.json
- Something went wrong fetching the registry icons.
- Unknown icon library: ${libraryName}. Available libraries: $
AI-assisted analysis of shadcn-ui/ui@5c7072da67 (2026-09-07).
Data as JSON: /api/errors/7557315c054745ff.
Report an issue: GitHub.