@exodus/heat-map-view

1.0.14 • Public • Published

Heat Map View

Heat Map View logo

Heat up performance offenders! 🔥


HeatMapView helps us detect frequently re-rendered views without having phone connected to computer at all times. A significant portion of React performance issues are caused by unnecessary re-renders. This library enables us to observe components which are re-rendered too frequently in real time.

Installation

yarn add @exodus/heat-map-view

Usage

Import initHeatMapView

import { initHeatMapView } from '@exodus/heat-map-view'

Initialize it in App.js

useEffect(
  () => {
    if (ready) {
      if (__DEV__) {
        initHeatMapView({
          enabled: true,
          divisor: 20,
          dynamicOpacity: false, 
          overlayStyle: {
            borderWidth: 1,
            borderColor: 'white',
          },

          surface: 'floor',
          skipInstances: 1,
          opacity: 0.5,
        })
      }
    }
  },
  [ready]
)

Config

Prop Default Params Type Description
divisor 30 number Render count divisor. Heat is calculated by renderCount / divisor = [0-1]. 0 - Blue, 1 - Red.
dynamicOpacity false boolean Heat makes view less transparent. If enabled 0 - Fully transparent, 1 - Fully opaque.
opacity 0.5 number HeatMap overlay opacity. Disabled if dynamicOpacity === true
minHeat 0 number Minimum heat value to be visible.
maxHeat -1 number Maximum heat value to be visible. -1 equals infinity.
overlayStyle {} object Custom overlay style.
surface 'floor' 'floor'|'ceiling' Should heatmap draw on top or bottom of the component.
skipInstances 2 number Skips initial number view instances.

Disable/Enable HeatMapView in runtime

import {
  initHeatMapView, // Initializes and enables HeatMapView
  installHeatMapView, // Enables HeatMapView
  uninstallHeatMapView, // Disables HeatMapView
  isHeatMapViewInstalled, // Check if HeatMapView is enabled
} from '@exodus/heat-map-view'

Create Heat Map toggler

const styles = StyleSheet.create({
  heatMapViewEmergency: {
    position: 'absolute',
    height: 30,
    width: 50,
    backgroundColor: 'transparent',
    left: dimensionsWidth / 2 - 25,
    top: getStatusBarHeight(),
  },
})

function HeatMapViewToggle() {
  return (
    <TouchableOpacity
      style={styles.heatMapViewEmergency}
      onPress={() => {
        if (isHeatMapViewInstalled()) {
          uninstallHeatMapView()
        } else {
          installHeatMapView()
        }
      }}
    />
  )
}

Roadmap

  • [ ] Dynamic heat style provider
  • [ ] Heat by velocity (Friction)
  • [x] Include example

Readme

Keywords

Package Sidebar

Install

npm i @exodus/heat-map-view

Weekly Downloads

1,032

Version

1.0.14

License

MIT

Unpacked Size

7.13 kB

Total Files

7

Last publish

Collaborators

  • aspino
  • cawfree
  • markoexodus
  • ismamz
  • exojo
  • doguhan
  • ronaldcrb
  • nantoaqui
  • bekatd
  • atemafac-nd
  • frankliexodus
  • ale-exo
  • davidexodus
  • geoffreyrousset
  • marcos.kichel
  • kryptkeep
  • andrewtoth-exodus
  • mmehta-10
  • tunguyennnnn
  • cdotta-exodus
  • awesomeniko
  • mbaraniak-exodus
  • hasakura
  • shehryar6
  • rec
  • awilson-rs
  • ggabarrin-rs
  • r4vn
  • exorich
  • cryptosgr
  • mol0d
  • yevhenii_molodyk
  • yilmazbahadir
  • muratso
  • exoleo
  • 633kh4ck
  • ossel
  • davidfraga610
  • clarkexo
  • james-gre
  • juraex
  • ralph.ba
  • angelloz
  • joshuabot
  • jamiemaw
  • exodus-justin.za
  • javiexodus
  • rg911
  • alex.alexandrius
  • filipexodus
  • ryansquared-npm
  • andrescarreon
  • florianmathieu
  • janwe
  • fboucquez
  • skapala
  • umito
  • lanahizzle
  • iaacek
  • ps.mcnally
  • akinncar
  • voltagebots
  • kwwood
  • sergii_bo
  • alexandrbbm
  • danh.t.vo
  • ezenwankwogabriel
  • meniem
  • mzndako
  • kevva
  • feri42
  • jprichardson
  • farisissa
  • ryanzim
  • headfire
  • gutenye
  • mosesbot
  • roccomuso
  • dcastagnoli
  • sonaye
  • ves
  • tenaciousmv
  • asyakost
  • bulgakovk
  • chalker
  • andrejb
  • jaydp17
  • olistic
  • joepie91
  • merlz
  • vbonini
  • devopsrobot
  • jenish-sojitra
  • nachoalvarez
  • giovannirco
  • diegomura
  • lanre-mark
  • sunilagrawal
  • guillecura
  • mariosvlad
  • federico-po
  • pagan404