From 10421465df5100f3fd012efcb5f9f0dcd277d2e4 Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Tue, 18 Aug 2026 19:16:53 +0530 Subject: [PATCH] fix(styles): stop scanning every component for utility sources Component discovery is not utility-source discovery: scanning all built-in and plugin component directories made Tailwind/Iconify generate rules for components the app never renders. Packages that need scanning opt in through styles.source. Pre-existing working-tree change, committed as-is rather than authored here. Co-Authored-By: Claude Opus 5 --- packages/cli/src/build.ts | 12 ++++++++---- packages/dev-server/src/index.ts | 7 +++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts index 218a14bc..2246584b 100644 --- a/packages/cli/src/build.ts +++ b/packages/cli/src/build.ts @@ -620,10 +620,14 @@ export async function runBuild(appRoot: string): Promise { appDir, appRoot: root, mode: "production", - sources: [ - ...componentDirs, - ...pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), - ], + // Component discovery is not style discovery. Built-in and plugin + // components own their CSS; scanning every available component makes + // Tailwind/Iconify generate rules for packages and components the app + // never renders. Packages that intentionally use app utilities opt in + // through an explicit styles.source contribution. + sources: pluginContributions.styles.flatMap((style) => + style.source ? [style.source] : [], + ), entries: pluginContributions.styles.flatMap((style) => (style.entry ? [style.entry] : [])), }, config.styles, diff --git a/packages/dev-server/src/index.ts b/packages/dev-server/src/index.ts index dc8ef39c..2a06ee6b 100644 --- a/packages/dev-server/src/index.ts +++ b/packages/dev-server/src/index.ts @@ -440,10 +440,9 @@ export async function startServer(opts: ServeOptions): Promise { config: opts.stylesConfig, appRoot, publicDir: join(appRoot, "public"), - sources: [ - ...componentDirs, - ...pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), - ], + // Component discovery is separate from utility-source discovery. + // Packages that need Tailwind scanning opt in via styles.source. + sources: pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), entries: pluginContributions.styles.flatMap((style) => (style.entry ? [style.entry] : [])), }, theme,