/bubble-tutorials

How to add a 3D model viewer to a Bubble app

Learn how to add an interactive 3D model viewer to your Bubble app with simple steps to boost engagement and showcase products effectively.

Matt Graham, CEO of Rapid Developers

Book a call with an Expert

Starting a new venture? Need to upgrade your web or mobile app? RapidDev builds Bubble apps with your growth in mind.

Book a Free Consultation

How to add a 3D model viewer to a Bubble app

You add a 3D model viewer to a Bubble app by embedding an existing web‑based viewer (like Sketchfab or a self‑hosted Three.js viewer) inside an HTML element using an iframe. Bubble does not have a native 3D viewer element, so the reliable method is to embed a viewer that already handles rendering. You upload your 3D file, get its viewer URL (or hosting URL), and place it inside an HTML element.

 

Two common ways that actually work

 

The two beginner‑friendly, real-world approaches are:

  • Use Sketchfab (easiest): Upload your 3D file to sketchfab.com, set it to public or embed‑allowed, copy the embed iframe, place it in Bubble’s HTML element.
  • Use your own viewer hosted elsewhere: Host a simple Three.js viewer (HTML + JS) on a static hosting service (Netlify, GitHub Pages, etc.) and embed it in Bubble via iframe.

Both work because Bubble supports iframes through the HTML element.

 

How to implement in Bubble

 

  • Drag an HTML element onto the page.
  • Paste a working iframe. For Sketchfab it looks like this:
<iframe 
    width="100%" 
    height="500" 
    src="https://sketchfab.com/models/XXXXXX/embed" 
    frameborder="0" 
    allow="autoplay; fullscreen; xr" 
    xr-spatial-tracking 
></iframe>
  • Replace the src with your model’s actual embed URL.
  • If you store a model URL in your Bubble database, you can dynamically insert it into the HTML element using “Insert dynamic data”.
  • Make sure Privacy Rules allow the current user to access the field that stores the URL, or the iframe won’t load when the user is not logged in.

 

Hosting your own viewer

 

If you need a custom viewer (controls, branding), host a small HTML+JS viewer outside Bubble and embed it the same way. Your iframe would simply point to your hosting URL.

<iframe 
    width="100%" 
    height="500" 
    src="https://yourviewerhost.com/viewer.html?model=https://yourcdn.com/model.glb">
</iframe>

The viewer handles WebGL and rendering; Bubble only displays it.

 

Important practical notes

 

  • Bubble’s HTML element fully supports iframes, so this method is stable.
  • You cannot run Three.js directly inside Bubble’s HTML element because Bubble strips inline scripts. That’s why hosting the viewer externally is required.
  • Use Bubble’s file uploader if you want to store 3D files in your DB, then pass the file’s URL to your viewer.

Explore More Valuable No-Code Resources

How to integrate Bubble.io with Git?

Learn how to seamlessly integrate Bubble.io with Git through our comprehensive step-by-step guide. Perfect for beginners and professionals.

Explore

How to integrate Bubble.io with Reddit Ads?

Learn how to seamlessly integrate Bubble.io with Reddit Ads using our easy step-by-step guide. Boost your ad management today!

Explore

How to integrate Bubble.io with AWS S3?

Explore our step-by-step guide on integrating Bubble.io with AWS S3, making your app development process more efficient and secure.

Explore

How to integrate Bubble.io with Lucidchart?

Follow our step-by-step guide to seamlessly integrate Bubble.io with Lucidchart, enhancing your workflow & productivity.

Explore

How to integrate Bubble.io with Kentico?

Learn how to seamlessly integrate Bubble.io and Kentico with our comprehensive, easy to follow step-by-step guide.

Explore

How to integrate Bubble.io with Box?

Discover easy-to-follow steps for integrating Bubble.io with Box. Boost your workflow and secure your files seamlessly today.

Explore

Stuck in Bubble.io? We’re here to help!

Fix broken workflows | Optimize logic | Boost performance | Scale with confidence

4.9
Clutch rating 🌟
600+
Happy partners
17+
Countries served
190+
Team members

By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.

Cookie preferences