The warning [Vue warn]: Component <Anonymous> is missing template or render function. typically means that Vue is trying to render a component, but it doesn't know how—either because the component isn't registered properly, or it's being treated as a Vue component when it's actually a custom element (web component).
From your config, you are correctly marking <spline-viewer> as a custom element using compilerOptions.isCustomElement. This tells Vue not to treat it as a Vue component, which is the right approach for web components.
However, regarding your plugin registration:
-
In Nuxt 3, plugins placed in the plugins/ directory are auto-registered. You do not need to add them to the plugins array in nuxt.config unless you want to customize their order or include plugins from subdirectories that aren't auto-scanned. If your plugin is at the top level of plugins/, you can remove it from the plugins array for simplicity, but including it is not harmful if you want to control order or are using a subdirectory structure. See the Nuxt plugins documentation.
-
Make sure your spline-viewer.client.ts plugin is actually registering or importing the web component if needed. If the plugin file is empty or not importing/defining the custom element, Vue will not know how to render it, leading to the warning you see.