Skip to content

ugurcanatas/tiny-timer-proxy

Repository files navigation

Tiny Proxy

Small Javascript proxy wrapper around setTimeout, clearTimeout, setInterval and clearInterval. This library can help you identify the leaking timers and intervals in your applications.

Installation

  • Yarn
yarn add tiny-timer-proxy
  • NPM
npm i tiny-timer-proxy

Why?

This tool was developed to monitor and analyze the frequency of timeouts and intervals in a React Native application, helping developers assess their impact on performance. It can help identifying uncleared & leaking timeouts and intervals.

Usage

// Import
import { TinyProxy } from "tiny-timer-proxy";

// Initialize the class
const p = new TinyProxy({ shouldLog: true });

// Call timeout or/and interval setup methods

p.setupTimerProxy(); // timeouts
p.setupIntervalProxy(); // intervals

After adding above to somewhere in your application, run your application and you can observe the console logs if shouldLog property is set to true.

You should see something like:

   # ....other logs....
   clearTimeout called with: {"argumentsList": [1074], "id": 1074, "thisArg": undefined}
   clearTimeout called with: {"argumentsList": [1107], "id": 1107, "thisArg": undefined}
   setTimeout called with: {"argumentsList": [[Function anonymous], 5000], "id":
   1125, "thisArg": undefined}
   # ....other logs....

Alternatively, you can access the active timeout and interval variables(Set) via:

const p = new TinyProxy({ shouldLog: true });

p.setupTimerProxy(); // timeouts

console.log('active timeouts ->', p.activeTimeouts)