6.3 KiB
Error Tracking System Documentation
Overview
The error tracking system provides comprehensive monitoring and debugging capabilities for ThrillWiki. It captures detailed error context including stack traces, user action breadcrumbs, and environment information.
Features
1. Enhanced Error Context
Every error captured includes:
- Stack Trace: First 5000 characters of the error stack
- Breadcrumbs: Last 10 user actions before the error
- Environment Context: Browser/device information at error time
- Request Metadata: Endpoint, method, duration, status code
- User Context: User ID, session information
2. Error Monitoring Dashboard
Location: /admin/error-monitoring
Access: Admin/Moderator with MFA only
Features:
- Real-time error list with auto-refresh (30 seconds)
- Filter by date range (1h, 24h, 7d, 30d)
- Filter by error type
- Search by request ID, endpoint, or error message
- Error analytics (total errors, error types, affected users, avg duration)
- Top 5 errors chart
3. Error Details Modal
Click any error to view:
- Full request ID (copyable)
- Timestamp
- Endpoint and HTTP method
- Status code and duration
- Full error message
- Stack trace (collapsible)
- Breadcrumb trail with timestamps
- Environment context (formatted JSON)
- Link to user profile (if available)
- Copy error report button
4. User-Facing Error IDs
All errors shown to users include a short reference ID (first 8 characters of request UUID):
Error occurred
Reference ID: a3f7b2c1
Users can provide this ID to support for quick error lookup.
5. Error ID Lookup
Location: /admin/error-lookup
Quick search interface for finding errors by their reference ID. Enter the 8-character ID and get redirected to the full error details.
How It Works
Breadcrumb Tracking
Breadcrumbs are automatically captured for:
- Navigation: Route changes
- User Actions: Button clicks, form submissions
- API Calls: Edge function and Supabase calls
- State Changes: Important state updates
Environment Context
Captured automatically on error:
- Viewport dimensions
- Screen resolution
- Browser memory usage (Chrome only)
- Network connection type
- Timezone and language
- Platform information
- Storage availability
Error Flow
- Error Occurs → Error boundary or catch block
- Context Captured → Breadcrumbs + environment + stack trace
- Logged to Database →
request_metadatatable via RPC function - User Notification → Toast with error ID
- Admin Dashboard → Real-time visibility
Database Schema
request_metadata Table
New columns added:
error_stack(text): Stack trace (max 5000 chars)breadcrumbs(jsonb): Array of breadcrumb objectsenvironment_context(jsonb): Browser/device information
error_summary View
Aggregated error statistics:
- Error type and endpoint
- Occurrence count
- Affected users count
- First and last occurrence timestamps
- Average duration
- Recent request IDs (last 24h)
Using the System
For Developers
Adding Breadcrumbs
import { breadcrumb } from '@/lib/errorBreadcrumbs';
// Navigation (automatic via App.tsx)
breadcrumb.navigation('/parks/123', '/parks');
// User action
breadcrumb.userAction('clicked submit', 'ParkForm', { parkId: '123' });
// API call
breadcrumb.apiCall('/functions/v1/detect-location', 'POST', 200);
// State change
breadcrumb.stateChange('Park data loaded', { parkId: '123' });
Error Handling with Tracking
import { handleError } from '@/lib/errorHandler';
import { trackRequest } from '@/lib/requestTracking';
try {
const result = await trackRequest(
{ endpoint: '/api/parks', method: 'GET' },
async (context) => {
// Your code here
return data;
}
);
} catch (error) {
handleError(error, {
action: 'Load park data',
metadata: { parkId },
});
}
For Support Staff
Finding an Error
- User reports error with ID:
a3f7b2c1 - Go to
/admin/error-lookup - Enter the ID
- View full error details
Analyzing Error Patterns
- Go to
/admin/error-monitoring - Review analytics cards for trends
- Check Top 5 Errors chart
- Filter by time range to see patterns
- Click any error for full details
Best Practices
DO:
- ✅ Always use error boundaries around risky components
- ✅ Add breadcrumbs for important user actions
- ✅ Use
trackRequestfor critical API calls - ✅ Include context in
handleErrorcalls - ✅ Check error monitoring dashboard regularly
DON'T:
- ❌ Log sensitive data in breadcrumbs
- ❌ Add breadcrumbs in tight loops
- ❌ Ignore error IDs in user reports
- ❌ Skip error context when handling errors
- ❌ Let errors go untracked
Performance Considerations
- Error tracking overhead: < 10ms per request
- Breadcrumb memory: Max 10 breadcrumbs retained
- Stack trace size: Limited to 5000 characters
- Database cleanup: 30-day retention (automatic)
- Dashboard refresh: Every 30 seconds
Troubleshooting
Error not appearing in dashboard
- Check if error occurred within selected time range
- Verify error type filter settings
- Try clearing search term
- Refresh the dashboard manually
Missing breadcrumbs
- Breadcrumbs only captured for last 10 actions
- Check if breadcrumb tracking is enabled for that action type
- Verify error occurred after breadcrumbs were added
Incomplete stack traces
- Stack traces limited to 5000 characters
- Some browsers don't provide full stacks
- Source maps not currently supported
Limitations
Not Included:
- Third-party error tracking (Sentry, Rollbar)
- Session replay functionality
- Source map support for minified code
- Real-time alerting (future enhancement)
- Cross-origin error tracking
- Error rate limiting
Future Enhancements
- AI-powered error categorization
- Automatic error assignment to team members
- GitHub Issues integration
- Slack/Discord notifications for critical errors
- Real-time WebSocket updates
- Error severity auto-detection
- Error resolution workflow
Support
For issues with the error tracking system itself:
- Check console for tracking errors
- Verify database connectivity
- Check RLS policies on
request_metadata - Review edge function logs
- Contact dev team with details
Last updated: 2025-11-03 Version: 1.0.0