{"record":{"id":"0a7b861516874eea","repo":"withastro/astro","slug":"more-than-one-jsx-renderer-is-enabled-this-will-l-0a7b86","errorCode":null,"errorMessage":"More than one JSX renderer is enabled. This will lead to unexpected behavior unless you set the `include` or `exclude` option. See https://docs.astro.build/en/guides/integrations-guide/solid-js/#combining-multiple-jsx-frameworks for more information.","messagePattern":"More than one JSX renderer is enabled\\. This will lead to unexpected behavior unless you set the `include` or `exclude` option\\. See https://docs\\.astro\\.build/en/guides/integrations-guide/solid-js/#combining-multiple-jsx-frameworks for more information\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/integrations/solid/src/index.ts","lineNumber":124,"sourceCode":"\t\t\t\t});\n\n\t\t\t\taddRenderer(getContainerRendererImpl());\n\t\t\t\tupdateConfig({\n\t\t\t\t\tvite: getViteConfiguration(options, devtoolsPlugin, solidPackages.ssr.noExternal),\n\t\t\t\t});\n\n\t\t\t\tif (devtoolsPlugin) {\n\t\t\t\t\tinjectScript('page', 'import \"solid-devtools\";');\n\t\t\t\t}\n\t\t\t},\n\t\t\t'astro:config:done': ({ logger, config }) => {\n\t\t\t\tconst knownJsxRenderers = ['@astrojs/react', '@astrojs/preact', '@astrojs/solid-js'];\n\t\t\t\tconst enabledKnownJsxRenderers = config.integrations.filter((renderer) =>\n\t\t\t\t\tknownJsxRenderers.includes(renderer.name),\n\t\t\t\t);\n\n\t\t\t\tif (enabledKnownJsxRenderers.length > 1 && !options.include && !options.exclude) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'More than one JSX renderer is enabled. This will lead to unexpected behavior unless you set the `include` or `exclude` option. See https://docs.astro.build/en/guides/integrations-guide/solid-js/#combining-multiple-jsx-frameworks for more information.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction configEnvironmentPlugin(solidNoExternal: string[]): Plugin {\n\treturn {\n\t\tname: '@astrojs/solid:config-environment',\n\t\tconfigEnvironment(environmentName) {\n\t\t\tif (environmentName === 'client') {\n\t\t\t\treturn {\n\t\t\t\t\toptimizeDeps: {\n\t\t\t\t\t\tinclude: ['@astrojs/solid-js/client.js'],\n\t\t\t\t\t\texclude: ['@astrojs/solid-js/server.js'],\n\t\t\t\t\t},","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/withastro/astro/blob/52e6c34790cc8ac4e69e6135ace06049867e5c4a/packages/integrations/solid/src/index.ts#L106-L142","documentation":"The Solid integration performs the same astro:config:done cross-check as React/Preact: it scans config.integrations for known JSX renderers and warns when two or more are enabled while options.include/options.exclude were not passed to solid(). Without disjoint file scopes, Vite's JSX transform is ambiguous and components from one framework get compiled with another's runtime.","triggerScenarios":" astro.config.mjs registers solid() alongside react() and/or preact(), and the solid() call passes no include/exclude option. enabledKnownJsxRenderers.length > 1 triggers the warning at config completion.","commonSituations":" Mixing a Solid component library into a React Astro site during incremental migration; templates that install multiple framework integrations for demos; forgetting that solid-js components need their own glob when React is also present.","solutions":["Give each JSX integration disjoint globs, e.g. solid({ include: ['**/solid/**'] }) and react({ include: ['**/react/**'] }).","Remove integrations for frameworks the project does not use.","Restart dev/build to re-run the config hook and verify the warning is gone."],"exampleFix":"// before\nexport default defineConfig({\n  integrations: [solid(), react()],\n});\n\n// after\nexport default defineConfig({\n  integrations: [\n    solid({ include: ['**/solid/**'], exclude: ['**/react/**'] }),\n    react({ include: ['**/react/**'], exclude: ['**/solid/**'] }),\n  ],\n});","handlingStrategy":"validation","validationCode":"const jsxIntegrations = ['@astrojs/react', '@astrojs/preact', '@astrojs/solid-js'];\nconst enabled = config.integrations.filter((i) => jsxIntegrations.includes(i.name));\nif (enabled.length > 1 && !(options.include || options.exclude)) {\n  throw new Error('Multiple JSX renderers require include/exclude scopes on solid()');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Scope Solid components to their own glob when any other JSX framework is present.","Keep per-framework directories so include patterns stay maintainable.","Remove renderer integrations for frameworks no longer in use."],"tags":["solid","jsx","multiple-frameworks","config","integrations"],"backgroundTag":"conflicting-jsx-renderers","analyzedSha":"52e6c34790cc8ac4e69e6135ace06049867e5c4a","analyzedAt":"2026-08-18T18:48:03.901Z","contentChangedAt":"2026-08-18T18:48:03.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}