improved

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 →

Hire an Expert →



👍

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.

Sponsor ReactVision on GitHub →