Compatibility matrix
Definitive contract for package layers, peer dependencies, providers, and platforms. Source of truth for capabilities: PexelsMediaClient.capabilities and PixabayMediaClient.capabilities in @media-sdk/core (also asserted by pnpm verify:compatibility-matrix).
Package layers
| Layer | Package | Compatibility |
|---|---|---|
| Core | @media-sdk/core | Node, browser, React Native (no RN dependency in package) |
| React hooks | @media-sdk/react | react ^18.0.0 || ^19.0.0 |
| React UI | @media-sdk/ui-react | React + browser DOM |
| Native hooks | @media-sdk/native | react ^18.0.0 || ^19.0.0 (no react-native peer) |
| Native UI | @media-sdk/ui-native | React + react-native >= 0.71.0 |
| Providers | Pexels, Pixabay | Both implement MediaClient |
| Clean-room install | Starters | pnpm verify:starter, pnpm verify:starter-native |
Current published versions: core 0.3.1, react/ui-react 0.3.0, native/ui-native 0.1.0.
Peer dependencies
| Package | Peer dependencies |
|---|---|
@media-sdk/core | None |
@media-sdk/react | react ^18.0.0 || ^19.0.0 |
@media-sdk/ui-react | react ^18.0.0 || ^19.0.0 |
@media-sdk/native | react ^18.0.0 || ^19.0.0 |
@media-sdk/ui-native | react ^18.0.0 || ^19.0.0, react-native >= 0.71.0 |
Operations × provider
| Operation | Pexels | Pixabay |
|---|---|---|
searchPhotos | ✅ | ✅ |
searchVideos | ✅ | ✅ |
getPhoto | ✅ | ✅ |
getVideo | ✅ | ✅ |
curatedPhotos | ✅ | ❌ |
trackView | ✅ | ✅ |
trackDownload | ✅ | ✅ |
Photo filters × provider
| Filter | Pexels | Pixabay |
|---|---|---|
orientation | ✅ | ✅ |
size | ✅ | ❌ |
color | ✅ | ✅ |
category | ❌ | ✅ |
minWidth | ❌ | ✅ |
minHeight | ❌ | ✅ |
editorsChoice | ❌ | ✅ |
locale | ✅ | ✅ |
Video filters × provider
| Filter | Pexels | Pixabay |
|---|---|---|
orientation | ✅ | ❌ |
size | ✅ | ❌ |
color | ❌ | ❌ |
category | ❌ | ✅ |
minWidth | ❌ | ✅ |
minHeight | ❌ | ✅ |
editorsChoice | ❌ | ✅ |
locale | ✅ | ❌ |
Feature × platform
| Feature | @media-sdk/react | @media-sdk/native | @media-sdk/ui-react | @media-sdk/ui-native |
|---|---|---|---|---|
MediaProvider | ✅ | ✅ | — | — |
useMediaClient | ✅ | ✅ | — | — |
useMediaSearch + photoFilters | ✅ | ✅ | — | — |
useMediaVideos + videoFilters | ✅ | ✅ | — | — |
useMediaCapabilities | ✅ | ✅ | — | — |
useCuratedPhotos | ❌ app recipe | ❌ app recipe | — | — |
SearchBar / grids / previews | — | — | ✅ | ✅ |
usePreviewDialog | — | — | ✅ DOM | ❌ N/A |
VideoPreview.renderVideo | — | — | N/A | ✅ optional |
| Abort on search | ✅ | ✅ | — | — |
Pagination component | — | — | ✅ | ✅ |
| Provider swap at runtime | ✅ | ✅ | — | — |
Native provider notes: Pexels + Pixabay on React Native.
CI enforcement
| Check | Command |
|---|---|
| Full Gate C | pnpm verify:gate-c |
| Capabilities + peer static audit | pnpm verify:compatibility-matrix |
| Web starter clean-room | pnpm verify:starter |
| Native starter clean-room | pnpm verify:starter-native |
| Tarball consumer | pnpm verify:npm-consumer |
verify:compatibility-matrix asserts:
- All five
@media-sdk/*package names exist with versions - Documented peer dependency ranges match
package.json @media-sdk/corehas noreact-nativedependencygetCapabilities(pexels)/getCapabilities(pixabay)match tables above