Hey @Canuckaholic, @ancheetah has been out this week and I have been stepping in to help out, apologies for delay on my part!
So the double call is actually expected in this instance.
Essentially, the builder.get() call is intended to happen on the server and will pass the content to your page without any JS (hence the lack of images and JS interactivity)
On the frontend, the will rehydrate with the lazy loaded images and your JS interactivity. If separated on server and client correctly, it would only result in a single call in each environment.
If you are ONLY looking to use client-rendered content and limit to a single call you can just remove the builder.get() and on your frontend use:
<script async src="https://cdn.builder.io/js/webcomponents"></script>
...
<builder-component
model="page"
api-key="YOUR_API_KEY"
></builder-component>
This won’t be server rendered, but will only have the single call and load all your content, HTML and JS. The code above is selecting your top page content, but if you want to target a specific content entry, you can use the entry attribute as outlined here: Builder.io Webcomponents API - Builder.io.
Hope that helps and of course let us know if you have any other questions!