Agent Skill
2/7/2026nextjs-og-image-css-limitations
Fix for Next.js OG image build errors with invalid CSS display values. Use when: (1) Build fails with "Invalid value for CSS property display", (2) error mentions allowed values "flex" | "block" | "none" | "-webkit-box", (3) using display: inline-block or other CSS display values in next/og ImageResponse components. The fix is to use display: flex with alignSelf: flex-start instead of inline-block.
S
strataga
0GitHub Stars
1Views
npx skills add strataga/claude-setup
SKILL.md
| Name | nextjs-og-image-css-limitations |
| Description | Fix for Next.js OG image build errors with invalid CSS display values. Use when: (1) Build fails with "Invalid value for CSS property display", (2) error mentions allowed values "flex" | "block" | "none" | "-webkit-box", (3) using display: inline-block or other CSS display values in next/og ImageResponse components. The fix is to use display: flex with alignSelf: flex-start instead of inline-block. |
name: nextjs-og-image-css-limitations description: | Fix for Next.js OG image build errors with invalid CSS display values. Use when: (1) Build fails with "Invalid value for CSS property display", (2) error mentions allowed values "flex" | "block" | "none" | "-webkit-box", (3) using display: inline-block or other CSS display values in next/og ImageResponse components. The fix is to use display: flex with alignSelf: flex-start instead of inline-block. author: Claude Code version: 1.0.0 date: 2026-01-21
Next.js OG Image CSS Limitations
Problem
Next.js next/og ImageResponse uses Satori for rendering, which only supports a subset
of CSS. Using unsupported display values like inline-block causes build failures
during static generation.
Context / Trigger Conditions
- Build error:
Error occurred prerendering page "/opengraph-image" - Error message:
Invalid value for CSS property "display". Allowed values: "flex" | "block" | "none" | "-webkit-box". Received: "inline-block" - Files affected:
opengraph-image.tsx,twitter-image.tsx, or similar OG image routes - Using
next/ogImageResponse component
Solution
Replace inline-block with flex + alignSelf
Before (causes error):
<div
style={{
display: 'inline-block',
padding: '10px 24px',
background: '#FFCC00',
width: 'fit-content', // Also not supported
}}
>
Badge Text
</div>
After (works):
<div
style={{
display: 'flex',
padding: '10px 24px',
background: '#FFCC00',
alignSelf: 'flex-start', // Prevents stretching to full width
}}
>
Badge Text
</div>
Allowed display values
flex- Most versatile, use with flexbox propertiesblock- Simple block elementnone- Hide element-webkit-box- Legacy flexbox (rarely needed)
Other CSS limitations to watch for
width: fit-content- Not supported, usealignSelf: flex-startinsteadgrid- Not supported, use nested flex containersinline,inline-flex- Not supported- Complex selectors - Not supported, inline styles only
Verification
- Run
npm run buildornext build - No errors during static page generation
- OG image routes generate successfully
- Preview OG images at
/opengraph-imageor using OG debugger tools
Example
Full working OG image component:
import { ImageResponse } from 'next/og'
export const runtime = 'nodejs'
export default function OpengraphImage() {
return new ImageResponse(
<div
style={{
height: '100%',
width: '100%',
display: 'flex',
flexDirection: 'column',
background: '#FFFEF5',
padding: '60px 80px',
}}
>
{/* Badge - use flex + alignSelf instead of inline-block */}
<div
style={{
display: 'flex',
padding: '10px 24px',
background: '#FFCC00',
border: '4px solid #1a1a1a',
fontSize: '20px',
fontWeight: 700,
alignSelf: 'flex-start', // Key: prevents full-width stretch
}}
>
CASE STUDY
</div>
{/* Title */}
<div
style={{
fontSize: '72px',
fontWeight: 900,
color: '#1a1a1a',
marginTop: '24px',
}}
>
Project Title
</div>
</div>,
{
width: 1200,
height: 630,
}
)
}
Notes
- Satori (used by next/og) is designed for server-side rendering to images
- It intentionally limits CSS to ensure consistent cross-platform rendering
- Complex layouts should use nested flex containers
- Fonts must be loaded explicitly in the ImageResponse options
- Testing locally with
next devmay not catch all issues; always test withnext build
References
Skills Info
Original Name:nextjs-og-image-css-limitationsAuthor:strataga
Download