GuidesComponentsApp UI components

PrerequisiteGate

Wait for a host-authorized account prerequisite check before rendering app content

  • Stable unknown
  • Release candidate since 1.16.1-rc.3
  • Development since 1.16.1-dev.2111+9796905

PrerequisiteGate prevents app content from flashing before an asynchronous, host-owned prerequisite check finishes. The host's check callback reads the current account/project state; the SDK does not assume a backend endpoint or store prerequisite state on the device.

<PrerequisiteGate
  scopeKey={`${projectId}:${profileId}`}
  check={() => loadRequiredTaskForCurrentAccount()}
  pending={<FullScreenActivityIndicator />}
  renderRequired={(task, refresh) => (
    <RequiredTaskScreen task={task} onSaved={refresh} />
  )}
  onError={logPrerequisiteCheckFailure}
>
  <AppNavigator />
</PrerequisiteGate>
  • scopeKey must change when the signed-in account or project changes. A result from the previous scope is hidden immediately while the new check runs.
  • Return null when nothing is required, or return the host's requirement value for renderRequired. After saving the required task, call refresh; the gate checks the server again before revealing its children.
  • While loading, pending is shown. It defaults to null, so the children do not render early. Keep the loading view non-blocking and app-localized.
  • If check rejects (for example, because the device is offline or access is unavailable), onError is called and the gate renders its children. This is deliberately fail-open: it must not lock a person out because a check failed.

This is a presentation gate, not an authorization boundary. The server must still enforce access rules on protected data and operations. The host must use an account-scoped, authorized source if the requirement needs to follow the person across devices. Keep the check callback stable where practical; it is re-read when the scopeKey changes or refresh is called.

Last updated on