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
The scenario this PR resolves is when 'Add document' is used to create a version document from within a release. When a document is selected, the version document is created, and then the success toast is shown whilst the search dialog is closed.
However, the subscription used in useBundleDocuments must receive the new event and update the store state before this new document will appear in the list on release detail. This creates a weird experience where we say success, but there's a delay before everything looks as would be expected.
This PR changes this flow:
Instead of closing the search dialog and showing toast once createVersion resolves, closes the toast immediately after selecting a document
A pending row (skeleton loading) is added to the document list table
Once the document is retrieved in the bundle documents store, the pending row is replaced with the actual document
The toast then shows, once the row is fully visible on the table
NOTE: this is throttled, it is never this noticable
What to review
Testing
Existing tests validate no regressions. Should add some tests for showing the pending state - but need to put into a fast follow
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)
35ms
38ms
43ms
451ms
234ms
10.9s
article (body)
14ms
16ms
20ms
98ms
44ms
5.0s
article (string inside object)
36ms
39ms
42ms
185ms
145ms
7.1s
article (string inside array)
39ms
42ms
45ms
143ms
131ms
6.5s
recipe (name)
20ms
21ms
25ms
50ms
11ms
6.9s
recipe (description)
18ms
19ms
21ms
31ms
0ms
4.5s
recipe (instructions)
5ms
6ms
7ms
17ms
0ms
3.1s
synthetic (title)
50ms
54ms
66ms
340ms
1084ms
13.1s
synthetic (string inside object)
50ms
54ms
62ms
423ms
910ms
8.1s
🧪 Experiment result
The performance result of this branch
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
36ms
38ms
52ms
435ms
646ms
10.5s
article (body)
13ms
15ms
18ms
141ms
212ms
5.0s
article (string inside object)
35ms
36ms
38ms
90ms
279ms
6.4s
article (string inside array)
39ms
41ms
43ms
138ms
124ms
6.4s
recipe (name)
19ms
21ms
24ms
56ms
0ms
7.0s
recipe (description)
17ms
18ms
19ms
40ms
0ms
4.4s
recipe (instructions)
5ms
6ms
7ms
8ms
0ms
3.0s
synthetic (title)
50ms
53ms
62ms
363ms
908ms
13.7s
synthetic (string inside object)
48ms
51ms
55ms
404ms
810ms
7.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
The scenario this PR resolves is when 'Add document' is used to create a version document from within a release. When a document is selected, the version document is created, and then the success toast is shown whilst the search dialog is closed.
However, the subscription used in
useBundleDocuments
must receive the new event and update the store state before this new document will appear in the list on release detail. This creates a weird experience where we say success, but there's a delay before everything looks as would be expected.This PR changes this flow:
createVersion
resolves, closes the toast immediately after selecting a documentNOTE: this is throttled, it is never this noticable
What to review
Testing
Existing tests validate no regressions. Should add some tests for showing the pending state - but need to put into a fast follow
Notes for release
N/A