IMS

IMS - Immersive Media Spots

Simple web components that turn static pages into immersive, interactive media experiences. Drop a single HTML tag — get a full-featured 360° spinner, panorama viewer, image comparison slider, or video player.

GitHub Docs npm

The Limitations of Static Images and Video

The most familiar types of visual media content on the internet are images and videos. While formats like GIF animations provide some motion, all of these are natively supported by modern web browsers. However, are these formats sufficient for a comprehensive and engaging presentation of everything we want to share with our users?

Let’s explore scenarios where we require something more extensive—and how IMS solves them.

The Hypermedia Viewer: A Killer Feature

Before diving into individual widget types, it's essential to highlight the killer feature of IMS: Hypermedia Navigation.

By combining the universal <ims-viewer> with <ims-hotspots>, you can link different media experiences together into a single, seamless flow. This means you can let users explore a 3D product, click a hotspot to open a detailed image gallery, and then transition smoothly to a 360° panoramic interior—all without writing complex routing logic.

<ims-viewer
  src-data="./exterior-spin.json"
  url-template="./{{imsType}}/index.js"
  hotspots="./exterior-hotspots.json">
</ims-viewer>

Hotspots transform disconnected media assets into immersive, interconnected storytelling. On top of that, ims-viewer provides built-in version control — each data source can pin the exact library release it was authored with, so previously published pages keep working even as the project evolves.

Often, when representing a subject, we require a sequenced set of images organized by context. Placing them one after another consumes vertical space, discouraging users from scrolling.

We offer a sleek, touch-friendly gallery widget with quick navigation, looping, and fullscreen modes:

Diff

When the essence of the demonstration lies in showcasing before and after states, there's nothing quite like utilizing a specialized widget:

This setup is perfect for:

  • Different materials or color variations
  • Seasonal and weather variations
  • Before and after completed work (e.g. restoration)
  • Changes over time
  • UI design options and screenshots

Spinner

The most comprehensive representation of an object is viewing it from all angles:

With frame-by-frame rotation, drag interaction, and autoplay, ims-spinner is ideal for online stores, antiques, scientific artifacts, and scenarios where creating full 3D models is technically complex or too expensive compared to photography.

Pano

Spherical panoramic images drastically expand the presentation of spaces:

Utilizing Three.js beneath the surface, ims-pano provides inertia-based panning, zoom, and auto-rotation suited for real estate, interior design, and 360-degree action camera footage.

Video

Classic video content remains a cornerstone of any full-fledged presentation. Rather than treating it as a standalone embed, we integrate it into the wider narrative alongside other media types — making video just another scene in your hypermedia story:

Our ims-video widget supports HLS adaptive streaming, multiple subtitle tracks, and quality switching — all delivered through the same minimal HTML tag interface as every other IMS widget.

Audio

We bring sound into the same interactive ecosystem. The ims-audio widget renders a real-time waveform visualization powered by the Web Audio API, giving listeners a visual sense of the track as it plays.

3D Model

For products and objects that demand full spatial exploration, we provide ims-model — a 3D viewer for GLTF/GLB assets with orbit controls, auto-rotation, and lighting presets, all built on Three.js.

Map

When your content has a geographic dimension, ims-map delivers an interactive map with custom marker overlays. Markers can trigger navigation to other IMS scenes, opening external links, or calling internal widget APIs — making it a powerful spatial entry point for hypermedia stories.

Why IMS? Core Features

All widgets share a universal architecture that unlocks powerful out-of-the-box capabilities:

  • One tag, one widget: <ims-viewer src-data="data.json"> dynamically imports exactly what it needs to render itself.
  • Universal compatibility: Works effortlessly in any environment (Vanilla HTML, React, Vue, Angular, Svelte) — anything that renders DOM.
  • Smart Loading: Adaptive resolution based on viewport and DPI, lazy initialization via IntersectionObserver.
  • Version Pinning: We protect backward-compatibility down to the exact library version right from your source JSON payload, ensuring long-term stability.
  • Mobile First: Touch gestures, responsive sizing, and native Fullscreen API integration — robust on all mobile devices.
  • Deep Customization: Full CSS theming via custom properties. No framework lock-in.

IMS is supported optimally across all popular browsers, powered by the minimal execution footprint of Symbiote.js.

IMS is released under the MIT license. You are completely free to deploy the project code, modify it for your setups, or collaborate with us by sending a PR!

We welcome any feedback and stars on GitHub.

npm GitHub

CIT Integration

You can utilize the IMS library as an addition and integral component of our tool for cloud media asset management:

Cloud Images Toolkit
11.12.2025
JSDA is very simple
Why JSDA is the best way to build web apps
30.07.2025
AGI: Three Parts
Let's talk about it before singularity
14.12.2024
Web Images: The Ultimate Solution
How to manage and publish your web media like a pro?
14.10.2024
AUTOBOX v1
History of equipment creation
14.10.2024
ComplexScan
Hardware development is always interesting
7.10.2024
PhotoPizza
From the idea to the Open Source DIY Project
28.09.2024
It was really possible?
Symbiote.js as an answer to many questions
17.09.2024
Smart HTML-tags
Simple recipe with the Artificial Intelligence
26.08.2024
AI as a Platform
New risk for our jobs or new opportunities?
10.05.2024
The path of Full Stack
How to be efficient in multiple development areas?
25.01.2024
Symbiote VS Lit
David and Goliath: differences, pros and cons...
18.01.2024
Symbiote.js 2.x
The new major version is released. Let's see what's new...
01.01.2024
Japanese Netsuke in 3D
History + Art + Technology: What's the result?
RND-PRO.com © 2026