mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
### Story
Since we introduced `ImageResponse` into `next/server` export, there're a few libraries relying on `next/server` that accidentally ended up with bundling og image into the bundle. As og package is quite large that could easily raise the size concern for middleware, edge runtime routes.
### Struggles
We've done optimizations. The tree-shaking strategies are tricky, we tried modularize imports and also optimize cjs require/exports to make sure you're not including og package into bundle if it's not being used. However, it's still not 100% can handle all the bundle optimization cases, such as `import {..} from "next/server.js"` could also ended up with the cjs bundle that failed the tree-shaking.
### Move on
So we decide to move og `ImageResponse` into a separate export `next/og`
Closes NEXT-1660
14 lines
377 B
JavaScript
14 lines
377 B
JavaScript
import { NextResponse } from 'next/server'
|
|
import { ImageResponse } from 'next/og'
|
|
|
|
export async function middleware(req) {
|
|
console.log('middleware', req.url)
|
|
if (req.nextUrl.pathname === '/a-non-existent-page/to-test-with-middleware') {
|
|
return new ImageResponse(<div>Hello world</div>, {
|
|
width: 1200,
|
|
height: 600,
|
|
})
|
|
}
|
|
return NextResponse.next()
|
|
}
|