← RenderCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Render
Snapshot Sep 30, 2026 · 22:43 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "render-static-sites",
"description": "Deploys and configures static sites on Render's global CDN—build commands, publish paths, SPA routing, redirects, custom headers, and PR previews. Use when the user needs to deploy a static site, set up a React/Vue/Hugo/Gatsby frontend, configure SPA fallback routing, add redirect rules, customize response headers, or choose between a static site and a web service for their frontend. Trigger terms: static site, CDN, SPA, single-page app, React deploy, Vue deploy, Hugo, Gatsby, Docusaurus, Jekyll, staticPublishPath.",
"included_files": [
{
"relative_path": "references/framework-configs.md",
"size_in_bytes": 2434
},
{
"relative_path": "references/routing-and-headers.md",
"size_in_bytes": 2476
}
],
"skill_md_contents": "---\nname: render-static-sites\ndescription: >-\n Deploys and configures static sites on Render's global CDN—build commands,\n publish paths, SPA routing, redirects, custom headers, and PR previews. Use\n when the user needs to deploy a static site, set up a React/Vue/Hugo/Gatsby\n frontend, configure SPA fallback routing, add redirect rules, customize\n response headers, or choose between a static site and a web service for\n their frontend.\n Trigger terms: static site, CDN, SPA, single-page app, React deploy,\n Vue deploy, Hugo, Gatsby, Docusaurus, Jekyll, staticPublishPath.\nlicense: MIT\ncompatibility: Render static sites (free tier available)\nmetadata:\n author: Render\n version: \"1.0.0\"\n category: compute\n---\n\n# Render Static Sites\n\nDeploys static frontends (React, Vue, Hugo, Gatsby, Docusaurus, Jekyll, etc.) to Render's global CDN with automatic TLS, Brotli compression, HTTP/2, and DDoS protection. Free tier available.\n\n## When to Use\n\n- Deploying a **static site or SPA** (no server-side rendering)\n- Choosing between a **Static Site** and a **Web Service** for a frontend\n- Configuring **SPA fallback routing**, **redirects/rewrites**, or **custom headers**\n- Setting up **PR preview environments** for a static site\n- Troubleshooting **build failures** or **stale content** on a CDN-hosted site\n\nFor SSR frameworks (Next.js, Nuxt, SvelteKit) that need a running server, use **render-web-services** instead. For Blueprint authoring, see **render-blueprints**.\n\n## Static Site vs Web Service\n\n| Need | Use | Why |\n|------|-----|-----|\n| Pure HTML/CSS/JS, SPA, docs, blog | **Static Site** | Free, global CDN, instant cache invalidation |\n| SSR (Next.js `next start`, Nuxt server) | **Web Service** | Needs a running Node/Python/etc. process |\n| Static export from SSR framework | **Static Site** | If the framework supports full static export (`next export`, `nuxt generate`) |\n| API backend | **Web Service** | Static sites cannot run server code |\n\n**Key constraint:** Static sites are **not on the private network**. They cannot communicate with other Render services over internal hostnames.\n\n## Build and Publish\n\n| Setting | Purpose |\n|---------|---------|\n| `buildCommand` | Installs dependencies and builds assets (e.g. `npm ci && npm run build`) |\n| `staticPublishPath` | Directory of built output to serve (e.g. `build`, `dist`, `public`) |\n\nRender auto-detects and installs dependencies. Set `SKIP_INSTALL_DEPS=true` to handle installation yourself in the build command.\n\n### Common frameworks\n\n| Framework | Build command | Publish path |\n|-----------|--------------|--------------|\n| Create React App | `npm ci && npm run build` | `build` |\n| Vite (React/Vue/Svelte) | `npm ci && npm run build` | `dist` |\n| Next.js (static export) | `npm ci && next build` | `out` |\n| Nuxt (static) | `npm ci && nuxt generate` | `.output/public` |\n| Hugo | `hugo --minify` | `public` |\n| Gatsby | `npm ci && gatsby build` | `public` |\n| Docusaurus | `npm ci && npm run build` | `build` |\n| Jekyll | `bundle exec jekyll build` | `_site` |\n| Astro | `npm ci && astro build` | `dist` |\n\n## SPA Routing and Redirects\n\nSingle-page apps need a catch-all rule so the CDN serves `index.html` for all routes instead of returning 404.\n\nConfigure **Redirect/Rewrite Rules** in the Dashboard (Settings > Redirects/Rewrites) or via the Blueprint `routes` field:\n\n```yaml\nroutes:\n - type: rewrite\n source: /*\n destination: /index.html\n```\n\nFor multi-path redirects (e.g. old blog URLs), add specific rules **above** the catch-all so they take priority.\n\nSee `references/routing-and-headers.md` for redirect types, header rules, and caching patterns.\n\n## Custom Response Headers\n\nAdd security and performance headers from the Dashboard (Settings > Headers) or the Blueprint `headers` field:\n\n```yaml\nheaders:\n - path: /*\n name: X-Frame-Options\n value: DENY\n - path: /assets/*\n name: Cache-Control\n value: public, max-age=31536000, immutable\n```\n\n## PR Previews\n\nStatic sites support automatic PR previews—each pull request gets a unique URL with the built site.\n\n- Enable in Dashboard: Settings > PR Previews\n- Blueprint: set `previews.generation` to `automatic` or `manual`\n- Preview URLs follow the pattern `<service>-<pr-id>.onrender.com`\n\n## Blueprint Configuration\n\n```yaml\nservices:\n - type: web\n runtime: static\n name: my-frontend\n buildCommand: npm ci && npm run build\n staticPublishPath: dist\n routes:\n - type: rewrite\n source: /*\n destination: /index.html\n headers:\n - path: /*\n name: X-Frame-Options\n value: DENY\n previews:\n generation: automatic\n```\n\n**Note:** Static sites use `type: web` with `runtime: static` in Blueprints. There is no separate `type: static`.\n\n## CDN and Performance\n\n- **Global CDN** with edge caching worldwide\n- **Brotli compression** (better than gzip)\n- **HTTP/2** by default\n- **Immediate cache invalidation** on every deploy (zero-downtime, atomic deploys)\n- **DDoS protection** included free\n\n## Billing\n\nStatic sites have a **free tier**. They count against workspace-level monthly included amounts for:\n\n- **Outbound bandwidth** (data served to users)\n- **Pipeline minutes** (build time)\n\n## References\n\n| Document | Contents |\n|----------|----------|\n| `references/routing-and-headers.md` | Redirect types, rewrite rules, header patterns, SPA config |\n| `references/framework-configs.md` | Build commands and publish paths for 10+ frameworks |\n\n## Related Skills\n\n- **render-web-services** — For SSR frameworks that need a running server\n- **render-blueprints** — Full `render.yaml` schema for static site fields\n- **render-domains** — Custom domain and TLS setup\n- **render-deploy** — Deploy flows, CLI, MCP operations\n"
}SHA-256: f472726f369827ca1a0f2bb764053beea9ba21df802d69554c9e120239adcc04