You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"use client"
import { PrismicNextLink } from "@prismicio/next"
export default function StyledLink() {
return <PrismicNextLink />
}
Import and render the new component into a page.js in your app directory
Attempt to navigate to the page with component included and see a Server Component error
What is expected?
PrismicNextLink will render the same with or without the "use client" directive, as it does so when not transpiling the packages using NextJS configuration
What is actually happening?
The new component throws the following fatal error
ReactServerComponentsError:
You're importing a component that needs next/headers. That only works in a Server Component but one of its parents is marked with "use client", so it's a Client Component.
Learn more: https://nextjs.org/docs/getting-started/react-essentials
1 | import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2 | import Script from "next/script";
3 | import { draftMode } from "next/headers";
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 | import { PrismicPreviewClient } from "./PrismicPreviewClient.js";
5 | import { getToolbarSrc } from './_node_modules/@prismicio/client/dist/getToolbarSrc.js';
6 | function PrismicPreview({ repositoryName, children, ...props }) {
`----
One of these is marked as a client entry with "use client":
./node_modules\@prismicio\next\dist\PrismicPreview.js
./node_modules\@prismicio\next\dist\index.js
./components\StyledLink.js
The text was updated successfully, but these errors were encountered:
This issue has been labeled as a bug since it was created using the 🚨 Bug Report Template.
Hi there, thank you so much for the report!
Following our Maintenance Process, we will review your bug report and get back to you next Wednesday. To ensure a smooth review of your issue and avoid unnecessary delays, please make sure your issue includes the following:
Information about your environment and packages you use (Node.js version, package names and their versions, etc.) Feel free to attach a copy of your package.json file.
Any troubleshooting steps you already went through
A minimal reproduction of the issue, and/or instructions on how to reproduce it
If you have identified the cause of the bug described in your report and know how to fix it, you're more than welcome to open a pull request address it. Check out our quick start guide for a simple contribution process.
If you think your issue is a question (not a bug) and would like quicker support, please close this issue and forward it to an appropriate section on our community forum: https://community.prismic.io
Hi @Syphini, could you explain your use case for adding @prismicio/client and @prismicio/next to transpilePackages? Both packages should work without adding them to the transpilePackages option.
This may be happening because Next.js is bundling the packages into a single file, which causes the "use client" to be part of the whole file—not just the individual modules that need it. Just speculating; I haven't tested this yet.
Hey @angeloashmore, I was testing the packages against an iOS 12 device with Safari 12 installed (since NextJS supports Safari 12+) , and noticed that it was throwing errors related to ES2020 features so I figured that the package wasn't natively transpiling to support them in older devices. Decided to throw both packages in the transpilePackages option of nextConfig and that seemed to allow them to work correctly on that older device until I discovered this issue.
Wasn't really sure if I should try filing a bug report with you guys or NextJS, or maybe even one about natively transpiling here.
Can also provide a reproduction of the Safari 12 issue if that's something you guys do support.
Versions
@prismicio/next
: v1.3.4next
: v13.4.19Reproduction
Additional Details
Steps to reproduce
npx create-next-app@latest
andnpx @slicemachine/init@latest
with App Router enablednext.config.js
file add the following to thenextConfig
page.js
in yourapp
directoryWhat is expected?
PrismicNextLink
will render the same with or without the "use client" directive, as it does so when not transpiling the packages using NextJS configurationWhat is actually happening?
The new component throws the following fatal error
The text was updated successfully, but these errors were encountered: