@pweil You don’t need to move to a full-on SPA. But you can improve your set-up a little.
Instead of having different “apps” per page, yes, you can have a single app.js file but then lazily-load components only as and when they’re actually required on a page (rather than checking the page location).
So, given an app.js file like this:
import { createApp, defineAsyncComponent } from 'vue';
const app = createApp({});
app.component('foo-component', defineAsyncComponent(() => import('./components/Foo.vue')));
app.component('bar-component', defineAsyncComponent(() => import('./components/Bar.vue')));
app.component('baz-component', defineAsyncComponent(() => import('./components/Baz.vue')));
app.mount('#app');
Now if you call <foo-component></foo-component> in a Blade template, it’ll be loaded asynchronously.
Vue async component docs: https://vuejs.org/guide/components/async.html