ViroReact v2.44.1 – AR Plane Detection & Selection Overhaul
With ViroReact 2.44.1, we're introducing a fully rewritten ViroARPlaneSelector, improved plane rendering accuracy, multi-alignment detection, exposed classification data, and major stability improvements across the entire plane lifecycle.
🚀 Major Features
ViroARPlaneSelector – Complete Rewrite
- Rendering now uses actual geometric boundaries from ARKit/ARCore via boundary vertices.
- Automatic fallback to rectangular planes when vertex data is unavailable.
- New prop: useActualShape (default: true).
Map-Based Plane Tracking
- Internal plane tracking migrated from array → Map<string, ViroARPlaneType>.
- Plane identity now based on anchorId, eliminating index-based race conditions.
- More stable add/update/remove cycles.
Multi-Alignment Detection
- New alignment option: "Both" enables simultaneous horizontal + vertical plane detection.
- 25 detectors per alignment type for higher coverage and improved environmental understanding.
Plane Classification (iOS)
- ARKit classifications now exposed and available in all update callbacks:
- Wall
- Floor
- Ceiling
- Table
- Seat
- Door
- Window
- Enables semantic placement and surface-aware logic.
🛠️ Enhanced Properties & Callbacks
onPlaneDetected?: (updateMap) => boolean
Validate incoming planes before they’re added.
disableClickSelection?: boolean
Enables visual-only plane rendering mode.
useActualShape?: boolean
Toggle between native geometry or rectangle fallback.
🎨 Visual Improvements
- Updated material to bright translucent blue (rgba(0,122,255,0.5)).
- cullMode: "None" enabled for improved Android rendering.
- Improved alpha blending and depth buffer handling across both platforms.
📐 ViroARPlane Improvements
- More accurate 3D → 2D vertex conversion.
- Unified coordinate system across iOS + Android.
- Corrected rotation handling for horizontal + vertical surfaces.
- Anchors now expose full metadata:
- position
- rotation
- scale
- centre
- dimensions
- classification
- vertex data
⚙️ Architecture & Performance
- Full support for 16KB memory page size devices on Android.
- Significantly improved internal state management using Maps.
💥 Breaking Changes
- maxPlanes removed → replaced by dynamic 25-detector system per alignment type.
- ViroCommonProps & ViroObjectProps removed from type definitions (previously non-functional).
- Array-based selectors removed; moving forward only explicit properties are exposed.
Need Help?
If you're looking for support getting started or want an expert to help you build a comprehensive AR or VR application, look no further than our community Discord and our trusted experts.
Join the ReactVision Discord →
Support ReactVision
Love what we’re building? Help keep ViroReact thriving by becoming a GitHub Sponsor. Your support funds core maintenance and new platform integrations. Did you know that if every install in the last 6 months had paid us just $1 we'd have enough budget to not only fund our current team but also grow the team further and accelerate development.