Changelog
Release notes and version history for BelowJS.
Latest Release:
npm install belowjs@1.4.1
Particle density control and animation example improvements.
- New
setDensity(multiplier) method on DiveParticles to dynamically adjust particle density (0-2x range)
- Improved Animation example: demo model link, mobile UI polish
Animation example and experimental AR support.
Animation Example
New animation example for producing shipwreck visualisations in
seconds (see guide). Designed to mirror our
Blender workflow, this demonstrates advanced features built on top of the core viewer:
- New Timeline-based keyframe animation with easing
- New Orbit and flight mode navigation
- New Controls for the custom dive lighting system
- New Local save and load of keyframes and settings
- New Video export as MP4s
AR Support (Experimental)
Passthrough AR viewing with natural-feeling hand tracking and the same studio lighting system:
- New Hand tracking gestures: single-hand movement,
two-hand rotate and scale with logarithmic scaling and inertia
- New Quest 2/3 optimisation with automatic device
detection
- New
setInteractionEnabled() method for
shared spaces development
Note: AR support is experimental and being co-developed with a networked viewer.
Fixed
- Fixed VR audio assets now copied losslessly in docs
examples
Desktop Quest Link streaming support.
- New Desktop Quest Link streaming support—load large
scenes with the drag-and-drop viewer (examples/dragdrop).
Safari/iOS memory fixes and platform-specific loader tuning for the iOS 26 GPU crash.
- Improved Draco and KTX2 worker pools are limited
to a single thread on iOS to keep WebKit memory stable on iOS 26 devices.
- Improved Shared KTX2 detection now scopes per
platform so desktop browsers keep their parallelism.
- Fixed Cached GLTF scenes, textures, and parser
registries are released immediately after model swaps, preventing Safari desktop/iOS 26
crashes.
- Fixed Abort listeners and converted materials are
disposed right after loads so cancelled requests can’t leak GPU resources and trip the iOS
26 GPU watchdog.
New screenshot capture capability and example updates.
- New Screenshot capture button in the viewer UI
- New
enableScreenshot config option on
ModelViewer
- New
takeScreenshot() method to
programmatically save a PNG
- Improved Renderer now uses
preserveDrawingBuffer to support screenshots
- Improved Examples updated to include
enableScreenshot: true and CDN references bumped to 1.1.0
🌊 First stable release of BelowJS! Production-ready underwater VR viewer with
comprehensive documentation and full feature set.
Now Live in Production: BelowJS 1.0.0 is powering WreckSploration VR - the first production implementation
featuring shipwreck exploration in virtual reality.
Release Highlights
- Stable API: Production-ready with comprehensive documentation
- WebXR Support: Full VR functionality optimized for Meta Quest 3
- Measurement Tools: Desktop and VR measurement systems
- Dive Mode: Underwater lighting and particle effects
- Multiple Examples: Basic, drag-drop, and embeddable viewers
Technical Details
- Built on Three.js with modern ES modules
- Modular architecture with clean separation of concerns
- Comprehensive documentation and examples
- Production-ready with thorough testing
Documentation improvements, implementation showcases, and production readiness updates.
- Fixed Info panel not showing properly by adding
below-panel class
- Improved Documentation structure and navigation
- Added Comprehensive guides for development workflows
- Added WreckSploration VR implementation showcase
Loading improvements and documentation enhancements.
- Fixed Loading spinner percentage clamped to maximum
100%
- Fixed Loading spinner display issues in light mode
- Improved Example documentation clarity and
structure
Key improvements to VR model switching and loading experience.
- Fixed VR locomotion reset bug when switching models
- New VR loading indicator for model changes
- Improved Audio system robustness
- New Complete static documentation site
First release candidate for BelowJS 1.0! This version is production-ready and available on NPM.
- New Complete underwater VR viewer with dive mode and
lighting effects
- New WebXR support for immersive VR experiences on
compatible headsets
- New Measurement tools for archaeological documentation
- New Multi-model support with dropdown switching
- New Customisable lighting and dive environment
- New Touch and keyboard controls for accessibility
- New Drag-and-drop model loading
- New Embed viewer for iframe integration
- New Complete documentation and examples
- Improved Bundle size optimised to 419KB
- Improved Performance for large photogrammetry
models
- Improved Mobile device compatibility
Breaking Changes: This is the first public release, so no breaking changes from
previous versions.
Known Issues: None currently reported. Please file issues on GitHub.
Extensive development and testing phase for underwater photogrammetry visualization:
- Core Three.js integration and scene management
- WebXR implementation for VR headset support
- Maritime archaeology measurement tools development
- Dive mode with realistic underwater lighting
- Performance optimisation for large 3D models
- Testing with real underwater photogrammetry models
- Documentation and example creation