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
When typing in vision , in some cases, you could get into an scenario in which the cursor jumped to the beginning of the editor.
So user was typing:
a
ab
abc
and when typed d, the cursor jumps to the start
dabc
I identified this as an issue generated by multiple setStates called when typing, adding a debounce helps with this, so the setState will only be executed 300ms after the user finishes typing.
The onPaste handle needs to be modified, so that when the CodeMirror component captures an onPaste event this one is not propagated to the global, neither to the CodeMirror component, applying the event only once and not triggering a subsequent queryChange.
pedrobonamin
changed the title
fix(vision): debounce type setState to fix scroll jump
fix(vision): debounce type setState to fix cursor jump
Jan 10, 2025
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)
39ms
42ms
52ms
339ms
255ms
10.0s
article (body)
14ms
18ms
29ms
155ms
217ms
5.5s
article (string inside object)
37ms
41ms
45ms
209ms
145ms
6.7s
article (string inside array)
41ms
44ms
53ms
191ms
218ms
6.9s
recipe (name)
19ms
21ms
24ms
39ms
0ms
6.8s
recipe (description)
19ms
20ms
22ms
33ms
0ms
4.5s
recipe (instructions)
6ms
8ms
9ms
13ms
0ms
3.2s
synthetic (title)
57ms
61ms
69ms
340ms
1186ms
13.1s
synthetic (string inside object)
54ms
58ms
76ms
570ms
1005ms
9.2s
🧪 Experiment result
The performance result of this branch
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
39ms
47ms
62ms
439ms
752ms
10.2s
article (body)
15ms
17ms
19ms
152ms
229ms
5.2s
article (string inside object)
37ms
39ms
47ms
228ms
235ms
6.6s
article (string inside array)
39ms
42ms
46ms
150ms
143ms
6.5s
recipe (name)
20ms
22ms
27ms
49ms
0ms
7.4s
recipe (description)
18ms
19ms
21ms
29ms
0ms
4.5s
recipe (instructions)
6ms
8ms
9ms
9ms
0ms
3.2s
synthetic (title)
56ms
58ms
70ms
329ms
1042ms
12.6s
synthetic (string inside object)
56ms
60ms
80ms
541ms
1344ms
8.8s
📚 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
When typing in
vision
, in some cases, you could get into an scenario in which the cursor jumped to the beginning of the editor.So user was typing:
and when typed
d
, the cursor jumps to the startI identified this as an issue generated by multiple setStates called when typing, adding a debounce helps with this, so the setState will only be executed 300ms after the user finishes typing.
The onPaste handle needs to be modified, so that when the CodeMirror component captures an onPaste event this one is not propagated to the global, neither to the CodeMirror component, applying the event only once and not triggering a subsequent queryChange.
What to review
Testing
Notes for release
fixes Vision cursor jump