Performance: Readable stores
Readable stores affect how reactive data updates propagate to the UI, impacting interaction responsiveness and rendering efficiency.
import { readable } from 'svelte/store'; const store = readable(0, set => { let value = 0; const interval = setInterval(() => { const newValue = computeValue(); if (newValue !== value) { value = newValue; set(value); } }, 1000); return () => clearInterval(interval); });
import { writable } from 'svelte/store'; const store = writable(0); // Components subscribe directly and update frequently even if data is unchanged store.set(0); // triggers update even if value is same
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Writable store with frequent redundant updates | High (many subscriber callbacks) | Multiple per update | High due to repeated repaints | [X] Bad |
| Readable store with conditional updates | Low (only on value change) | Single or minimal | Low due to fewer repaints | [OK] Good |
readable store in Svelte?import { readable } from 'svelte/store';
const count = readable(0, set => {
let n = 0;
const interval = setInterval(() => {
n += 1;
set(n);
}, 1000);
return () => clearInterval(interval);
});
count.subscribe(value => console.log(value));import { readable } from 'svelte/store';
const data = readable(0, set => {
const interval = setInterval(() => {
set(Date.now());
}, 1000);
// Missing cleanup function
});Pass the test and this pattern moves unknown