← back to Wallco Ai
feat(/designs): prefetch /design/:id on card hover with 80ms debounce; honors save-data + 2g + prefers-reduced-data so we don't burn metered cellular; click feels instant
6601949dd045dfc60137ac10696215eec53f46ec · 2026-05-14 12:02:24 -0700 · SteveStudio2
Files touched
Diff
commit 6601949dd045dfc60137ac10696215eec53f46ec
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Thu May 14 12:02:24 2026 -0700
feat(/designs): prefetch /design/:id on card hover with 80ms debounce; honors save-data + 2g + prefers-reduced-data so we don't burn metered cellular; click feels instant
---
server.js | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/server.js b/server.js
index 5d204f4..3b05795 100644
--- a/server.js
+++ b/server.js
@@ -3910,6 +3910,37 @@ ${cat === 'mural-scenic' ? `
onScroll();
})();
</script>
+
+ <!-- Prefetch /design/:id on card hover so the click feels instant.
+ Debounced 80ms — quick mouse-moves across the grid don't fire dozens.
+ Honors save-data + 2g connections + prefers-reduced-data (skip prefetch
+ on metered/slow networks). -->
+ <script>
+ (function(){
+ var conn = navigator.connection || {};
+ if (conn.saveData || /(^|\b)(slow-)?2g\b/.test(conn.effectiveType || '')) return;
+ var grid = document.getElementById('catalog-grid');
+ if (!grid) return;
+ var done = new Set();
+ var t = null;
+ function prefetch(href){
+ if (done.has(href)) return;
+ done.add(href);
+ var link = document.createElement('link');
+ link.rel = 'prefetch';
+ link.href = href;
+ link.as = 'document';
+ document.head.appendChild(link);
+ }
+ grid.addEventListener('mouseover', function(e){
+ var a = e.target.closest && e.target.closest('a.card-link');
+ if (!a || !a.href) return;
+ clearTimeout(t);
+ t = setTimeout(function(){ prefetch(a.href); }, 80);
+ }, { passive: true });
+ grid.addEventListener('mouseout', function(){ clearTimeout(t); }, { passive: true });
+ })();
+ </script>
</section>
</main>
${FOOTER}
← 508fcbe feat(/designs): proper empty-state when filter combo returns
·
back to Wallco Ai
·
feat(/design/:id): add BreadcrumbList JSON-LD alongside exis dba51ee →