npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@labana-vividh32/react-apm

v0.2.0

Published

Lightweight APM tool for capturing page load time, network metrics, and errors

Readme

@labana-vividh32/react-apm

A lightweight Application Performance Monitoring (APM) tool for capturing page load time, network metrics, resource usage, and errors in web applications.

Features

  • 📊 Page load performance metrics
  • 🌐 Network request monitoring (fetch and XMLHttpRequest)
  • ⚠️ Error tracking (runtime errors and unhandled promises)
  • 🔄 Session tracking
  • 📈 Custom event timing
  • 🪶 Lightweight with zero dependencies

Installation

npm install @labana-vividh32/react-apm

Quick Start

import { initAPM } from '@labana-vividh32/react-apm';

// Initialize at the entry point of your application
initAPM({
  endpoint: 'https://your-apm-backend.com/metrics',
  appName: 'my-awesome-app'
});

Configuration Options

| Option | Type | Description | |--------|------|-------------| | endpoint | String | URL where metrics will be sent (required) | | appName | String | Name of your application (default: 'unknown-app') |

Metrics Collected

Page Load Metrics

Automatically captures page load timing information when your application initializes.

Network Metrics

Monitors all fetch and XMLHttpRequest calls, capturing:

  • URL
  • Method
  • Status code
  • Duration
  • Error information (if applicable)

Error Metrics

Automatically captures:

  • Unhandled JavaScript exceptions
  • Unhandled Promise rejections

Custom Event Metrics

Track custom operations with timing information.

Usage Examples

Custom Event Tracking

Track custom events and measure their duration:

import { startEvent, endEvent } from '@labana-vividh32/react-apm';

// Start tracking an event
function loadUserProfile() {
  // Start the event
  startEvent('userProfileLoad');
  
  fetchUserData()
    .then(data => {
      // Process data
      endEvent('userProfileLoad');
    })
    .catch(error => {
      // Handle error
      endEvent('userProfileLoad');
    });
}

Session Tracking

Each page session gets a unique identifier that's included with all metrics. This allows you to correlate metrics from the same user session.

Server-Side Integration

The APM client sends data to your specified endpoint in the following format:

{
  "app": "your-app-name",
  "sessionId": "unique-session-identifier",
  "metrics": {
    "type": "page_load|network_request|error|custom_event",
    "timestamp": 1634567890123,
    // Additional metrics specific to the type
  }
}

Metric Types and Their Properties

Page Load Metrics

{
  "type": "page_load",
  "timestamp": 1634567890123,
  "timetaken": 1250 // Time in milliseconds
}

Network Request Metrics

{
  "type": "network_request",
  "timestamp": 1634567890123,
  "method": "GET",
  "url": "https://api.example.com/data",
  "status": 200,
  "duration": 350 // Time in milliseconds
}

Error Metrics

{
  "type": "error",
  "timestamp": 1634567890123,
  "subtype": "runtime_error|unhandled_promise",
  "message": "TypeError: Cannot read property 'x' of undefined",
  "stack": "Error at line..."
}

Custom Event Metrics

{
  "type": "custom_event",
  "timestamp": 1634567890123,
  "name": "userProfileLoad",
  "duration": 450 // Time in milliseconds
}

Browser Compatibility

Compatible with all modern browsers that support:

  • Fetch API
  • Performance API
  • ES6 features

License

MIT