Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-native-release-profiler

Package Overview
Dependencies
Maintainers
0
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-release-profiler

A fast and simple library to passively profile JS/Hermes performance in production and release builds.

  • 0.2.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2.1K
decreased by-13.7%
Maintainers
0
Weekly downloads
 
Created
Source

react-native-release-profiler

A fast and simple library to passively profile JS/Hermes performance in production and release builds.

Why

Usually performance issues are profiled in debug builds, which could lead to false positives (e.g. JS Garbage Collectors, Hermes-specific debug markers, or other LLDB hangs).

react-native-release-profiler allows you to profile your app in release builds, both in a local environment to profile specific issues, as well as in a production environment to spot regressions or collect performance samples from a wider variety of user devices.

Web support

The web support is based on sampling JS Self-Profiling API, so not all browsers support it yet. To see in which browsers it is supported, check this page.

To make it possible to work you'll need to add 'Document-Policy': 'js-profiling' header to your server response. Using webpack in dev mode you can do that by adding these lines to your webpack.config.js:

devServer: {
    headers: {
        'Document-Policy': 'js-profiling',
    },
}

[!WARNING] By default sampling interval is set to 10 milliseconds. This is the lowest supported interval, but on Windows machines this interval will be 16 milliseconds.

Need help?

If you're having performance problems in your app, feel free to reach out to us at hello@margelo.io. We do this a lot. 😉

Installation

yarn add react-native-release-profiler
cd ios && pod install

Usage

  1. Install react-native-release-profiler
  2. Build your app in release mode
  3. Start a profiling session:
    import { startProfiling } from 'react-native-release-profiler'
    
    startProfiling()
    
  4. Stop the profiling session:
    import { stopProfiling } from 'react-native-release-profiler'
    
    // `true` to save the trace to the phone's downloads folder, `false` otherwise
    const path = await stopProfiling(true)
    
  5. Download and process the performance trace from your phone to your PC:
    • On Android:
      npx react-native-release-profiler --fromDownload --appId <your appId>
      
    • On iOS and web:
      npx react-native-release-profiler --local <path to profile>
      
  6. Open the performance trace in your tool of choice:

API

startProfiling(): void

Synchronously starts the Hermes Profiling Session.

stopProfiling(saveInDownloadsDirectory?: boolean, fileName?: string): Promise<string>

Asynchronously stops the Hermes Profiling Session, and saves the file in a cache or downloads directory if saveInDownloadsDirectory is true using the provided fileName (web only).

Returns the path of the saved profile.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Keywords

FAQs

Package last updated on 05 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc