For AI agents: the complete documentation index is available at /react-native-arrangement-view/v0.2/llms.txt, the full documentation bundle is available at /react-native-arrangement-view/v0.2/llms-full.txt, and this page is available as Markdown at /react-native-arrangement-view/v0.2/api/use-hinge-change.md.

useHingeChange

Call the hook inside a component rendered in either pane. It observes the nearest ArrangementView, keeping events associated with that view's scene. It is not a process-wide sensor subscription.

import { Text } from 'react-native';
import { useHingeChange } from 'react-native-arrangement-view';

function Player() {
  const hinge = useHingeChange((next) => {
    // Use angle/status for effects or interactions.
    // Let ArrangementView handle adaptive layout.
    console.log(next.angle, next.status);
  });

  return (
    <Text>{hinge.angle === null ? 'No hinge' : `${hinge.angle} rad`}</Text>
  );
}

The callback is optional; the hook also returns the current HingeState and subscribes the component to updates. It invokes the callback with the initial unavailable state and then changed values.

HingeState

type HingeState = {
  available: boolean;
  angle: number | null; // radians
  status: 'unknown' | 'closed' | 'partiallyOpen' | 'fullyOpen';
};

Before the first native update, without hardware, or when observation is disabled, the state is { available: false, angle: null, status: 'unknown' }.

On Android, angle comes from the hinge angle sensor (Android 11+) and is null on a foldable without one.