@modelcontextprotocol/ext-apps consumers ship ~140K of unused zod v4 locale files in browser bundles
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- rollup, typescript, vite
- Área
- build-system, frontend, performance
Línea de trabajo
Comienza con la reproducción mínima en les2/mcp-ext-apps-zod-locale-bloat y ejecuta npm install && npm run compare para observar la diferencia del bundle. Sigue la ruta de importación de zod del SDK y cómo Vite o Rollup gestiona la reexportación de los locales. La tarea estará terminada cuando los consumidores del navegador ya no incluyan archivos de locales de zod no utilizados sin requerir un workaround del lado del consumidor.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I discovered while developing an mcp-app using the sdk (client side only) that the bundle contained all of zod's locales because of a start import that prevented vite's / rolldown's tree-shaking from working.
I was able to work around this by developing (with the help of AI) a little vite plugin to strip it:
// Zod v4 re-exports every locale via `export * as locales` from its classic
// entrypoint, which defeats tree-shaking when the MCP SDK imports `* as z from
// 'zod/v4'`. Replace the locales index with an `en`-only stub so the namespace
// still exists but the other ~50 locale files never enter the graph.
const zodLocalesEnOnly = {
name: "zod-locales-en-only",
enforce: "pre",
load(id) {
if (/[\\/]zod[\\/](?:v4[\\/])?locales[\\/]index\.js$/.test(id)) {
return 'export { default as en } from "./en.js";';
}
return null;
},
};
See https://github.com/les2/mcp-ext-apps-zod-locale-bloat for a minimal demonstration of the issue.
Below is an AI issue description:
@modelcontextprotocol/ext-apps consumers ship ~140K of unused zod v4 locale files in browser bundles
Summary
Any browser app that depends on @modelcontextprotocol/ext-apps (and therefore on @modelcontextprotocol/sdk) bundles all ~50 zod v4 locale files — Spanish, French, German, Japanese, Chinese, Korean, Russian, etc. — because of a tree-shaking dead-end in the transitive zod chain. On our widget (Ember + Vite + Rollup) this was ~140K of dead weight, ~20% of the final bundle.
The end result is that every browser bundle currently ships translated error strings like 数値過大:期望, Trop court, demasiado corto, zu kurz — none of which are ever displayed, since the SDK only uses zod's English error messages at runtime.
A minimal reproduction is available at https://github.com/les2/mcp-ext-apps-zod-locale-bloat — npm install && npm run compare builds twice (without and with the workaround) and prints the size delta.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.9k
- Forks
- 387
- Merge medio
- 2 h 54 min
- PR fusionados (30 d)
- 7
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de modelcontextprotocol/ext-apps
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
modelcontextprotocol/ext-apps#786 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
modelcontextprotocol/ext-apps#767 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
modelcontextprotocol/ext-apps#742 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
modelcontextprotocol/ext-apps#711 ·
-
Spec: Deprecate Sampling Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
modelcontextprotocol/ext-apps#706 ·
Todos los issues de modelcontextprotocol/ext-apps
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100