Liquid syntax error: Variable '{{% raw %}' was not properly terminated with regexp: /\}\}/
How intentional loading decisions keep your app fast at scale. Frontend performance is not a late-stage cleanup task. It’s not tech debt. It’s a set of decisions we make every day while we code — what we load, when we load it, and how we render it. The answer depends on the importance of the code, its size, and when the user actually needs it. Get that wrong, and the browser pays for everything
很多团队的网络监控并不算差。 链路可用率有、接口带宽有、CPU 和内存有、异常告警也接进了企业微信、飞书和短信。但真正出了事,复盘时还是会出现同一句话:当时知道出问题了,但没有把现场留住。 这就是为什么越来越多团队开始关注网络回溯分析系统。 它解决的不是“能不能看到告警”这个初级问题,而是更关键的两个问题: 告警发生时,能不能快速还原到底是哪一段流量、哪一条路径、哪一种会话出了问题 事故结束后,能不能基于证据复盘,而不是靠聊天记录和印象拼凑过程 对云上和混合云场景来说,这件事尤其重要。因为链路更长、设备更多、路径更动态,很多故障不是“持续坏”,而是短时抖动、瞬时拥塞、路径切换、策略误命中。如果没有回溯能力,排障就很容易沦为赛后猜谜。 这篇文章不讲空洞概念,直接从一线运维视角拆清楚:云上网络回溯分析系统到底该怎么建,应该覆盖哪些能力,落地时最容易踩哪些坑。 先说结论: 传统监控擅长发现“异常
I’m going on a short vacation this week, so this post is coming out a bit earlier than usual. I actually had a different, more “useful” topic in mind — something educational, something responsible. But then I came across this fascinating article: I don’t like Tailwind. Sorry not sorry written by @freshcaffeine , and I couldn’t get it out of my head. So I decided to write a response instead. I actu
What Is an Atomic Transaction? Before we begin, let’s define atomic transaction clearly: “It is a protective wrapper around multiple state updates that guarantees the whole operation either succeeds completely or has no effect at all.” Inside an atomic transaction, you can perform multiple set() calls, and even cross multiple await boundaries. Only when the entire operation succeeds do we commit
The "Unsharable" Dashboard Problem Imagine this common B2B SaaS scenario: An executive opens your analytics dashboard. They spend three minutes configuring the data—they filter the status to "Active," set the date range to "Last 30 Days," sort the table by "Highest Revenue," and navigate to Page 4. They copy the URL and Slack it to their team lead. The team lead clicks the link, but instead of see
Most React performance problems are not architectural. They are not about picking the wrong state manager or choosing the wrong rendering strategy. They are small habit things that look perfectly fine in isolation but compound quietly across a codebase until your app feels sluggish and you are not sure why. This article covers five of the most common ones, with code examples so you can see exactly
Most monorepos pay lip service to "share code via libraries." In practice, apps grow huge and libraries stay shallow. The shared/ folder becomes a junk drawer. New code goes wherever's easiest, which is usually wherever the developer is already typing - the app. After scaling our frontend monorepo to 19 applications and 86 libraries (roughly 74,000 lines of TypeScript), I've seen this pattern from