preact
preact copied to clipboard
Fix option focus bug caused by IE11 option value workaround.
Whenever children of an
This hack breaks the behaviour of <select> element on other browsers: if you click on the dropdown, mouse over another option (but don't click) and rendering happens at this moment, the focus will go back to the current element. This is caused by setting the value attribute on
To resolve the issue, we save the value dom attribute before we place children and then check if it has changed afterwards, as a way to detect whether we need to activate the hack.
I'm not sure that this is the best solution to the problem - please let me know if you have a better one in mind!
Here's a link for reproducing the issue (at least on Firefox 86.0.1 on Windows 10). To reproduce, click on the dropdown, hover on any element other than the first one, wait for the callback to fire - you should see the focus moving to the first element.
📊 Tachometer Benchmark Results
Summary
duration
- 02_replace1k: unsure 🔍 -2% - +0% (-4.29ms - +0.78ms)
preact-local vs preact-master - 03_update10th1k_x16: unsure 🔍 -5% - +4% (-1.91ms - +1.59ms)
preact-local vs preact-master - 07_create10k: unsure 🔍 -1% - +1% (-11.37ms - +25.91ms)
preact-local vs preact-master - filter_list: unsure 🔍 -2% - +2% (-0.67ms - +0.68ms)
preact-local vs preact-master - hydrate1k: unsure 🔍 -2% - +0% (-3.54ms - +0.48ms)
preact-local vs preact-master - many_updates: unsure 🔍 -7% - +3% (-2.97ms - +1.49ms)
preact-local vs preact-master - text_update: unsure 🔍 -5% - +2% (-0.14ms - +0.06ms)
preact-local vs preact-master
usedJSHeapSize
- 02_replace1k: unsure 🔍 +0% - +0% (+0.00ms - +0.01ms)
preact-local vs preact-master - 03_update10th1k_x16: unsure 🔍 -0% - +0% (-0.01ms - +0.01ms)
preact-local vs preact-master - 07_create10k: unsure 🔍 -0% - +0% (-0.00ms - +0.00ms)
preact-local vs preact-master - filter_list: unsure 🔍 -0% - +0% (-0.00ms - +0.00ms)
preact-local vs preact-master - hydrate1k: unsure 🔍 -0% - +1% (-0.01ms - +0.04ms)
preact-local vs preact-master - many_updates: unsure 🔍 +0% - +0% (+0.00ms - +0.00ms)
preact-local vs preact-master - text_update: unsure 🔍 +0% - +0% (+0.00ms - +0.00ms)
preact-local vs preact-master
Results
02_replace1k
- Browser: chrome-headless 89.0.4389.90
- Sample size: 80
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 174.10ms - 178.05ms | - | unsure 🔍 -0% - +2% -0.78ms - +4.29ms |
preact-local | 172.73ms - 175.92ms | unsure 🔍 -2% - +0% -4.29ms - +0.78ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 3.57ms - 3.57ms | - | unsure 🔍 -0% - -0% -0.01ms - -0.00ms |
preact-local | 3.57ms - 3.58ms | unsure 🔍 +0% - +0% +0.00ms - +0.01ms | - |
run-warmup-0
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 65.66ms - 66.80ms | - | unsure 🔍 -1% - +1% -0.96ms - +0.66ms |
preact-local | 65.81ms - 66.96ms | unsure 🔍 -1% - +1% -0.66ms - +0.96ms | - |
run-warmup-1
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 102.04ms - 103.78ms | - | unsure 🔍 -1% - +1% -1.12ms - +1.30ms |
preact-local | 101.98ms - 103.66ms | unsure 🔍 -1% - +1% -1.30ms - +1.12ms | - |
run-warmup-2
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 103.87ms - 112.40ms | - | faster ✔ 1% - 10% 0.49ms - 11.31ms |
preact-local | 110.70ms - 117.37ms | slower ❌ 0% - 11% 0.49ms - 11.31ms | - |
run-warmup-3
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 67.86ms - 74.49ms | - | unsure 🔍 -3% - +9% -1.69ms - +6.46ms |
preact-local | 66.43ms - 71.15ms | unsure 🔍 -9% - +2% -6.46ms - +1.69ms | - |
run-warmup-4
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 107.00ms - 113.36ms | - | unsure 🔍 -5% - +3% -5.40ms - +3.65ms |
preact-local | 107.84ms - 114.27ms | unsure 🔍 -3% - +5% -3.65ms - +5.40ms | - |
run-final
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 64.78ms - 67.56ms | - | slower ❌ 1% - 6% 0.42ms - 3.81ms |
preact-local | 63.08ms - 65.02ms | faster ✔ 1% - 6% 0.42ms - 3.81ms | - |
03_update10th1k_x16
- Browser: chrome-headless 89.0.4389.90
- Sample size: 60
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 39.39ms - 41.83ms | - | unsure 🔍 -4% - +5% -1.59ms - +1.91ms |
preact-local | 39.19ms - 41.71ms | unsure 🔍 -5% - +4% -1.91ms - +1.59ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 3.65ms - 3.66ms | - | unsure 🔍 -0% - +0% -0.01ms - +0.01ms |
preact-local | 3.65ms - 3.66ms | unsure 🔍 -0% - +0% -0.01ms - +0.01ms | - |
07_create10k
- Browser: chrome-headless 89.0.4389.90
- Sample size: 50
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 1828.95ms - 1851.86ms | - | unsure 🔍 -1% - +1% -25.91ms - +11.37ms |
preact-local | 1832.98ms - 1862.37ms | unsure 🔍 -1% - +1% -11.37ms - +25.91ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 25.97ms - 25.97ms | - | unsure 🔍 -0% - +0% -0.00ms - +0.00ms |
preact-local | 25.97ms - 25.97ms | unsure 🔍 -0% - +0% -0.00ms - +0.00ms | - |
filter_list
- Browser: chrome-headless 89.0.4389.90
- Sample size: 50
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 28.88ms - 29.90ms | - | unsure 🔍 -2% - +2% -0.68ms - +0.67ms |
preact-local | 28.96ms - 29.83ms | unsure 🔍 -2% - +2% -0.67ms - +0.68ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 1.58ms - 1.59ms | - | unsure 🔍 -0% - +0% -0.00ms - +0.00ms |
preact-local | 1.58ms - 1.59ms | unsure 🔍 -0% - +0% -0.00ms - +0.00ms | - |
hydrate1k
- Browser: chrome-headless 89.0.4389.90
- Sample size: 50
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 183.35ms - 186.44ms | - | unsure 🔍 -0% - +2% -0.48ms - +3.54ms |
preact-local | 182.07ms - 184.65ms | unsure 🔍 -2% - +0% -3.54ms - +0.48ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 6.17ms - 6.19ms | - | unsure 🔍 -1% - +0% -0.04ms - +0.01ms |
preact-local | 6.17ms - 6.21ms | unsure 🔍 -0% - +1% -0.01ms - +0.04ms | - |
many_updates
- Browser: chrome-headless 89.0.4389.90
- Sample size: 70
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 41.15ms - 44.37ms | - | unsure 🔍 -4% - +7% -1.49ms - +2.97ms |
preact-local | 40.48ms - 43.56ms | unsure 🔍 -7% - +3% -2.97ms - +1.49ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 4.83ms - 4.83ms | - | unsure 🔍 -0% - -0% -0.00ms - -0.00ms |
preact-local | 4.83ms - 4.83ms | unsure 🔍 +0% - +0% +0.00ms - +0.00ms | - |
text_update
- Browser: chrome-headless 89.0.4389.90
- Sample size: 100
- Built by: Benchmarks #161
-
Commit: 512bbfd
duration
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 2.91ms - 3.05ms | - | unsure 🔍 -2% - +5% -0.06ms - +0.14ms |
preact-local | 2.87ms - 3.01ms | unsure 🔍 -5% - +2% -0.14ms - +0.06ms | - |
usedJSHeapSize
Version | Avg time | vs preact-master | vs preact-local |
---|---|---|---|
preact-master | 0.98ms - 0.98ms | - | unsure 🔍 -0% - -0% -0.00ms - -0.00ms |
preact-local | 0.98ms - 0.98ms | unsure 🔍 +0% - +0% +0.00ms - +0.00ms | - |
Coverage remained the same at 99.445% when pulling 512bbfd5a540ec302027b1b5727505d9309d9a2f on sznurek:master into c7f57db13af43b8cc3353a138639ad9dd9523e16 on preactjs:master.
Is there anything else I should do before this pull request is reviewed?