Skip to content

Installation

Install published packages from npm. Web packages use @media-sdk/*@^0.3.0 (core 0.3.1 recommended). Native packages use @media-sdk/native@^0.1.0 with @media-sdk/core@^0.3.1.

Packages

Core (required)

The headless client library. Required for all use cases.

bash
pnpm add @media-sdk/core@^0.3.1
bash
npm install @media-sdk/core@^0.3.1
bash
yarn add @media-sdk/core@^0.3.1

React hooks

Adds MediaProvider and search hooks. Requires React as a peer dependency.

bash
pnpm add @media-sdk/core@^0.3.1 @media-sdk/react@^0.3.0 react react-dom

@media-sdk/core is installed automatically as a runtime dependency of @media-sdk/react.

UI components

Presentational React components. Requires @media-sdk/react (or manual wiring to core).

bash
pnpm add @media-sdk/core@^0.3.1 @media-sdk/react@^0.3.0 @media-sdk/ui-react@^0.3.0 react react-dom

React Native

Hooks and presentational RN components. The SDK is Expo-agnostic — Expo is only used in the example app.

bash
pnpm add @media-sdk/core@^0.3.1 @media-sdk/native@^0.1.0 @media-sdk/ui-native@^0.1.0 react react-native

See the Native installation guide for peer dependencies and env variables.

Peer dependencies

PackagePeer dependencies
@media-sdk/coreNone
@media-sdk/reactreact ^18.0.0 or ^19.0.0
@media-sdk/ui-reactreact ^18.0.0 or ^19.0.0, @media-sdk/react ^0.3.0
@media-sdk/nativereact ^18.0.0 or ^19.0.0
@media-sdk/ui-nativereact ^18.0.0 or ^19.0.0, react-native >= 0.71.0

Use React 18 or React 19. The SDK does not bundle React.

API keys

Both providers require a free API key.

ProviderSign upEnv variable (Node)Env variable (Vite)
Pexelspexels.com/apiPEXELS_API_KEYVITE_PEXELS_API_KEY
Pixabaypixabay.com/api/docsPIXABAY_API_KEYVITE_PIXABAY_API_KEY

Node / serverless

bash
# .env
PEXELS_API_KEY=your_pexels_key
PIXABAY_API_KEY=your_pixabay_key

Access via process.env.PEXELS_API_KEY and process.env.PIXABAY_API_KEY.

Vite / browser apps

Vite exposes only variables prefixed with VITE_ to client code:

bash
# .env
VITE_PEXELS_API_KEY=your_pexels_key
VITE_PIXABAY_API_KEY=your_pixabay_key

Access via import.meta.env.VITE_PEXELS_API_KEY and import.meta.env.VITE_PIXABAY_API_KEY.

WARNING

Never commit API keys. Add .env to .gitignore and use .env.example with placeholder values in your repository.

TypeScript setup

The SDK ships with TypeScript declarations. No additional @types/* packages are required.

Ensure your tsconfig.json targets a modern module resolution:

json
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "jsx": "react-jsx",
    "skipLibCheck": true
  }
}

For Vite projects, use moduleResolution: "bundler" (or "node16" / "nodenext"). For Node ESM scripts, use "module": "NodeNext" and "moduleResolution": "NodeNext".

Vite env types

Add type definitions for import.meta.env in src/vite-env.d.ts:

ts
/// <reference types="vite/client" />

interface ImportMetaEnv {
  readonly VITE_PEXELS_API_KEY: string;
  readonly VITE_PIXABAY_API_KEY: string;
}

interface ImportMeta {
  readonly env: ImportMetaEnv;
}

Verify installation

bash
pnpm add @media-sdk/core@^0.3.1
node -e "import('@media-sdk/core').then(m => console.log(Object.keys(m).slice(0, 5)))"

You should see exports like PexelsMediaClient, PixabayMediaClient, and ApiKeyProvider.

Next steps