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:

  1. Go to the Snoopr dashboard
  2. Open your Story
  3. 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:

  1. Go to Snoopr dashboard > Settings > SDK
  2. Copy the correct App ID and API Key
  3. 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:

  1. Check if Expo Font is installed:
npx expo install expo-font
  1. Verify fonts are enabled (default is true):
<SnooprProvider loadFonts={true} ...>
  1. 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?

  1. Check console for [Snoopr] prefixed messages
  2. Verify credentials in dashboard
  3. Ensure a Story is published and Live
  4. Contact support at info@snoopr.co