📍Warsaw, Poland
t.co/uXObPMsvWq
t.co/uXObPMsvWq
t.co/lMXdgcVGFb
t.co/lMXdgcVGFb
And getting feedback like:
"I heavily rely on timelines, and it’s crucial they function optimally. This is a key selling point for me in Fibery."
...just feels nice
And getting feedback like:
"I heavily rely on timelines, and it’s crucial they function optimally. This is a key selling point for me in Fibery."
...just feels nice
– Always test hypotheses in practice.
– If you have an M4 Pro/Max MacBook, your UI must run smooth with x4 CPU throttling 🙈
– If you want a polished UI, dogfooding+boyscouting are very important pieces of dev. culture, imo. I doubt we’d fix it if we didn’t suffer from it ourselves.🫠
– Always test hypotheses in practice.
– If you have an M4 Pro/Max MacBook, your UI must run smooth with x4 CPU throttling 🙈
– If you want a polished UI, dogfooding+boyscouting are very important pieces of dev. culture, imo. I doubt we’d fix it if we didn’t suffer from it ourselves.🫠
– Once you add a library to your project, its code becomes your responsibility. Don’t treat it as a black box. You can learn a lot by reading and patching it
– Compete with your competitors. We’re lucky to have great ones like Linear,Notion. If they can make smth fast, why can't we?
– Once you add a library to your project, its code becomes your responsibility. Don’t treat it as a black box. You can learn a lot by reading and patching it
– Compete with your competitors. We’re lucky to have great ones like Linear,Notion. If they can make smth fast, why can't we?
I was sure browser APIs would outperform any JS solution so I relied heavily on IntersectionObserver and CSS vars to update UI on collisions.
Turns out, frequent CSS var updates on large DOMs can be costly. Sometimes plain old state subscriptions just win.
I was sure browser APIs would outperform any JS solution so I relied heavily on IntersectionObserver and CSS vars to update UI on collisions.
Turns out, frequent CSS var updates on large DOMs can be costly. Sometimes plain old state subscriptions just win.
For some unknown reason we were scaling the entire timeline area when resizing a panel.
That meant recalculating headers, visible cards, collisions…
Sounds expensive? It was.
Was it useful? I don't think so.
I doubt anyone will miss it. 🔪
For some unknown reason we were scaling the entire timeline area when resizing a panel.
That meant recalculating headers, visible cards, collisions…
Sounds expensive? It was.
Was it useful? I don't think so.
I doubt anyone will miss it. 🔪
OSS lib we used rendered headers and body in separate scroll containers.
And afaik it's impossible to get rid of that scroll-sync delay completely.
Even on empty timelines - nausea from wobbly UI was real.
Fix: put everything in one scroll container. Small markup tweak = big UX win
OSS lib we used rendered headers and body in separate scroll containers.
And afaik it's impossible to get rid of that scroll-sync delay completely.
Even on empty timelines - nausea from wobbly UI was real.
Fix: put everything in one scroll container. Small markup tweak = big UX win