---
title: "Troubleshooting"
description: "Common issues and their solutions"
sidebarTitle: "Troubleshooting"
---
## Graph Not Rendering
### Container Has No Dimensions
**Problem**: The graph appears blank or shows nothing.
**Cause**: The parent container has no explicit width or height (0x0 dimensions).
**Solution**: Always set explicit dimensions on the container:
```tsx
{/* ✅ Correct */}
{/* ❌ Wrong - no height set */}
{/* ❌ Wrong - using auto height */}
```
Use browser DevTools to inspect the container element and verify it has non-zero width and height.
### CSS Not Loading
**Problem**: Graph renders but has no styling or looks broken.
**Cause**: CSS injection failed or was blocked.
**Solution**:
1. Check browser console for errors
2. Try manual CSS import:
```tsx
import '@supermemory/memory-graph/styles.css'
import { MemoryGraph } from '@supermemory/memory-graph'
```
3. Verify your bundler supports CSS imports
### No Data Displayed
**Problem**: Loading completes but no nodes appear.
**Diagnosis**:
```tsx
// Add console logs to debug
console.log('Documents:', documents)
console.log('Document count:', documents.length)
console.log('Has memories:', documents.some(d => d.memoryEntries.length > 0))
```
**Common Causes**:
- Empty `documents` array
- Documents have no `memoryEntries`
- Data structure doesn't match expected type
**Solution**: Verify your data matches the expected structure:
```typescript
interface DocumentWithMemories {
id: string
title?: string
memoryEntries: MemoryEntry[] // Must be present
// ... other fields
}
```
## Performance Issues
### Slow Rendering with Large Datasets
**Problem**: Graph becomes sluggish with 500+ documents.
**Solution**: Implement pagination:
```tsx
```
The graph uses viewport culling and Level-of-Detail (LOD) rendering automatically. Performance degradation typically starts around 1000+ nodes.
### High Memory Usage
**Problem**: Browser uses excessive memory.
**Cause**: Too many documents loaded at once.
**Solution**:
1. Limit initial load to 200-500 documents
2. Use pagination to load incrementally
3. Consider filtering by space/container
```typescript
// Backend: Limit documents
body: JSON.stringify({
page: 1,
limit: 200, // Start with smaller limit
containerTags: [selectedSpace],
})
```
### Laggy Interactions
**Problem**: Pan/zoom feels sluggish.
**Diagnosis**:
1. Check document count: `documents.length`
2. Check browser FPS in DevTools Performance tab
3. Check canvas size (very large canvases are slower)
**Solutions**:
- Reduce number of visible documents
- Ensure container isn't larger than viewport
- Close other resource-intensive tabs
## Data Fetching Errors
### CORS Errors
**Problem**: `Access-Control-Allow-Origin` error in console.
**Cause**: Trying to fetch directly from client to Supermemory API.
**Solution**: Always use a backend proxy:
```tsx
{/* ❌ Wrong - CORS error */}
fetch('https://api.supermemory.ai/v3/documents/documents', {
headers: { 'Authorization': `Bearer ${apiKey}` } // API key exposed!
})
{/* ✅ Correct - through your backend */}
fetch('/api/graph-data') // Your backend proxies the request
```
Never call the Supermemory API directly from client code. This exposes your API key and causes CORS errors.
### 401 Unauthorized
**Problem**: Backend returns 401 error.
**Common Causes**:
1. API key is missing or invalid
2. API key not in environment variables
3. Environment variables not loaded
**Solution**:
```bash
# .env.local
SUPERMEMORY_API_KEY=your_api_key_here
```
```typescript
// Verify in backend
console.log('API Key present:', !!process.env.SUPERMEMORY_API_KEY)
```
### 500 Internal Server Error
**Problem**: Backend returns 500 error.
**Diagnosis**: Check backend logs for details.
**Common Causes**:
1. Network error reaching Supermemory API
2. Invalid request body
3. API key lacks permissions
**Solution**: Add detailed error logging:
```typescript
try {
const response = await fetch('https://api.supermemory.ai/...')
if (!response.ok) {
const error = await response.text()
console.error('Supermemory API error:', response.status, error)
throw new Error(`API error: ${response.status}`)
}
return await response.json()
} catch (error) {
console.error('Fetch error:', error)
throw error
}
```
### API Key Exposure Warning
**Problem**: API key visible in Network tab or client code.
**Risk**: Anyone can steal your API key and make unauthorized requests.
**Solution**:
1. Remove API key from client code immediately
2. Rotate your API key in Supermemory dashboard
3. Implement backend proxy (see Quick Start guide)
```tsx
{/* ❌ NEVER do this */}
const apiKey = 'sk_123...' // Exposed in source code!
fetch(url, { headers: { 'Authorization': `Bearer ${apiKey}` }})
{/* ✅ Always use backend proxy */}
fetch('/api/graph-data') // API key stays on server
```
## TypeScript Errors
### Type Mismatch
**Problem**: TypeScript errors on `documents` prop.
**Solution**: Import and use the correct type:
```tsx
import type { DocumentWithMemories } from '@supermemory/memory-graph'
const [documents, setDocuments] = useState([])
```
### Missing Type Definitions
**Problem**: TypeScript can't find types.
**Solution**:
1. Verify package is installed: `npm list @supermemory/memory-graph`
2. Restart TypeScript server in your IDE
3. Check `node_modules/@supermemory/memory-graph/dist/index.d.ts` exists
## Browser Compatibility
### Not Working in Safari
**Issue**: Graph doesn't render in Safari.
**Cause**: Older Safari versions lack some Canvas 2D features.
**Solution**: Ensure users are on Safari 14+ or suggest Chrome/Firefox.
### Mobile Touch Gestures Not Working
**Issue**: Can't pinch-to-zoom on mobile.
**Cause**: Browser or container blocking touch events.
**Solution**: Ensure parent has no conflicting touch handlers:
```tsx
e.stopPropagation()}
>
```
### Canvas Appears Blurry
**Issue**: Graph looks pixelated or blurry.
**Cause**: High-DPI displays not being handled correctly.
**Solution**: This should be automatic. If it persists:
1. Check browser zoom is at 100%
2. Verify `devicePixelRatio` is being respected
3. Try different browser
## Build Errors
### Module Not Found
**Error**: `Cannot find module '@supermemory/memory-graph'`
**Solution**:
1. Reinstall package: `npm install @supermemory/memory-graph`
2. Clear node_modules: `rm -rf node_modules && npm install`
3. Check package.json includes the package
### Build Fails with CSS Error
**Error**: `Failed to parse CSS` or similar.
**Cause**: Bundler doesn't support CSS-in-JS.
**Solution**: The package uses automatic CSS injection - no CSS import needed. If you must import CSS:
```tsx
import '@supermemory/memory-graph/styles.css'
```
## Still Having Issues?
Report bugs or request features
Contact the Supermemory team
When reporting issues, please include:
- Browser and version
- Package version (`npm list @supermemory/memory-graph`)
- Framework (Next.js, React, etc.) and version
- Minimal reproduction code
- Console errors or screenshots