Troubleshooting
Solutions for common SDK integration issues.
Story Not Showing
No Live Story Published
Symptom: Snoopr.showStory() returns without displaying anything.
Cause: No Story is marked as Live in your dashboard.
Solution:
- Go to the Snoopr dashboard
- Open your Story
- Click Publish to make it Live
See Publishing & Going Live for details.
Story Version Mismatch
Symptom: Story works in one environment but not another.
Cause: The storyVersion prop doesn't match your published Story.
Solution: Verify the version matches:
<SnooprProvider
appId="app-xxx"
apiKey="sk_live_xxx"
storyVersion="v1" // Must match dashboard
>Story Already Completed
Symptom: Story showed once but won't show again.
Cause: By default, showStory() only shows once per installation.
Solution: For testing, use showOnlyOnce: false:
Snoopr.showStory({ showOnlyOnce: false })Or reset completion state:
await Snoopr.resetCompleted()
await Snoopr.showStory()Provider Errors
"SnooprProvider not found"
Symptom: Error when calling any Snoopr method.
Cause: App not wrapped with SnooprProvider, or provider failed to mount.
Solution: Ensure SnooprProvider wraps your entire app:
// App.tsx
export default function App() {
return (
<SnooprProvider appId="..." apiKey="...">
<YourApp /> {/* All components must be children */}
</SnooprProvider>
)
}Invalid Credentials
Symptom: Console shows authentication errors.
Cause: Wrong appId or apiKey.
Solution:
- Go to Snoopr dashboard > Settings > SDK
- Copy the correct App ID and API Key
- Verify no extra spaces or characters
Font Issues
Fonts Not Loading
Symptom: Text appears in system font instead of configured font.
Cause: Font loading failed or fonts disabled.
Solution:
- Check if Expo Font is installed:
npx expo install expo-font- Verify fonts are enabled (default is
true):
<SnooprProvider loadFonts={true} ...>- Check font loading result:
<SnooprProvider
onFontsLoaded={(result) => {
if (!result.success) {
console.error('Font error:', result.error)
}
}}
>Data Capture Issues
Selections Not Captured
Symptom: response.selections is empty.
Cause: Elements don't have a Name configured.
Solution: In the Snoopr dashboard, set the Name field for each element you want to capture data from.
Wrong Data Keys
Symptom: Data exists but under unexpected keys.
Cause: Element names in dashboard don't match expected keys.
Solution: Check element names in the dashboard. The Name field becomes the key in response.selections or response.toggles.
Network Issues
Offline Behavior
Symptom: Stories don't load without network.
Cause: Stories must be fetched at least once before offline use.
Solution: Stories cache after first load. Ensure users have connectivity during initial app launch.
Slow Loading
Symptom: Delay before Story appears.
Cause: Network latency or large assets.
Solution:
- Use optimized images in your Stories
- Consider prefetching by calling
showStory()early (it handles display timing internally)
Debug Logging
Enable verbose logging to diagnose issues:
<SnooprProvider
appId="app-xxx"
apiKey="sk_live_xxx"
devMode={true} // Logs integration status
analyticsDebug={true} // Logs all [analytics events](/developers/analytics/events)
>Console output shows:
- Provider initialization
- API requests and responses
- Story loading status
- Analytics events
Still Having Issues?
- Check console for
[Snoopr]prefixed messages - Verify credentials in dashboard
- Ensure a Story is published and Live
- Contact support at info@snoopr.co
Related
- Quickstart - Initial setup guide
- SnooprProvider Reference - All configuration options
- Snoopr API Reference - API methods