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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
We have a dependency on react-copy-to-clipboard which currently is not flagged to support React 19, and has not been updated in a few years. It is a very thin wrapper on top of copy-to-clipboard and we are only using it in a single spot (when you are deleting a document that is referenced using cross-dataset references).
I replaced it with using the native clipboard API - since this is triggered by a user interaction, it shouldn't need to prompt for permissions - and even if it does the user would be expecting this.
This gets rid of another dependency and moves us towards a fully React 19 compatible world.
What to review
Implementation looks good
Testing
Have done some manual testing in Chrome and Firefox, seems to work fine.
efps — editor "frames per second". The number of updates assumed to be possible within a second.
Derived from input latency. efps = 1000 / input_latency
Detailed information
🏠 Reference result
The performance result of sanity@latest
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
38ms
40ms
44ms
109ms
22ms
10.3s
article (body)
14ms
17ms
28ms
265ms
389ms
5.6s
article (string inside object)
39ms
42ms
52ms
81ms
235ms
7.1s
article (string inside array)
43ms
45ms
52ms
77ms
160ms
7.2s
recipe (name)
20ms
22ms
27ms
46ms
0ms
7.8s
recipe (description)
17ms
19ms
21ms
27ms
0ms
4.5s
recipe (instructions)
5ms
7ms
8ms
23ms
0ms
3.1s
synthetic (title)
52ms
56ms
62ms
90ms
253ms
13.9s
synthetic (string inside object)
51ms
57ms
66ms
499ms
1005ms
9.0s
🧪 Experiment result
The performance result of this branch
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
41ms
45ms
54ms
108ms
199ms
11.9s
article (body)
13ms
16ms
22ms
118ms
197ms
5.1s
article (string inside object)
37ms
41ms
45ms
83ms
128ms
6.6s
article (string inside array)
42ms
46ms
53ms
168ms
146ms
7.1s
recipe (name)
19ms
21ms
23ms
54ms
0ms
7.4s
recipe (description)
17ms
18ms
21ms
38ms
0ms
4.5s
recipe (instructions)
5ms
6ms
7ms
18ms
0ms
3.1s
synthetic (title)
53ms
57ms
68ms
146ms
314ms
12.9s
synthetic (string inside object)
52ms
56ms
63ms
517ms
962ms
8.5s
📚 Glossary
column definitions
benchmark — the name of the test, e.g. "article", followed by the label of the field being measured, e.g. "(title)".
latency — the time between when a key was pressed and when it was rendered. derived from a set of samples. the median (p50) is shown to show the most common latency.
p75 — the 75th percentile of the input latency in the test run. 75% of the sampled inputs in this benchmark were processed faster than this value. this provides insight into the upper range of typical performance.
p90 — the 90th percentile of the input latency in the test run. 90% of the sampled inputs were faster than this. this metric helps identify slower interactions that occurred less frequently during the benchmark.
p99 — the 99th percentile of the input latency in the test run. only 1% of sampled inputs were slower than this. this represents the worst-case scenarios encountered during the benchmark, useful for identifying potential performance outliers.
blocking time — the total time during which the main thread was blocked, preventing user input and UI updates. this metric helps identify performance bottlenecks that may cause the interface to feel unresponsive.
test duration — how long the test run took to complete.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
We have a dependency on
react-copy-to-clipboard
which currently is not flagged to support React 19, and has not been updated in a few years. It is a very thin wrapper on top ofcopy-to-clipboard
and we are only using it in a single spot (when you are deleting a document that is referenced using cross-dataset references).I replaced it with using the native clipboard API - since this is triggered by a user interaction, it shouldn't need to prompt for permissions - and even if it does the user would be expecting this.
This gets rid of another dependency and moves us towards a fully React 19 compatible world.
What to review
Testing
Have done some manual testing in Chrome and Firefox, seems to work fine.
Notes for release
None