router icon indicating copy to clipboard operation
router copied to clipboard

TanStack Start `prerender` errors without sitemap enabled

Open checkerschaf opened this issue 3 months ago • 7 comments

Which project does this relate to?

Start

Describe the bug

The prerender option without a sitemap throws this error:

error during build:
Error: Sitemap is not enabled
    at buildSitemap (file:///Users/jan/code/privat/tests/prerender-no-sitemap/node_modules/@tanstack/start-plugin-core/dist/esm/build-sitemap.js:75:11)
    at postServerBuild (file:///Users/jan/code/privat/tests/prerender-no-sitemap/node_modules/@tanstack/start-plugin-core/dist/esm/post-server-build.js:46:5)
    at async Object.buildApp (file:///Users/jan/code/privat/tests/prerender-no-sitemap/node_modules/@tanstack/start-plugin-core/dist/esm/plugin.js:245:15)
    at async Object.buildApp (file:///Users/jan/code/privat/tests/prerender-no-sitemap/node_modules/vite/dist/node/chunks/dep-Chhhsdoe.js:34251:38)
    at async CAC.<anonymous> (file:///Users/jan/code/privat/tests/prerender-no-sitemap/node_modules/vite/dist/node/cli.js:641:3)

Config:

tanstackStart({
      prerender: {
        enabled: true,
        crawlLinks: false,
      },
      pages: [{path: "/"}],
      sitemap: {
        enabled: false,
      }
    }),

Your Example Website or App

https://github.com/checkerschaf/tanstack-start-prerender-no-sitemap

Steps to Reproduce the Bug or Issue

  1. Install reproduction repo
  2. npm install
  3. npm run build

See the build fail.

Expected behavior

Build should work without errors. Static HTML should be output but no sitemap.xml file.

Screenshots or Videos

No response

Platform

  • Router / Start Version: 1.132.51
  • OS: macOS
  • Bundler: Vite and Rolldown, same behaviour

Additional context

No response

checkerschaf avatar Oct 09 '25 12:10 checkerschaf

+1

HummingMind avatar Nov 01 '25 18:11 HummingMind

tanstack start 1.134.6, seem like it doesn't respect prerender setting in vite.config.ts vite.config.ts

    tanstackStart({
      prerender: {
        enabled: false,
      },
      spa: {
        enabled: true,
        prerender: {
          // ?? must enable this to get loader context working??
          enabled: false,
        },
      },
      sitemap: {
        enabled: false,
      },
    }),
    nitro({
      config: {
        preset: 'node-server',
        compatibilityDate: 'latest',
      },
    })

vite build output:

[prerender] Prerendering pages...
[prerender] Concurrency: 8
[prerender] Crawling: /
[prerender] Prerendered 1 pages:
[prerender] - /
error during build:
Error: Sitemap is not enabled
    at buildSitemap

dangnhdev avatar Nov 08 '25 20:11 dangnhdev

+1

jofflin avatar Nov 14 '25 15:11 jofflin

Same thing for:

    "@tanstack/solid-router": "1.139.3",
    "@tanstack/solid-start": "1.139.3",

elite174 avatar Nov 25 '25 07:11 elite174

My config:

    tanstackStart({
      prerender: {
        enabled: false,
      },
      sitemap: {
        host: "http://localhost:3000",
      },
      spa: {
        enabled: true,
        prerender: {
          enabled: false,
        },
      },
    }),

Result config used during the build:

{
  srcDirectory: 'src',
  start: {},
  router: {
    target: 'solid',
    routeFileIgnorePrefix: '-',
    routesDirectory: '...',
    quoteStyle: 'single',
    semicolons: false,
    disableLogging: false,
    routeTreeFileHeader: [
      '/* eslint-disable */',
      '// @ts-nocheck',
      '// noinspection JSUnusedGlobalSymbols'
    ],
    indexToken: 'index',
    routeToken: 'route',
    generatedRouteTree: '...',
    disableTypes: false,
    addExtensions: false,
    enableRouteTreeFormatting: true,
    tmpDir: '...',
    importRoutesUsingAbsolutePaths: false,
    basepath: ''
  },
  client: { base: '/_build' },
  server: {},
  serverFns: { base: '/_serverFn' },
  pages: [ { path: '/', prerender: [Object], sitemap: [Object] } ],
  sitemap: {
    enabled: true,
    host: 'http://localhost:3000',
    outputPath: 'sitemap.xml'
  },
  prerender: { enabled: true },
  spa: {
    enabled: true,
    maskPath: '/',
    prerender: {
      outputPath: '/_shell',
      crawlLinks: false,
      retryCount: 0,
      enabled: true
    }
  }
}

Why? It's different?

elite174 avatar Nov 25 '25 07:11 elite174

Image

commented enabled: true - it worked

elite174 avatar Nov 25 '25 07:11 elite174

Still the result is SSR, no HTML file in dist folder.

Image

elite174 avatar Nov 25 '25 07:11 elite174