Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for server islands for MDX #12446

Closed
wants to merge 3 commits into from

Conversation

apatel369
Copy link
Contributor

@apatel369 apatel369 commented Nov 15, 2024

Changes

Closes #12252

Server Islands are not rendering as islands in .mdx files because server islands metadata is not added for JSX components in MDX files.
Even after adding server islands metadata, the issue persists because transform function in vite-plugin-server-islands.ts file runs before server metadata is added in rehype.ts file.

I found that vite-plugin-server-islands.ts is added last in create-vite.ts and has enforce: 'post' but still transform function is running before the server meta data is added.

I am looking for feedback and guidance from Astro contributors on how to fix it.

Testing

TODO

Docs

Not needed

Copy link

changeset-bot bot commented Nov 15, 2024

⚠️ No Changeset found

Latest commit: ff01d35

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@apatel369 apatel369 marked this pull request as draft November 15, 2024 13:37
@github-actions github-actions bot added the pkg: astro Related to the core `astro` package (scope) label Nov 15, 2024
@matthewp
Copy link
Contributor

Thanks for starting on this!

@@ -30,7 +30,7 @@ export const rehypeAnalyzeAstroMetadata: RehypePlugin = () => {
if (node.type !== 'mdxJsxFlowElement' && node.type !== 'mdxJsxTextElement') return;

const tagName = node.name;
if (!tagName || !isComponent(tagName) || !hasClientDirective(node)) return;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could removing this condition be why tests are failing? should you instead change the condition to also account for hasServerDeferDirective but otherwise leave in the hasClientDirective check?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reviewing this. Sure I will include hasServerDeferDirective in the existing condition.

@ematipico ematipico deleted the branch withastro:next November 28, 2024 11:12
@ematipico ematipico closed this Nov 28, 2024
@apatel369
Copy link
Contributor Author

@ematipico I noticed you have closed tuis PR. What's the plan to fix this issue?

@bluwy
Copy link
Member

bluwy commented Nov 28, 2024

next is now merged into main which accidentally closed this along the way. I think you can re-open a new PR that points to main instead.

@apatel369
Copy link
Contributor Author

Sure, I will do that.

@apatel369
Copy link
Contributor Author

Reopened for main #12574

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pkg: astro Related to the core `astro` package (scope)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants