Table of Contents
- Used Stack
- New Component for Syntax Highlighting in My Blog Posts
- Integration of new component into Contentful Richtext Component
- Passing Codeblock to the new Component
- Showing Codeblock with new syntax highlighting
- Content Management for Syntax Highlighting in Contentful
- Cloudapp-dev, and before you leave us
Now, I will reuse the component I created in the previous story combined with the headless CMS Contentful. So I can create my Content within Contentful and use Next.js 14 for the visualization, which makes my life a lot easier.
Here is the GitHub repo with the entire code. Below, you will find the link to the example page.
Example page hosted on Vercel -> https://nextjs14-contentful-syntax-highlighting.vercel.app/
Used Stack
I will start with my default stack:
- Next.js 14 as the web framework, and I will use the provided middleware edge function 
- NPM Package Shiki for syntax highlighting and the corresponding transformers package 
- Contentful CMS (Free Plan) 
- Vercel for hosting 
New Component for Syntax Highlighting in My Blog Posts
I copied the code from the old component (//src/components/tools/syntax highlight/syntax highlight.component.tsx) that I used on the homepage.
Since I would like to restyle the component for the blog posts, I created a new file //src/components/tools/syntax highlight/syntax highlightPost.component.tsx with this code.
Integration of new component into Contentful Richtext Component
When I am done with this, I will import the newly created component into my main Contentful Rich Text Component under //src/components/CtfRichText.component.tsx
Passing Codeblock to the new Component
The complete magic happens in the [MARKS.CODE] Block
Definition of variable
Showing Codeblock with new syntax highlighting
<SyntaxHighlightPost code={showCodeText} lang="typescript" />
You can also see many comments. These code pieces were used before for the old code block.

Content Management for Syntax Highlighting in Contentful
Below you can see a content record of type “page — Blog post” where I mark the corresponding content block as “Code” in the rich text field “Content”. At the end of each line, which should be formatted specially, I put the right keywords from the Shiki package. That’s it, and now we have a great CMS combined with a nice-looking output on the frontend side, handled by next.js 14.

Cloudapp-dev, and before you leave us
Thank you for reading until the end. Before you go:




