Actually, your answer to your question is not what you originally asked, the Vue instance is displayed in less than a second, and it is impossible to use any interceptors only to create a custom loader. The use of the setTimeout function is the only solution to this. But the component is ready in the DOM way before 3 seconds.
The best approach for this purpose is to use a loader component in which you will have setTimeout in the created hook, and after that time it will throw an event to the parent element. Therefore, inside the application, you only need to import the loader component itself, and when the event fires, change the internal logical property of the data to display another v-if component
source share