2

GitHub - open-source-labs/reactime: Developer tool for time travel debugging and...

 1 year ago
source link: https://github.com/open-source-labs/reactime
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client


readme-logo-300-no-version.png



React Performance Tool
Nominated for React Open Source Awards 2020

Reactime is an open source Chrome developer tool for time travel debugging and performance monitoring in React applications. Reactime enables developers to record snapshots of application state, jump between and inspect state snapshots, and monitor performance metrics such as component render time and render frequency.


  •     •   DEVELOPER README

Overview.gif

Website

Features

small_blue_diamond Viewing

You can view your application's file structure and click on a snapshot to view your app's state. State can be visualized in a Component Graph, JSON Tree, or Performance Graph. Snapshots can be compared with the previous snapshot, which can be viewed in Diff mode.

map.gif

small_blue_diamond Snapshot Series and Action Comparison

You can save a series of state snapshots and use it to analyze changes in component render performance between current and previous series of snapshots. You can also name specific snapshots and compare all snapshots with the same name.

small_blue_diamond Components Comparison

When toggled to a specific snapshot, a visualization of the individual components of the snapshot will be displayed. This can be done under the same Performance tab where the snapshots are rendered. You will also find details of each component upon hovering.

small_blue_diamond Recording

Whenever state is changed (whenever setState, useState is called), this extension will create a snapshot of the current state tree and record it. Each snapshot will be displayed in Chrome DevTools under the Reactime panel.

history.gif

small_blue_diamond Re-render Optimization

One of the most common issues that affects performance in React is unnecessary render cycles. This problem can be fixed by checking your renders in the Performance tab in Chrome DevTools under the Reactime panel.

small_blue_diamond Jumping

Using the actions sidebar, a user can jump to any previous recorded snapshots. Hitting the jump button on any snapshot will allow a user to view state data at any point in the history of the target application.

small_blue_diamond Gatsby

Reactime offers full support for Gatsby applications. You would be able to identify unnecessary renders, duration of each rendering, travel-debugging features and visual representation of the tree components.

small_blue_diamond Next.js

Reactime offers debugging and performance tools for Next.js apps: time-traveling debugging, preventing unnecessary components re-renders and making your application faster.

small_blue_diamond Remix

Reactime offers debugging and performance tools for Remix apps (in beta). Support still needs to be added for multi-route time traveling. Every other feature works.

small_blue_diamond TypeScript Support

Reactime offers support for TypeScript applications using stateful class components and functional components. Further testing and development is required for custom hooks, and Concurrent Mode.

small_blue_diamond Documentation

After cloning this repository, developers can simply run npm run docs at the root level and serve the dynamically generated /docs/index.html file on a browser. Doing so will provide a readable, extensible, and interactive GUI view of the structure and interfaces of the codebase.

Additional Features

  • In-app tab specific tutorial walkthroughs
  • Hover over a component to view tooltip details on state visualizations
  • Double-click to collapse child components
  • Click to focus on a portion of the component map
  • A dropdown to support development of projects on multiple tabs
  • Intuitive navigation between state snapshots
  • Download/upload the current snapshots in memory
  • Locked/unlocked feature allowing temporary pause of state monitoring

What's New!

Reactime 20.0 includes several key improvements under the hood to improve performance and resolve existing bugs, as well as a revamped UX to achieve WCAG compatibility.

Under the Hood

We have resolved several persistent bugs, including a major issue that caused apps using Reactime to crash when using login or submit functionality. As part of our effort to improve Reactime performance overall, we have continued to implement TypeScript throughout the codebase and created new tests with React Testing Library. We have also made testing more robust, improving existing tests and fixing broken test environments. Lastly, we have upgraded Reactime by removing some deprecated code and packages, reducing compilation errors.

Accessibility

We have updated the UX, seeking consistency with the Web Content Accessibility Guidelines (WCAG). Specifically, we have improved the size and design of target elements throughout Reactime and carefully chosen new color contrasts to ensure WCAG compatibility.

If you would like to read more about previous releases, click here!

Installation

To get started, install the Reactime extension from Chrome Web Store.

After installing Reactime, you can test its functionalities with your React application in development mode.

Please note, the time jumping feature will ONLY work when your application is running in development mode. In production mode, you are able to view your application’s component map but no additional features.

NOTE: The React Developer Tools extension is also required for Reactime to run, if you do not already have it installed on your browser.

Manual Installation

Go to Chrome Extensions (make sure Chrome Extension is in Developer Mode) for manual installation in (https://developer.chrome.com/extensions/faq#faq-dev-01) and click on Load Unpacked. Use src/extension/build/ to load this extension. Turn on 'Allow access to file URLs' in extension details page if testing locally.

Looking to contribute to Reactime?

Please refer to Developer Install for a detailed guide:

Refer DEVELOPER README for more info on the project, and instructions on building from source.

How to Use

After installing the Chrome extension, just open up your project in the browser.

Then open up your Chrome DevTools and navigate to the Reactime panel.

Troubleshooting

questionWhy is Reactime telling me that no React application is found?

Reactime initially runs using the dev tools global hook from the Chrome API. It takes time for Chrome to load this. Try refreshing your application a couple times until you see Reactime running.

questionWhy do I need to have React Dev Tools enabled?

Reactime works in tandem with the React Developer Tools to access a React application's Fiber tree; under the hood, Reactime traverses the Fiber tree through the React Developer Tool's global hook, pulling all relevant information needed to display to the developer

questionThere is a black screen instead of the Reactime extension

Try refreshing the application you want to test and refresh the DevTools by clicking the right mouse button “Reload frame”.

questionI found a bug in Reactime

Reactime is an open source project, and we'd love to hear from you about improving the user experience. Please read DEVELOPER README, and create a pull request (or issue) to propose and collaborate on changes to Reactime.

questionNode version compatibility

With release of Node v18.12.1(LTS) on 11/4/22, the script has been updated to 'npm run dev' | 'npm run build' for backwards compatibility.
For version Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'

Read More

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details.


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK