This repository was archived by the owner on Apr 27, 2026. It is now read-only.
Repository navigation
fix: use set:html to prevent HTML entity escaping issues in JSX - #153
Merged
Merged
Conversation
Fixes esbuild errors "Expected '{' but found '&'" when processing MDX
files with URLs containing query parameters (e.g., ?a=1&b=2).
The issue occurred because HTML containing & entities was embedded
directly as JSX children. When esbuild parsed this JSX, it encountered
& in an unexpected context and failed.
Changes:
- Update generate_astro_module() in Rust to use set:html for HTML content
- Update blocksToJsx() to use set:html for HTML blocks and component slots
- Remove unused sanitizeHtmlForJsx() function
- Update tests to reflect new output format
The fix uses Astro's set:html directive to pass HTML as a JSON-serialized
string that gets parsed at runtime instead of compile time.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update tests that check for HTML content inside set:html to use escaped quotes since HTML is now serialized as a JSON string. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
…_module
The previous approach wrapped the entire module output in set:html which
broke component rendering (components became plain HTML text).
This fix:
- Use set:html for HTML blocks (Fragment set:html={...})
- Use set:html for component slot content
- Keep components as JSX so they render as actual components
- Remove unused sanitize_html_block_for_jsx function
- Update tests to reflect new output format with JSON-escaped quotes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Expected "{" but found "&"when processing MDX files with URLs containing query parameters (e.g.,?a=1&b=2)set:htmldirective to pass HTML content as a JSON-serialized string that gets parsed at runtime instead of compile timesanitizeHtmlForJsx()functionRoot Cause
The issue occurred because HTML containing
&entities (from URLs with query parameters) was embedded directly as JSX children. When esbuild parsed this JSX, it encountered&in an unexpected context and failed.Before:
After:
Test plan
cargo test --workspace)pnpm --dir crates/napi test)pnpm --dir packages/astro-markflow test)Expected "{" but found "&"errors🤖 Generated with Claude Code