Skip to main content
VIJ automatically groups similar errors to help you identify patterns, reduce noise, and focus on unique issues rather than thousands of duplicate errors.

Why Error Grouping Matters

Without error grouping, a single bug could generate thousands of individual error logs, making it impossible to:
  • Identify unique issues
  • Prioritize critical bugs
  • Understand error frequency
  • Track resolution progress
Example Problem:
Without grouping: 10,000 separate error entries With grouping: 1 error group with count of 10,000 occurrences

How Error Grouping Works

VIJ uses fingerprinting to identify similar errors and group them together.

Fingerprint Generation

A fingerprint is a unique hash generated from:
  1. Error name - The error type (TypeError, ReferenceError, etc.)
  2. Normalized message - Error message with dynamic values removed
  3. Stack trace signature - Top 3-5 stack frames

Normalization Process

Dynamic values are normalized to create consistent fingerprints:

Stack Trace Fingerprinting

VIJ analyzes stack traces to identify the error’s origin:
Why top frames matter most:
  • Top frames show where the error originated
  • Middle frames show the call path
  • Bottom frames are usually library/framework code (less useful for grouping)

Grouping Algorithm

The complete fingerprinting algorithm:

Viewing Error Groups

Groups Dashboard

Navigate to /groups to view all error groups:
Error groups dashboard
Information Displayed:
  • Error Message - Representative message from the group
  • Count - Total occurrences
  • First Seen - When this error first appeared
  • Last Seen - Most recent occurrence
  • Severity - Highest severity in the group
  • Affected Apps - Which applications are impacted
Sorting Options:
  • By count (most frequent first)
  • By recency (most recent first)
  • By first occurrence (oldest first)
  • By severity (critical first)

Group Details

Click any group to see:
  1. All occurrences - Every instance of this error
  2. Frequency chart - Error rate over time
  3. Affected users - If user metadata is attached
  4. Common metadata - Shared context across occurrences
Example Use Case:

Custom Grouping Strategies

VIJ supports custom grouping for specific use cases.

Group by Metadata

Group errors by custom metadata fields:

Manual Grouping

Override automatic grouping:
Use manual grouping when automatic grouping is too granular or when you want to track a specific error pattern.

Group by Environment

Separate errors by environment even if they’re the same:

Grouping Configuration

Configure grouping behavior in VIJ Admin.

Group Merge Rules

Define rules to merge groups:
lib/grouping.ts

Stack Frame Filtering

Exclude certain files from fingerprinting:
Why exclude library code:
  • Library code is the same across errors
  • Focus on application-specific code
  • More meaningful grouping

Group Size Limits

Configure maximum group sizes:

Advanced Grouping Patterns

Similarity-Based Grouping

Group errors by similarity score:

Machine Learning Grouping

Use ML to identify error patterns:
ML-based grouping is an advanced feature not included in the default VIJ installation but can be implemented as a custom extension.

Grouping Best Practices

Good:
Bad:
Specific messages create better groups.
Good:
Bad:
Dynamic values in messages prevent proper grouping.
Custom error classes create distinct groups.
  • Check for over-grouping (unrelated errors grouped together)
  • Check for under-grouping (same error split into multiple groups)
  • Adjust normalization rules as needed
  • Archive resolved groups
Prevents production errors from mixing with development/staging.

Troubleshooting Grouping Issues

Symptom: Similar errors appearing as separate groupsCauses:
  • Dynamic values in error messages
  • Different stack traces
  • Different error names
Solutions:
  1. Use consistent error messages
  2. Check stack trace consistency
  3. Use custom fingerprinting
  4. Review normalization rules
Debug:
Symptom: Hundreds of small groups instead of a few large onesCauses:
  • Unique error messages
  • Different stack traces
  • Over-specific fingerprinting
Solutions:
  • Increase normalization (more aggressive pattern matching)
  • Use custom grouping keys
  • Merge related groups manually
  • Reduce stack frame depth
Symptom: Single group with thousands of unrelated errorsCauses:
  • Generic error messages (“Error”, “Something went wrong”)
  • Over-aggressive normalization
  • Missing stack traces
Solutions:
  • Use specific error messages
  • Include stack traces
  • Add more context to fingerprints
  • Split large groups manually
Symptom: Unrelated errors in the same groupCauses:
  • Overly aggressive normalization
  • Similar but different errors
  • Missing stack frame information
Solutions:
  • Reduce normalization
  • Use custom fingerprinting
  • Include more stack frames
  • Use metadata for additional grouping

Group Management

Archive Resolved Groups

Mark groups as resolved:

Split Groups

Split a group into multiple groups:

Merge Groups

Combine multiple groups:

Next Steps

Filtering & Search

Advanced filtering and search techniques

Analytics

Analyze error trends and patterns

AI Integration

Use AI to analyze grouped errors

Dashboard Features

Explore the error groups dashboard