{"record":{"id":"7eca2cb77dd358f0","repo":"shadcn-ui/ui","slug":"missing-preset-for-only-use-shadcn-apply-pres","errorCode":null,"errorMessage":"Missing preset for --only.\nUse: shadcn apply <preset> --only theme,font.","messagePattern":"Missing preset for --only\\.\nUse: shadcn apply <preset> --only theme,font\\.","errorType":"validation","errorClass":"ApplyOnlyError","httpStatus":null,"severity":"error","filePath":"packages/shadcn/src/commands/apply.ts","lineNumber":369,"sourceCode":"        `Invalid value for --only: ${value}.`,\n        `Use one or more of: ${APPLY_ONLY_VALUES.join(\", \")}.`,\n        \"Example: shadcn apply <preset> --only theme,font.\",\n      ].join(\"\\n\")\n    )\n  }\n\n  return Array.from(new Set(parts.map((part) => aliases[part])))\n}\n\nexport function validateApplyOnlyPreset(options: {\n  preset?: string\n  only?: ApplyOnlyValue[]\n}) {\n  if (!options.only || options.preset) {\n    return\n  }\n\n  throw new ApplyOnlyError(\n    [\n      \"Missing preset for --only.\",\n      \"Use: shadcn apply <preset> --only theme,font.\",\n    ].join(\"\\n\")\n  )\n}\n\nfunction resolveApplyRegistryBaseConfig(options: {\n  registryBaseConfig: Record<string, unknown> | undefined\n  existingConfig: Record<string, unknown>\n  only: ApplyOnlyValue[] | undefined\n}) {\n  if (!options.only || options.only.includes(\"theme\")) {\n    return options.registryBaseConfig\n  }\n\n  const existingTailwind =\n    typeof options.existingConfig.tailwind === \"object\" &&","sourceCodeStart":351,"sourceCodeEnd":387,"githubUrl":"https://github.com/shadcn-ui/ui/blob/efac5987074af84ece57c367c6dd83387b967022/packages/shadcn/src/commands/apply.ts#L351-L387","documentation":"validateApplyOnlyPreset() throws ApplyOnlyError when --only is set but no preset was supplied (positionally or via --preset). Applying a partial preset (only theme and/or font) still requires knowing which preset to read those parts from.","triggerScenarios":"`shadcn apply --only theme` with no preset argument; setting only without a preset in a wrapper; assuming --only infers a default preset.","commonSituations":"Forgetting the preset positional; assuming a default preset applies.","solutions":["Provide a preset: `shadcn apply <preset> --only theme`.","Drop --only if you want the full default flow."],"exampleFix":"# before\nshadcn apply --only theme\n\n# after\nshadcn apply <preset> --only theme","handlingStrategy":"validation","validationCode":"if (options.only && !options.preset) {\n  console.error(\"Missing preset for --only. Use: shadcn apply <preset> --only theme,font\")\n  process.exit(1)\n}","typeGuard":"const hasPresetForOnly = (o: { only?: unknown; preset?: string }): boolean =>\n  !o.only || Boolean(o.preset)","tryCatchPattern":"try {\n  validateApplyOnlyPreset(options)\n} catch (e) {\n  if (e instanceof ApplyOnlyError) {\n    // prompt for a preset\n  } else throw e\n}","preventionTips":["Require a preset whenever --only is used.","Validate the preset/only pairing before running apply."],"tags":["cli","validation","apply","user-input"],"backgroundTag":null,"analyzedSha":"efac5987074af84ece57c367c6dd83387b967022","analyzedAt":"2026-08-12T05:00:50.218Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}