Practical guide / 3D web and commerce
Mobile 3D viewers: limits, formats and performance checks
A model can run well on your computer and load too slowly on a customer's phone. Mobile delivery requires checking the file, memory, viewer and buying journey.
Before optimising a mobile 3D viewer, identify where the file will open. An embedded web component and an augmented-reality experience may use different viewers and loading paths.
A GLB working on your computer does not establish that the complete journey works on Android or iPhone.
Upload limits are not delivery targets
Shopify accepts much larger 3D uploads than you would normally want shoppers to download when opening a product page. Its documentation lists a 500 MB upload maximum and optimisation for models above 15 MB.
That ingestion capacity is not a user-experience budget. Inspect the final file served and test its behaviour on real devices.
Scene Viewer distinguishes types of limits
Google's documentation separates performance recommendations from restrictions:
| Aspect | Scene Viewer reference |
|---|---|
| File | 10 MB recommended; validator documents a 15 MB maximum |
| Triangles | 100,000 recommended limit; 30,000–50,000 suggested ideal range |
| Materials | 10 recommended |
| Textures | 2048 × 2048 reference |
| Skeleton | Hard limits of 254 joints and four weights per vertex |
| UVs | Hard limit of one set per mesh |
These belong to that destination, not every mobile 3D experience. Use its validator and check which extensions the chosen path supports.
Test web and AR independently
model-viewer supports routes including WebXR, Scene Viewer and Quick Look. Its automatic USDZ conversion has documented limitations, including animations. If a feature matters to the delivery, inspect the file actually opened by each route.
Safari 27 brings the <model> element to additional Apple platforms. It is worth evaluating but does not by itself replace a cross-browser strategy. See our guide to 3D models in Safari.
Download size is not total memory
Compression can reduce transfer size without proportionately reducing display memory. An uncompressed 4096 × 4096 RGBA8 texture, for example, occupies 64 MiB before mipmaps. This calculation applies to that format, not every 4K texture.
Review map resolution, count and GPU format alongside geometry. Our polygon-budget guide explains the wider performance context.
A mobile acceptance test
Choose representative devices and test with an empty cache and a connection relevant to your shoppers.
- Measure when the first useful image appears and interaction becomes available.
- Rotate, zoom and change variants where applicable.
- Open AR, inspect scale and materials, then return to the page.
- Check that selection and cart behaviour remain correct.
- Test failed loads and devices without AR support.
Watch the whole page too. LCP, INP and CLS describe aspects of loading, responsiveness and visual stability. A good-looking viewer screenshot cannot establish the complete experience.
Keep buying available
Show a preview image, reserve the viewer's space and communicate loading. Avoid blocking the photographs, dimensions or controls needed to buy.
Agree on destinations, test devices and fallback behaviour before delivery. If you already have a failing file, tell us where it opens and what happens.
Sources
Reviewed on 20 September 2026.
- Shopify: product media types.
- Google: Scene Viewer.
- model-viewer: augmented reality.
- WebKit: Safari 27.0.
- Google: Web Vitals.
Checked on September 20, 2026