Skip to content

Native capabilities

Capability-driven UI on React Native follows the same rules as web: use useMediaCapabilities or getCapabilities(client) from @media-sdk/core — never if (provider === "pexels") in tabs, filters, or grids.

Quick reference

tsx
import { useMediaCapabilities } from "@media-sdk/native";

function AppTabs() {
  const caps = useMediaCapabilities();

  return (
    <>
      {caps.operations.searchPhotos && <Tab label="Search" />}
      {caps.operations.curatedPhotos && <Tab label="Curated" />}
      {caps.operations.searchVideos && <Tab label="Videos" />}
    </>
  );
}

MediaCapabilities shape

ts
interface MediaCapabilities {
  readonly operations: MediaOperationCapabilities;
  readonly photoFilters: MediaFilterCapabilities;
  readonly videoFilters: MediaFilterCapabilities;
}

Full type reference: Core capabilities.

getCapabilities(client)

For non-hook contexts (client setup, utilities):

ts
import {
  getCapabilities,
  PexelsMediaClient,
  ApiKeyProvider,
} from "@media-sdk/core";

const client = new PexelsMediaClient(new ApiKeyProvider(key));
const caps = getCapabilities(client);

if (caps.operations.curatedPhotos) {
  // safe to call client.getCuratedPhotos()
}

Custom MediaClient implementations without capabilities receive DEFAULT_CAPABILITIES (all false).

UI gating checklist

UI controlGate
Curated tab / screencaps.operations.curatedPhotos
Videos tabcaps.operations.searchVideos
Orientation filtercaps.photoFilters.orientation or caps.videoFilters.orientation
Size filtercaps.photoFilters.size
Color filtercaps.photoFilters.color
Category filtercaps.photoFilters.category
Min width / heightcaps.photoFilters.minWidth / minHeight
Editor's choicecaps.photoFilters.editorsChoice
Locale filtercaps.photoFilters.locale

Provider differences

Pexels supports curated photos and size filters; Pixabay supports category, min dimensions, and editor's choice. See the provider matrix.