Develop

Interaction SDK Troubleshooting

Updated: Aug 31, 2026

Overview

The following are known issues to keep in mind when creating interactions.

My Game with Poke or Ray Interactions Crashes When I Play

If you forget to hook up the Pointable Plane reference (Pose Provider) to the Make Clipper Bounds function, it will crash when you play. Make sure you have hooked up this reference.

My Game Crashes When I Grab an Interactable

In v69 of the Interaction SDK plugin, if an IsdkGrabbableAudio component on an actor has only one sound in either the Grabbing Sounds or Releasing Sounds arrays, the game will crash when a grab interaction occurs. This has been addressed in a future version, however in the interim, avoid using a Grabbing or Releasing Sounds array with only one element.

Gaze Does Nothing at All

Gaze is disabled by default at the project level. If gaze-hovered objects never react and the gaze rig produces no events, confirm that Gaze Enabled is turned on:
Project Settings > Plugins > Meta XR - InteractionSDK > Gaze > Gaze Enabled
Set Gaze Enabled to true. The Allow Gaze By Default and Gaze Fallback Behavior properties are hidden in the editor until Gaze Enabled is on, so if you cannot see those two properties in the Gaze group, that is a reliable signal that gaze is still off.

An Object Hovers Under Gaze but Will Not Grab

Gaze targets an object, the hover state fires, but selecting the object does nothing. The cause is on the object being grabbed, not on the gaze rig. On the object’s UIsdkGrabbableComponent (shown in the editor as ISDK Grabbable Component), the Allowed Grab Detector Types bitmask defaults to Hand Grab only. Gaze routes selection through the grabber’s ray-grab slot using an injected detector that gates on IsRayGrabAllowed(), and that check returns false when Ray Grab is missing from the grabbable’s allowed types. Tick Ray Grab in addition to Hand Grab on the grabbable component to make the object selectable through gaze.

Nothing Is Targeted at All

Gaze produces no hits on an interactable that has a valid collider. Gaze performs a line trace on the gaze trace channel, which is GazeCollisionChannel and defaults to ECC_Visibility. If the collider’s response for that channel is set to Overlap or Ignore, the trace produces no hit and gaze cannot target the object. Set the collider’s response for the gaze channel (Visibility by default) to Block. The collider must be on the same actor as the hoverable or grabbable component. Otherwise, the hit resolves to the wrong actor and no interaction is dispatched.

A Controller User Loses Their Ray in Gaze Mode

A controller session enables gaze mode and the controller ray disappears, leaving the user unable to actuate a gaze-hovered target.
At v207, gaze is hands-only. When gaze mode is on, sibling ray-interaction rigs on the same actor, both hand-driven and controller-driven, are gated off by a NOR conditional (HandInteractionGazeGate) added to each rig’s enabled conditional group. Only hand rigs’ select delegates are wired to actuate the region interactor, so a controller user in gaze mode has no path to select a gaze-hovered target. Leave gaze mode off for controller sessions by calling SetGazeMode(false) on UIsdkGazeRigComponent, or keep the project-wide Gaze Enabled setting off.

Learn more