← スキル一覧に戻る

logrocket
by mgd34msu
Plug in, Receive good vibes.
⭐ 2🍴 0📅 2026年1月25日
SKILL.md
name: logrocket description: Implements session replay and error tracking with LogRocket for debugging user issues. Use when adding session recording, error monitoring, and performance tracking to React applications.
LogRocket
Session replay platform with error tracking, performance monitoring, and product analytics. Captures every user interaction for debugging.
Quick Start
npm install logrocket logrocket-react
Basic Setup
// logrocketSetup.ts
import LogRocket from 'logrocket';
LogRocket.init('your-app-id/your-project');
// main.tsx - Import setup FIRST
import './logrocketSetup';
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
User Identification
import LogRocket from 'logrocket';
// Identify user after login
function onLogin(user) {
LogRocket.identify(user.id, {
name: user.name,
email: user.email,
// Custom attributes
subscriptionType: user.plan,
createdAt: user.createdAt,
});
}
// Anonymous session (before login)
LogRocket.identify('anonymous-user-123');
Custom Events
import LogRocket from 'logrocket';
// Basic event
LogRocket.track('Button Clicked');
// Event with properties
LogRocket.track('PurchaseComplete', {
revenue: 42.99,
productCategory: 'Clothing',
productSku: 4887369299,
couponApplied: true,
customerSegments: ['aef34b', '97cb20'],
});
// Form submission
LogRocket.track('FormSubmitted', {
formName: 'contact',
success: true,
});
// Feature usage
LogRocket.track('FeatureUsed', {
featureName: 'export',
format: 'csv',
});
React Error Boundary
import LogRocket from 'logrocket';
import setupLogRocketReact from 'logrocket-react';
// After LogRocket.init()
setupLogRocketReact(LogRocket);
This automatically captures:
- React component errors
- Error boundary crashes
- Component stack traces
Manual Error Logging
import LogRocket from 'logrocket';
try {
// risky operation
} catch (error) {
LogRocket.captureException(error);
}
// With extra context
LogRocket.captureException(error, {
tags: {
component: 'PaymentForm',
userId: 'user_123',
},
extra: {
orderId: 'order_456',
attemptNumber: 3,
},
});
Console Logging
LogRocket captures console logs automatically. Add custom context:
import LogRocket from 'logrocket';
// Log with structured data
LogRocket.log('Processing order', { orderId: 'order_123', items: 3 });
LogRocket.info('User action', { action: 'checkout_started' });
LogRocket.warn('Rate limit approaching', { remaining: 10 });
LogRocket.error('Payment failed', { reason: 'insufficient_funds' });
Redux Integration
import LogRocket from 'logrocket';
import { createStore, applyMiddleware } from 'redux';
const store = createStore(
rootReducer,
applyMiddleware(LogRocket.reduxMiddleware())
);
With Redux Toolkit
import { configureStore } from '@reduxjs/toolkit';
import LogRocket from 'logrocket';
const store = configureStore({
reducer: rootReducer,
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(LogRocket.reduxMiddleware()),
});
Network Request Logging
LogRocket captures network requests automatically. Sanitize sensitive data:
LogRocket.init('app-id/project', {
network: {
requestSanitizer: (request) => {
// Remove authorization header
if (request.headers['Authorization']) {
request.headers['Authorization'] = '[REDACTED]';
}
// Sanitize request body
if (request.body) {
const body = JSON.parse(request.body);
if (body.password) {
body.password = '[REDACTED]';
}
request.body = JSON.stringify(body);
}
return request;
},
responseSanitizer: (response) => {
// Sanitize response body
if (response.body) {
const body = JSON.parse(response.body);
if (body.token) {
body.token = '[REDACTED]';
}
response.body = JSON.stringify(body);
}
return response;
},
},
});
Privacy & Sanitization
Mask Sensitive Data
LogRocket.init('app-id/project', {
dom: {
// Mask all inputs
inputSanitizer: true,
// Mask specific elements
textSanitizer: true,
// Mask by CSS selector
privateAttributeBlocklist: ['data-private'],
},
});
HTML Masking
<!-- Mask specific elements -->
<input type="password" data-private />
<div data-private>Sensitive content</div>
<!-- Or use CSS class -->
<div class="lr-hide">Hidden from replay</div>
Block Recording
<!-- Completely hide from DOM -->
<div data-logrocket-hidden>
This content won't appear in recordings
</div>
Conditional Recording
Only record certain users or conditions:
import LogRocket from 'logrocket';
// Check condition before initializing
if (shouldRecordUser(user)) {
LogRocket.init('app-id/project');
LogRocket.identify(user.id, { name: user.name });
}
// Or start/stop recording
LogRocket.startRecording();
LogRocket.stopRecording();
Sample Rate
LogRocket.init('app-id/project', {
shouldSendData: () => {
// Record 10% of sessions
return Math.random() < 0.1;
},
});
Session URL
Get the session URL for support tickets:
import LogRocket from 'logrocket';
LogRocket.getSessionURL((sessionURL) => {
// Send to support system
console.log('Session URL:', sessionURL);
// Or add to error reports
Sentry.setExtra('sessionURL', sessionURL);
});
Integration with Error Tracking
Sentry
import * as Sentry from '@sentry/react';
import LogRocket from 'logrocket';
LogRocket.getSessionURL((sessionURL) => {
Sentry.configureScope((scope) => {
scope.setExtra('sessionURL', sessionURL);
});
});
Custom Integration
import LogRocket from 'logrocket';
LogRocket.getSessionURL((sessionURL) => {
// Add to your error tracking
errorTracker.setContext('logrocket_session', sessionURL);
// Or send to your backend
fetch('/api/session', {
method: 'POST',
body: JSON.stringify({ sessionURL, userId: currentUser.id }),
});
});
Next.js Integration
// app/providers.tsx
'use client';
import { useEffect } from 'react';
import LogRocket from 'logrocket';
import setupLogRocketReact from 'logrocket-react';
export function LogRocketProvider({ children }: { children: React.ReactNode }) {
useEffect(() => {
if (typeof window !== 'undefined') {
LogRocket.init('app-id/project');
setupLogRocketReact(LogRocket);
}
}, []);
return <>{children}</>;
}
// app/layout.tsx
import { LogRocketProvider } from './providers';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<LogRocketProvider>
{children}
</LogRocketProvider>
</body>
</html>
);
}
Configuration Options
LogRocket.init('app-id/project', {
// Console options
console: {
isEnabled: true,
shouldAggregateConsoleErrors: true,
},
// Network options
network: {
isEnabled: true,
requestSanitizer: (request) => request,
responseSanitizer: (response) => response,
},
// DOM options
dom: {
isEnabled: true,
inputSanitizer: true,
textSanitizer: false,
baseHref: 'https://yourdomain.com',
},
// Release tracking
release: process.env.NEXT_PUBLIC_VERSION,
// Parent domain (for cross-subdomain tracking)
parentDomain: 'yourdomain.com',
// Merge IDs (connect anonymous with identified)
mergeImmediately: true,
});
TypeScript
import LogRocket from 'logrocket';
interface UserTraits {
name: string;
email: string;
plan: 'free' | 'pro' | 'enterprise';
createdAt: string;
}
function identifyUser(userId: string, traits: UserTraits) {
LogRocket.identify(userId, traits);
}
interface PurchaseEvent {
productId: string;
amount: number;
currency: string;
}
function trackPurchase(event: PurchaseEvent) {
LogRocket.track('Purchase', event);
}
Performance Monitoring
LogRocket automatically captures:
- Page load times
- First Contentful Paint (FCP)
- Largest Contentful Paint (LCP)
- Time to Interactive (TTI)
- Network request timing
Access in the LogRocket dashboard under Performance.
Best Practices
- Initialize early - Import setup file before other modules
- Identify users - Connect sessions to user accounts
- Sanitize data - Never record passwords or tokens
- Use conditional recording - Sample in production
- Track key events - Conversions, errors, feature usage
- Integrate with error tracking - Link sessions to Sentry/etc
- Use private attributes - Mark sensitive DOM elements
スコア
総合スコア
60/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です