From f0233b8794af427f51e38651d736544c48d3e0d8 Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 14 Apr 2026 18:12:22 +0200 Subject: [PATCH] perf(shared-pkgs): declare sideEffects for aggressive tree-shaking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Following the shared-icons fix (d5cabed14), audit every workspace package's src/index.ts for top-level side effects and flag the ones that are safe to tree-shake: - Pure TS re-export barrels (types, theme, utils, llm, storage): "sideEffects": false — lets Vite prune entire submodules when a consumer only imports a subset of named exports. Matters most for shared-llm where the orchestrator/BYOK branch isn't needed on every route. - Packages that ship .svelte components (branding, ui, links): "sideEffects": ["**/*.svelte", "**/*.css"] — same tree-shaking benefit for TS modules, but keeps Svelte component CSS injection intact. The state-holding submodules (shared-ui drag-state/toast, shared-llm store, shared-links mutations) are still evaluated whenever their exports are referenced, so behaviour is unchanged — the flag only lets the bundler skip modules that aren't in the dependency graph at all. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/shared-branding/package.json | 4 ++++ packages/shared-links/package.json | 4 ++++ packages/shared-llm/package.json | 1 + packages/shared-storage/package.json | 1 + packages/shared-theme/package.json | 1 + packages/shared-types/package.json | 2 ++ packages/shared-ui/package.json | 4 ++++ packages/shared-utils/package.json | 1 + 8 files changed, 18 insertions(+) diff --git a/packages/shared-branding/package.json b/packages/shared-branding/package.json index 898af0254..ccf40ef12 100644 --- a/packages/shared-branding/package.json +++ b/packages/shared-branding/package.json @@ -3,6 +3,10 @@ "version": "1.0.0", "private": true, "type": "module", + "sideEffects": [ + "**/*.svelte", + "**/*.css" + ], "svelte": "./src/index.ts", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/shared-links/package.json b/packages/shared-links/package.json index f6e8ab60d..69598cefe 100644 --- a/packages/shared-links/package.json +++ b/packages/shared-links/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "private": true, "type": "module", + "sideEffects": [ + "**/*.svelte", + "**/*.css" + ], "main": "./src/index.ts", "types": "./src/index.ts", "exports": { diff --git a/packages/shared-llm/package.json b/packages/shared-llm/package.json index f8711d415..9b14f5ebb 100644 --- a/packages/shared-llm/package.json +++ b/packages/shared-llm/package.json @@ -2,6 +2,7 @@ "name": "@mana/shared-llm", "version": "2.0.0", "private": true, + "sideEffects": false, "description": "Tiered LLM orchestrator for Mana — routes tasks across rules / browser-edge / mana-server / cloud backends with explicit user-controlled privacy tiers", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/shared-storage/package.json b/packages/shared-storage/package.json index 25a414aa9..9c34df73a 100644 --- a/packages/shared-storage/package.json +++ b/packages/shared-storage/package.json @@ -2,6 +2,7 @@ "name": "@mana/shared-storage", "version": "0.1.0", "private": true, + "sideEffects": false, "description": "S3-compatible object storage client for Mana monorepo (MinIO)", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/shared-theme/package.json b/packages/shared-theme/package.json index f509724e8..bbc303109 100644 --- a/packages/shared-theme/package.json +++ b/packages/shared-theme/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "type": "module", + "sideEffects": false, "svelte": "./src/index.ts", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/shared-types/package.json b/packages/shared-types/package.json index 39b7c724e..1a952e558 100644 --- a/packages/shared-types/package.json +++ b/packages/shared-types/package.json @@ -2,6 +2,8 @@ "name": "@mana/shared-types", "version": "0.1.0", "private": true, + "type": "module", + "sideEffects": false, "description": "Shared TypeScript types for Mana monorepo", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json index 366512f0e..7be4b9b5b 100644 --- a/packages/shared-ui/package.json +++ b/packages/shared-ui/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "private": true, "type": "module", + "sideEffects": [ + "**/*.svelte", + "**/*.css" + ], "svelte": "./src/index.ts", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/shared-utils/package.json b/packages/shared-utils/package.json index d28f3e3ba..c2b8c48e4 100644 --- a/packages/shared-utils/package.json +++ b/packages/shared-utils/package.json @@ -2,6 +2,7 @@ "name": "@mana/shared-utils", "version": "0.1.0", "private": true, + "sideEffects": false, "description": "Shared utility functions for Mana monorepo", "main": "./src/index.ts", "types": "./src/index.ts",