Нашёл решение, хотя и не до конца вникал как оно работает, думаю кому-то может пригодиться. Но отмечу что использование множественных компонентов поверх blade шаблона это ситуативное решение, не всегда стоит его придерживаться, и уж точно не регистрировать все компоненты на каждой странице.
нужно заменить
import {createApp} from 'vue'
на
import {createApp} from 'vue/dist/vue.esm-bundler'
в итоге получим
import {createApp} from 'vue/dist/vue.esm-bundler'
import App from './components/App.vue';
const app = createApp({});
app.component('App', App);
app.mount("#app");
контент внутри #app сохраняется,
<App></App>
успешно отрисовывается как компонент.