[Start]: Binary encoding issue when prerendering Server Routes.
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- react, typescript, vite
- 領域
- backend, build-system
調査の方向性
Start with the linked minimal reproducer and its og-image.jpg.tsx server route; compare its development response with ./dist/client/og-image.jpg after a build. Trace how prerendering writes the route response and check whether the binary image bytes change. Done means the built image opens correctly and matches the development output, or the documentation clearly states the limitation.
索引モデルが issue の本文から書いたものです。
説明
Which project does this relate to?
Start
Describe the bug
When implementing Takumi with tanstack start following their guide , they use a server route to generate images on demand, however since they are og images it's not necessary to regenerate each request, even with cache control the way they set up their og-images endpoint (open search params / dynamic params) is open to cache invalidation attacks (example of attacks) unless you validate the url on the server route.
the server routes docs don't mention much about how to prerender server routes effectively, researching more i found this discussion that tells to use the prerender option with configuration for specific pages
the option to prerender api routes is available in Astro and Next.js , so i implemented it, the image show correctly in dev, but when running build command the image can no longer be opened.
researching and comparing the two files (image rendered in dev and image rendered in build) it shows the image output at build has incorrect binary format:
image header in dev (it shows):
ÿØÿà JFIF ÿÀ v° ÿÛ C
$.' ",#(7),01444'9=82<.342ÿÛ C
image header in build (it does not show):
JFIF v C
$.' ",#(7),01444'9=82<.342 C
i believe more documentation is necessary to instruct how to effectively prerender in tanstack start, especially when prerendering things like binary files (images, audio, etc.)
Complete minimal reproducer
https://github.com/JulioGrajales/tanstack-start-format-issue/
Steps to Reproduce the Bug
- download repo and install dependencies
- run dev command, visit http://localhost:3000/og-image.jpg to see the image correctly formatted
- you can check og-image[.]jpg.tsx file to see server api route
- run build command (prerender enabled), check ./dist/client/og-image.jpg file, it's corruped / incorrectly formatted
Expected behavior
Dev and build environments should produce the same files, if tanstack start is currently unable to prerender binary files in server routes it should be made clear in the documentation
Screenshots or Videos
DOWNLOAD THE GENERATED IMAGES:
images-arch.zip
Platform
-
Router / Start Version: [e.g. 1.121.0]:
"@tanstack/react-router": "^1.170.45",
"@tanstack/react-router-devtools": "^1.167.2",
"@tanstack/react-start": "^1.169.3", -
OS: [e.g. macOS, Windows, Linux]
Ubuntu WSL
C:\Users\julio>wsl --version
Versión de WSL: 2.7.13.0
Versión de kernel: 6.18.33.2-2
Versión de WSLg: 1.0.73.2
Versión de MSRDC: 1.2.7214
Versión de Direct3D: 1.611.1-81528511
Versión de DXCore: 10.0.26100.1-240331-1435.ge-release
Versión de Windows: 10.0.26200.9711 -
Browser: [e.g. Chrome, Safari, Firefox]
Google Chrome -
Browser Version: [e.g. 91.1]
Version 155.0.8059.85 (Official Build) (64-bit) -
Bundler: [e.g. vite]
Vite -
Bundler Version: [e.g. 7.0.0]
"vite": "^8.3.4"
Additional context
No response
- 主要言語
- TypeScript
- スター
- 15.2k
- フォーク
- 1.9k
- 平均マージ
- 1日 4時間
- マージ済み PR(30日)
- 63
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
TanStack/router のほかの issue
-
router.startViewTransition leaves the ready/finished promises unhandled, so a skipped transition throws an unhandled AbortError対応中かも @unjica が 5 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
TanStack/router#8776 · コメント 3 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Router devtools crash when search params contain a BigInt (JSON.stringify in history tracking)対応中かも @A-Raphie が 9 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
docs: `createLink` has no API reference page; 3 how-to guides link to a missing `#createlink` anchor対応中かも @A-Raphie が 9 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
Inline scripts are duplicated after hydration when the CSP nonce is sent in a header対応中かも @gabriel-le が 30 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
start-plugin-core: sitemap lastmod and pages.json lastBuilt are stamped with the build's wall clock (no SOURCE_DATE_EPOCH support)対応中かも @treadnot が 31 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
TanStack/router の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 91/100
caelestia-dots/caelestia#534 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
bobadilla-tech/biasmarket.com#402 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
javvadivijayprasad/sel2pw#28 ·
-
Area: Infrastructure Chore Difficulty: Low Good First Issue Priority: Low
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
DouglasNeuroInformatics/OpenDataCapture#1836 ·
メンテナーはふだん 1 日以内に返信
-
Two wording fixes: the init PROVIDER comment and the confirm page's lede対応中かも @kurtbruns が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信