SSR, redirects, and protected files

Here’s what I’d raise, ordered by impact. Each is grounded in something measurable from your site.

1. Server-side rendering or a prerender step

The biggest one. PageSpeed measures LCP 10.4s on your homepage with element render delay of 2,770ms and 2,492ms of bundle execution. Nothing paints until the JS runs.

It also causes three separate problems: every URL serves identical HTML with <link rel="canonical"> pointing at /, social and AI crawlers that don’t run JS see homepage content on every page, and you’re hand-maintaining a <noscript> block as a workaround.

Ask: SSR, or static prerendering at build time for public routes.

2. Server-side redirects

/contact-us/ can’t get a 301. React Router’s <Navigate> returns HTTP 200 to Googlebot, so the duplicate URL persists. Cloudflare can’t help because Hercules requires DNS-only.

Ask: a redirects config file, the way Netlify and Vercel handle it.

3. Custom HTTP headers

No way to send Strict-Transport-Security, so four Cloudflare security insights are permanently unresolvable. Same limitation blocks cache-control tuning.

4. Two platform-injected bugs worth fixing for everyone

Unused preconnects. PageSpeed flags https://hercules.app and https://honorable-heron-893.convex.cloud as never requested — both injected by the platform, both wasting connections on every page.

crossorigin on non-CORS preconnects. The CDN preconnect carries crossorigin, which opens a connection the browser never reuses. PageSpeed lists the same origin as a preconnect candidate worth 300ms despite the tag already existing.

These are one-line template fixes that would help every Hercules site.

5. The font @import in the default scaffold

src/index.css line 1 is a CSS @import to Google Fonts. That’s serial: stylesheet → font CSS → font files, blocking render for ~1,200ms. A <link> in index.html parallelises it.

If that’s scaffold-generated, changing the default would be a free win across the platform.

6. Protected-file support

This is the one I’d push hardest as a workflow ask. Every prompt I’ve written for you carries a long “do not modify” section because a regeneration can silently break analytics.ts, a data-cta attribute, or the GTM snippet — and you lose lead tracking with no error.

Ask: a way to mark files or regions as protected, so the AI can’t touch them.

7. Background-image lazy loading

Card components use CSS background-image, which the browser can’t lazy-load. ~400 KiB of below-fold images download on first paint. Real <img> with loading="lazy" and an overlay would fix it in the component library.


If you only send three: SSR, redirects, and protected files. The first two unlock everything structural, and the third is what makes the platform safe to iterate on.

Thank you for all the feedback. We have noted your several feature requests. SSR is something we are actively working on so we expect that to be ready soon. The other requests are noted and we will follow up if there is any update regarding anything.