From 74c005063aff63c55d95e3e4db2ad0e8a9562d31 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Thu, 1 Oct 2026 13:38:05 +1000 Subject: [PATCH 1/4] perf(home): idle the noise field and rail when they cost frames The hero ran a full-bleed WebGL shader at 60 fps and the rail scrolled at 30 fps for as long as the page stayed open. On a CPU renderer every frame became a long task, so NuxtSEO measured 12 to 17 s of TBT on mobile home and the page never reached idle. Both now start after hydration; the field draws one static frame on software WebGL and drops to 15 fps once its intro ends. --- app/components/NoiseField.client.vue | 106 ++++++++++++++++++++------- app/components/SkillSourceList.vue | 36 ++++++--- app/utils/webgl-context.ts | 21 ++++++ test/unit/webgl-context.test.ts | 24 +++++- 4 files changed, 149 insertions(+), 38 deletions(-) diff --git a/app/components/NoiseField.client.vue b/app/components/NoiseField.client.vue index 35de85b1..6ff531ea 100644 --- a/app/components/NoiseField.client.vue +++ b/app/components/NoiseField.client.vue @@ -1,6 +1,6 @@