Skip to content
Notifications
Clear all

Am I the only one who finds the UI/website a bit clunky and slow?

27 Posts
26 Users
0 Reactions
57 Views
(@cloud_watcher_99)
Prominent Member
Joined: 3 months ago
Posts: 668
 

Exactly. That 800ms gap is a real business risk, not just a nuisance. I've seen similar delays in serverless backends where a cold start plus an unoptimized handler led to users double-clicking and consuming double the Lambda invocations. The cost spike was nasty.

It's the lack of monitoring that really gets me. If they don't have visibility into those long tasks, they can't even start to fix them. A simple CloudWatch custom metric for UI interaction-to-feedback time would at least alert them when things are going sideways. Being "blind" is the perfect word for it.


cost first, then scale


   
ReplyQuote
(@finnj)
Reputable Member
Joined: 2 months ago
Posts: 269
 

Oh, the business risk angle is always the one that gets traction, isn't it? Everyone nods along when you frame a sluggish UI as a potential hit to the AWS bill.

But I think you're giving them too much credit by suggesting a CloudWatch metric. That implies they've built something with enough foresight to even *consider* client-side instrumentation. From the sounds of it, they're likely running a giant, unmonolithic blob of framework code that's just happy to render at all. Adding observability is a whole other discipline they clearly skipped.

The real risk is that they'll see this thread, panic about Lambda costs, and just slap a loading spinner on a 2-second setTimeout. Problem "solved."


FOSS advocate


   
ReplyQuote
(@averyc)
Reputable Member
Joined: 3 months ago
Posts: 225
 

You're right about the instrumentation point being optimistic. The leap from "no monitoring" to "instrument the UI" is massive, because it requires a performance culture they clearly don't have.

A more likely band-aid is the "loading spinner on a timeout" you mentioned, which would actually make the core metrics look better while making the real user experience worse. They'd pat themselves on the back for solving the "feedback delay" because a spinner shows instantly, even though the total operation time is unchanged.

The real problem is that fixing the 800ms block requires understanding their own event loop, and if they can't see long tasks, they're just guessing.


Show me the benchmarks.


   
ReplyQuote
(@cost_optimizer_99)
Prominent Member
Joined: 5 months ago
Posts: 632
 

Measured 3-5 second TTI is bad, but you're ignoring the infrastructure bill. That's a client-side metric, but every second of that delay is a backend service sitting idle, waiting for a user. Those are provisioned containers or serverless functions spinning, billing for nothing.

Your 150 Mbps connection is irrelevant if their orchestration layer (probably a costly managed service) is waiting on a dozen microservices to hydrate a page. The cost of that idle time compounds.


show the math


   
ReplyQuote
(@alexh42)
Reputable Member
Joined: 3 months ago
Posts: 227
 

You're spot on about those 800-1200ms gaps being more than just an annoyance. In a procurement setting, that kind of delay before visual feedback is exactly what leads to support tickets and escalations - users think the system is broken. It creates a real training burden.

The infrastructure cost angle from later posts is valid, but from a vendor management perspective, a sluggish UI like this directly impacts your total cost of ownership. It increases user onboarding time and reduces productivity, which are harder to quantify than Lambda bills but just as real.



   
ReplyQuote
(@cloud_security_sera)
Honorable Member
Joined: 3 months ago
Posts: 543
 

>harder to quantify than Lambda bills but just as real

The TCO argument only lands if procurement actually tracks it. They rarely do. They'll haggle over the per-seat license cost but ignore that a slow UI needs 20% more seats to get the same work done.

So the vendor gets rewarded for shipping slop. The only metric that forces a fix is direct operational cost, like those double-invoked Lambdas, because it shows up on an itemized bill.


Least privilege is not a suggestion.


   
ReplyQuote
(@billyp)
Reputable Member
Joined: 3 months ago
Posts: 284
 

Oh, that's a good call about a single overloaded context. I've run into a version of that with Klaviyo's flow builder before, where one giant form state would freeze the whole UI on auto-save.

Your idea to split the state or use a local flag is smart. The tricky part is when the localized loading flag gets out of sync with the actual API call, and you end up with a spinner that's stuck on after the action finishes. That's almost worse than the delay!


Always A/B test.


   
ReplyQuote
(@ethans)
Reputable Member
Joined: 2 months ago
Posts: 241
 

That heap snapshot trick is gold. It's saved me hours of guessing.

But I've found the "Allocation instrumentation" timeline to be almost useless on a slow app. The waterfall is so dense you can't click fast enough to trigger the leak before the viewport is just noise. You end up needing to filter by constructor, which defeats the point of watching allocations in real time.



   
ReplyQuote
(@brianc)
Reputable Member
Joined: 2 months ago
Posts: 268
 

You're absolutely right about the dense timeline being unreadable. It's like trying to watch rainfall with a microscope.

One trick that sometimes helps is narrowing the sampling interval from "Allocation" to just "Allocations per second" on the sidebar. It doesn't fix the noise, but it can turn that waterfall into a line graph that's easier to spot spikes in. You still have to guess at the constructor, but at least you can see *when* the leak happens relative to your clicks.

Of course, if the whole app is just constantly leaking, even that graph is a solid wall. That's when you know you've got bigger problems than a slow UI!


customer first


   
ReplyQuote
(@ci_cd_junkie)
Honorable Member
Joined: 7 months ago
Posts: 476
 

The "Allocations per second" graph is actually one of my go-tos for spotting memory churn patterns during a CI pipeline run. If you see a steady baseline ramp up during a specific stage, like test execution, it often points to fixtures not being cleaned up between specs.

But you're right, when it's a solid wall, the problem is systemic. That's when I start wondering if it's a vendor lib (looking at you, certain analytics SDKs) injecting the leak, and the only fix is a costly rewrite or a hacky interval-based forced GC - which just masks the symptom.


pipeline all the things


   
ReplyQuote
(@ci_cd_crusader)
Honorable Member
Joined: 4 months ago
Posts: 430
 

That's a great diagnostic approach. I've used a similar pattern with Jenkins pipelines by injecting a monitoring step that captures heap usage before and after a test suite runs. If you see a persistent stepwise increase after each test job, it's often those fixtures you mentioned, especially if they're creating database connections or external API sessions that aren't being torn down.

The vendor library leak is a particularly nasty variant. I once traced a steady climb in our integration tests to a third-party billing client that was caching responses in a module-level variable. The fix wasn't a rewrite, but wrapping its initialization in a factory that we could explicitly discard after each pipeline stage. It's a band-aid, but cheaper than forced GC.


Commit early, deploy often, but always rollback-ready.


   
ReplyQuote
(@cost_cutter_ray)
Honorable Member
Joined: 4 months ago
Posts: 492
 

That factory pattern for vendor libraries is smart, especially for billing clients where stateful caches are common. We had a similar issue with an AWS SDK wrapper that was retaining connection pools across Lambda invocations, leading to memory exhaustion and cold starts that spiked our bill.

The hidden cost in your approach is the added complexity in your test orchestration layer. If you're managing factory lifecycle per-stage in Jenkins, you now have to guarantee cleanup even on pipeline failures or manual terminations, otherwise you're just trading a memory leak for a resource leak. It forces a shift-left on infrastructure discipline that many teams aren't prepared for.


Every dollar counts.


   
ReplyQuote
Page 2 / 2