You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<h4align="center"> Reactime is an opensource 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. </h4>
13
+
<h4align="center"> 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. </h4>
Whenever the state is changed (whenever setState, useState is called), this
58
+
extension will create a snapshot of the current state tree and record it. Each
59
+
snapshot will be displayed in Chrome DevTools under the Reactime panel.
60
+
<br>
61
+
<br>
62
+
54
63
### 🔹 Snapshot Series and Action Comparison
55
64
56
65
You can save a series of state snapshots and use it to analyze changes in
57
-
component render performance between current and previous series of snapshots.
66
+
component render performance between the current and the previous series of snapshots.
58
67
You can also name specific snapshots and compare all snapshots with the same
59
68
name.
60
69
<br>
@@ -69,16 +78,14 @@ each component upon hovering.
69
78
<br>
70
79
<br>
71
80
72
-
### 🔹 Recording
81
+
### 🔹 Download/Upload Snapshots
73
82
74
-
Whenever state is changed (whenever setState, useState is called), this
75
-
extension will create a snapshot of the current state tree and record it. Each
76
-
snapshot will be displayed in Chrome DevTools under the Reactime panel.
83
+
Download the recorded snapshots as a JSON file and upload them to access state trees across different sessions.
77
84
<br>
78
85
<br>
79
86
80
87
<palign="center">
81
-
<imgsrc="./assets/v20/history.gif" />
88
+
<imgsrc="./assets/gifs/importExport_v21.gif" />
82
89
</p>
83
90
<br>
84
91
@@ -90,7 +97,7 @@ Performance tab in Chrome DevTools under the Reactime panel.
90
97
91
98
### 🔹 Jumping
92
99
93
-
Using the actions sidebar, a user can jump to any previous recorded snapshots.
100
+
Using the actions sidebar, a user can jump to any previously recorded snapshots.
94
101
Hitting the jump button on any snapshot will allow a user to view state data at
95
102
any point in the history of the target application.
96
103
@@ -103,7 +110,7 @@ features and visual representation of the tree components.
103
110
### 🔹 Next.js
104
111
105
112
Reactime offers debugging and performance tools for Next.js apps: time-traveling
106
-
debugging, preventing unnecessary components re-renders and making your
113
+
debugging, preventing unnecessary component re-renders and making your
107
114
application faster.
108
115
109
116
### 🔹 Remix
@@ -115,7 +122,7 @@ needs to be added for multi-route time traveling. Every other feature works.
115
122
116
123
Reactime offers support for TypeScript applications using stateful class
117
124
components and functional components. Further testing and development is
118
-
required for custom hooks, and Concurrent Mode.
125
+
required for custom hooks and Concurrent Mode.
119
126
120
127
### 🔹 Documentation
121
128
@@ -127,26 +134,25 @@ of the structure and interfaces of the codebase.
127
134
128
135
### <b>Additional Features</b>
129
136
130
-
- In-app tabspecific tutorial walkthroughs
137
+
- In-app tab-specific tutorial walkthroughs
131
138
- Hover over a component to view tooltip details on state visualizations
132
139
- Double-click to collapse child components
133
140
- Click to focus on a portion of the component map
134
-
- A dropdown to support development of projects on multiple tabs
141
+
- A dropdown to support the development of projects on multiple tabs
135
142
- Intuitive navigation between state snapshots
136
-
- Download/upload the current snapshots in memory
137
143
- Locked/unlocked feature allowing temporary pause of state monitoring
138
144
139
145
<h1>What's New!</h1>
140
146
141
-
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.
147
+
Reactime 21.0 focuses on several key performance issues to improve application stability and reliability, bug fixes, a revamped UI, and the inclusion of a state export and import feature.
142
148
143
149
<i>Under the Hood</i>
144
150
145
-
We have resolved several persistent bugs, including a major issue that caused apps using Reactimeto 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.
151
+
We have resolved several persistent bugs that would result in a black screen during regular application use. One of the major causes of Reactime’s black screen bug was related to the use of deprecated packages, such as an outdated Material UI package. Another source of black screens and poor user experience appeared to be related to the application frequently terminating ports. This prevented Reactime’s contentScript.ts, background.js, and MainContainer.tsx from communicating with the developer’s application. Through the implementation of a ‘keepAlive’ function, we allow the connection to stay long-lived for longer. Updating the current Material UI package from v4 to v5 and implementing keepAlive connections have resulted in a drastic decrease in port disconnects.
146
152
147
-
<i>Accessibility</i>
153
+
In an effort to improve maintainability and application longevity, there were several engineering interventions that were implemented. One of the goals for Reactime 21.0 was to decrease the dependency on external libraries and packages, which we have done by updating or removing packages. While the documentation for the backend and extension was adequate, there was a severe lack of documentation of all the front-end components. Reactime 21.0 has changed this with documentation covering more than 90% of front-end component logic. We have also added new images and charts so future developers can understand how components are interconnected. These improvements should lead to faster development of features in the future.
148
154
149
-
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.
155
+
For user experience, we focused on several major goals. The new download and upload feature allows developers to download their current state history so that developers may share their findings or review them later down the road. Another focus was to remove features that did not meet Reactime’s standards for user experience. The “Compare Actions” option has been removed until the feature becomes more concrete. The initial application load screen has had timings loosened to allow developers with slower computers to allow better connection between Reactime and their application. Loading error messages have been improved to allow easier initial troubleshooting to decrease frustration. Last but not least, while we have now migrated to Material UI v5, we have started the slow transition to convert various components into Material UI. Along with a new take on Reactime’s logo, this has resulted in a cleaner and more modern appearance.
150
156
151
157
If you would like to read more about previous releases, click <ahref="https://github.com/open-source-labs/reactime/releases">here!</a>
152
158
@@ -175,7 +181,7 @@ your browser.
175
181
Go to Chrome Extensions (make sure Chrome Extension is in Developer Mode) for
176
182
manual installation in (https://developer.chrome.com/extensions/faq#faq-dev-01)
177
183
and click on Load Unpacked. Use `src/extension/build/` to load this extension.
178
-
Turn on 'Allow access to file URLs' in extension details page if testing
184
+
Turn on 'Allow access to file URLs' in the extension details page if testing
179
185
locally.
180
186
181
187
### Looking to contribute to Reactime?
@@ -196,7 +202,7 @@ Then open up your Chrome DevTools and navigate to the Reactime panel.
196
202
### ❓ <b>Why is Reactime telling me that no React application is found?</b>
197
203
198
204
Reactime initially runs using the dev tools global hook from the Chrome API. It
199
-
takes time for Chrome to load this. Try refreshing your application a couple
205
+
takes time for Chrome to load this. Try refreshing your application a couple of
200
206
times until you see Reactime running.
201
207
202
208
### ❓ <b>Why do I need to have React Dev Tools enabled?</b>
@@ -210,19 +216,19 @@ clicking the right mouse button “Reload frame”.
210
216
211
217
### ❓ <b>I found a bug in Reactime</b>
212
218
213
-
Reactime is an opensource project, and we'd love to hear from you about
219
+
Reactime is an open-source project, and we'd love to hear from you about
214
220
improving the user experience. Please read [DEVELOPER README](src/README.md),
215
221
and create a pull request (or issue) to propose and collaborate on changes to Reactime.
216
222
217
223
### ❓ <b>Node version compatibility</b>
218
224
219
-
With release of Node v18.12.1(LTS) on 11/4/22, the script has been updated to
225
+
With the release of Node v18.12.1(LTS) on 11/4/22, the script has been updated to
220
226
'npm run dev' | 'npm run build' for backwards compatibility.<br/> For version
221
227
Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'
222
228
223
229
## <b>Read More</b>
224
230
225
-
-[It's time for Reactime 20.0!](linkhere)
231
+
-[Cheers to Reactime, Version 21!](https://medium.com/@brok3turtl3/cheers-to-reactime-version-21-fa4dafa4bc74)
226
232
227
233
## <b>Authors</b>
228
234
@@ -313,6 +319,11 @@ Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'
Copy file name to clipboardExpand all lines: src/README.md
+13-9Lines changed: 13 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Brief
4
4
5
-
Our mission at Reactime is to maintain and iterate constantly, but never at the expense of future developers. We know how hard it is to quickly get up to speed and onboard in a new codebase. So here are some helpful pointers to help you hit the ground running. 🏃🏾💨
5
+
Our mission at Reactime is to maintain and iterate constantly, but never at the expense of future developers. We know how hard it is to quickly get up to speed and onboard in a new codebase. So here are some helpful pointers to help you hit the ground running. 🏃🏾
6
6
7
7
## Building from source
8
8
@@ -22,7 +22,7 @@ npm install --legacy-peer-deps
22
22
npm run dev
23
23
```
24
24
25
-
(if ‘–legacy-peer-deps’ doesn’t work, use the ‘–force’ flag)
25
+
If ‘npm install –legacy-peer-deps’ doesn’t work, install dependencies using ‘npm install --force’
26
26
27
27
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.<br/>
28
28
For version Node v16.16.0, please use script 'npm run devlegacy' || 'npm run buildlegacy'
@@ -45,7 +45,7 @@ Similar approach for Next.js and Remix demo apps
45
45
- Navigate to http://localhost:8080/ to inspect the demo application using Reactime!
46
46
- Once the initial build has been completed and loaded into chrome as an unpacked extension, you may enter the root directory and run ‘npm run dev’ to hot load the chrome extension. You should see ‘[ Starting the Chrome Hot Plugin Reload Server... ]’. You should now be able to see changes without having to rebuild the extension. If for some reason it does not, feel free to rebuild and then try the Hot Plugin Reload Server again.
@@ -73,7 +73,7 @@ Any changes to console.logs in Reactime can be seen by refreshing the browser th
73
73
74
74
## Replace Functionality for Outdated Packages
75
75
76
-
Package dependencies need to be trimmed down, updated, and/or removed. Peer dependency errors are the reason npm install --force is necessary when installing the dependencies of Reactime.
76
+
Package dependencies need to be trimmed down, updated, and/or removed. Peer dependency errors are the reason npm install --force may be necessary when installing the dependencies of Reactime. While Reactime v21.0 has reduced package dependency errors for developers from multiple pages of errors down to ~15 errors, the goal is to decrease overall package/library dependency to a minimum to promote long-term maintainability
77
77
78
78
Material-ui/core has been updated to use React 18. Future developers may choose to remove Material-ui/core from the application to ensure compatibility in the future or continue to build out the UI. The choice is yours!
79
79
@@ -90,6 +90,10 @@ Can Reactime functionality be extended so applications using Redux can track sta
90
90
91
91
Yes, but it would be very time-consuming and not the most feasible option while Redux devtools exists already. With how Redux devtools is currently set up, a developer is unable to use Redux devtools as a third-party user and integrate its functionality into their own application, as Redux devtools is meant to be used directly on an application using Redux for state-tracking purposes. Since the devtools do not appear to have a public API for integrated use in an application or it simply does not exist, Redux devtools would need to be rebuilt from the ground up and then integrated into Reactime, or built into Reactime directly still from scratch.
92
92
93
+
Can Reactime be refactored into a Redux application?
94
+
95
+
Yes, in fact, it should be. Reactime currently uses [Immer](https://github.com/immerjs/immer#readme) to handle immutable data structures. The foundation for Redux is already there, as Reactime uses reducers, a store, action creators, and action types. Adding a state management library like Redux, would allow for further application stability and maintainability as it would decrease the amount of less frequently maintained package/libraries.
96
+
93
97
# File Structure
94
98
95
99
In the _src_ folder, there are three directories we care about: _app_, _backend_, and _extension_.
@@ -148,7 +152,7 @@ All the diagrams of data flows are available on [MIRO](https://miro.com/app/boar
0 commit comments