From 681b0bbc91e5274dca15f9294647c5b755b5c897 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 3 Jun 2026 14:38:38 +0000 Subject: [PATCH 1/2] Add public/service-worker.js --- public/service-worker.js | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 public/service-worker.js diff --git a/public/service-worker.js b/public/service-worker.js new file mode 100644 index 0000000..4a2855e --- /dev/null +++ b/public/service-worker.js @@ -0,0 +1,50 @@ +const CACHE_NAME = 'grunauer-cache-v1'; +const urlsToCache = [ + '/', + '/index.html', + // Add other critical static assets here, e.g., images, fonts, main CSS/JS bundles + // For a Next.js app, consider using a library like Workbox for more robust asset pre-caching and runtime caching strategies. + '/favicon.ico' +]; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE_NAME) + .then((cache) => { + console.log('Service Worker: Opened cache'); + return cache.addAll(urlsToCache); + }) + .then(() => self.skipWaiting()) // Forces the waiting service worker to become the active service worker. + ); +}); + +self.addEventListener('activate', (event) => { + const cacheWhitelist = [CACHE_NAME]; + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames.map((cacheName) => { + if (cacheWhitelist.indexOf(cacheName) === -1) { + console.log('Service Worker: Deleting old cache', cacheName); + return caches.delete(cacheName); // Delete old caches + } + return null; + }) + ); + }).then(() => self.clients.claim()) // Takes control of the clients associated with the current service worker. + ); +}); + +self.addEventListener('fetch', (event) => { + event.respondWith( + caches.match(event.request) + .then((response) => { + // Cache hit - return response + if (response) { + return response; + } + // No cache hit - fetch from network + return fetch(event.request); + }) + ); +}); -- 2.49.1 From c5c06ea85db42af4f791485527cc63eaff39c478 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 3 Jun 2026 14:38:38 +0000 Subject: [PATCH 2/2] Update src/app/page.tsx --- src/app/page.tsx | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 54cf82c..5e7de85 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,19 +1,22 @@ "use client"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import React, { Suspense } from "react"; import ReactLenis from "lenis/react"; -import ContactCenter from '@/components/sections/contact/ContactCenter'; -import FaqDouble from '@/components/sections/faq/FaqDouble'; import FeatureCardTwentyEight from '@/components/sections/feature/FeatureCardTwentyEight'; -import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal'; import HeroBillboard from '@/components/sections/hero/HeroBillboard'; -import MetricCardThree from '@/components/sections/metrics/MetricCardThree'; import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; import ProductCardThree from '@/components/sections/product/ProductCardThree'; -import TestimonialCardSixteen from '@/components/sections/testimonial/TestimonialCardSixteen'; import TextAbout from '@/components/sections/about/TextAbout'; import { Star, Utensils, Globe } from "lucide-react"; +// Lazy imports for below-the-fold sections +const LazyTestimonialCardSixteen = React.lazy(() => import('@/components/sections/testimonial/TestimonialCardSixteen')); +const LazyMetricCardThree = React.lazy(() => import('@/components/sections/metrics/MetricCardThree')); +const LazyFaqDouble = React.lazy(() => import('@/components/sections/faq/FaqDouble')); +const LazyContactCenter = React.lazy(() => import('@/components/sections/contact/ContactCenter')); +const LazyFooterLogoReveal = React.lazy(() => import('@/components/sections/footer/FooterLogoReveal')); + export default function LandingPage() { return (
- Loading Reviews...
}> + +
- Loading Metrics...
}> + +
- Loading FAQ...
}> + +
- Loading Contact...
}> + + }> + +
); -} +} \ No newline at end of file -- 2.49.1