Skip to content

Adoption journeys

Executable paths through the docs — no monorepo clone required. Install packages from npm, follow linked pages in order.

Status key: ✅ completable from docs alone · ⚠️ minor gap (cross-link added or note required)


Start here (six core journeys)

1. Install → configure → search → display ✅

Goal: First photo search rendered in a React app.

StepPage
1. Install packagesInstallation
2. Set API keys (Vite env)Installation — API keys
3. Quick search snippetQuick Start
4. Wire hooks + UIReact hooks · UI components
5. (Optional) Copy starterbasic-react README

Exit: useMediaSearch returns items; grid or list renders thumbnails.


2. Pexels → Pixabay switch ✅

Goal: Swap provider by changing the client instance, not UI conditionals.

StepPage
1. Canonical factoryProvider configuration
2. Env variable matrixProvider configuration — env matrix
3. Pexels client detailsPexelsMediaClient
4. Pixabay client + hotlinkingPixabayMediaClient
5. Side-by-side matrixProvider comparison

Exit: App shell builds PexelsMediaClient or PixabayMediaClient; presentation uses capabilities only.


3. Capabilities → capability-driven UI ✅

Goal: Gate tabs and filters without if (provider === "pexels").

StepPage
1. getCapabilities / typesCapabilities
2. React hookuseMediaCapabilities
3. Native hookNative capabilities
4. Provider matrix referenceCompatibility — feature × provider

Exit: UI shows Curated tab only when caps.operations.curatedPhotos is true.


4. Filters → provider differences ✅

Goal: Apply filters safely per provider.

StepPage
1. Filter types + validationFilters
2. Photo/video filter matrixProvider comparison
3. React hook filtersHooks — photoFilters / videoFilters
4. Native filtersNative filters

Exit: Unsupported filters gated with caps.photoFilters.size (etc.); no UNSUPPORTED_FILTER at runtime.


5. Errors → MediaError handling ✅

Goal: Branch on code, status, and abort cancellation.

StepPage
1. Error types referenceErrors
2. Decision tree + recipesError handling
3. Hook error narrowingError handling — hooks
4. Reliability contextReliability

Exit: Handler distinguishes isAbortError, MediaError.code, and HTTP status.


6. React Native → Expo → native components ✅

Goal: Expo app with hooks and ui-native components.

StepPage
1. Native overviewNative getting started
2. Install + peersNative installation
3. MediaProviderMediaProvider
4. Search hookuseMediaSearch
5. UI componentsNative components
6. Full Expo walkthroughExpo example
7. TroubleshootingNative troubleshooting

Exit: Expo app runs; useMediaSearch + PhotoGrid render results.


Extended journeys (design checklist)

#JourneyEntryStatus
7Videos searchPexels · useMediaVideos
8Pixabay-only setupPixabay (hotlinking §)
9Pexels curatedProvider configuration — curated recipe
10Migration 0.2 → 0.3Migration guide
11Migration 0.3 → 1.01.0 migration guide✅ (prep)

Journey audit summary (2026-08-09)

JourneyStatusNotes
1. Install → displayGate A fixed loading / trackView snippets
2. Provider switchConfiguration page is canonical entry
3. Capabilities UIWeb + native capability pages linked
4. FiltersComparison matrix + filters pages aligned
5. ErrorsError handling decision tree complete
6. React Native / ExpoInstallation + expo-example + troubleshooting
7. VideosuseMediaVideos documented web + native
8. Pixabay setupHotlinking on pixabay.md; linked from configuration
9. Pexels curatedApp recipe documented (not SDK hook)
10. Migration0.2 → 0.3 guide present

Gaps: None blocking. DF-15 (Pixabay hotlink visibility) addressed via journey 2 + pixabay.md cross-links from Provider configuration.