improved

ViroReact v2.44.2 โ€“ AR Plane Detection & Selection Overhaul

With ViroReact 2.44.2, 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.


๐Ÿ‘

Support ReactVision

Love what weโ€™re building? Help keep ViroReact thriving by becoming a GitHub Sponsor. Your support helps to fund 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 โ†’


๐Ÿš€ 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 โ†’