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

Move ImageResponse to next/og #56662

Merged
merged 10 commits into from
Oct 19, 2023
Merged

Move ImageResponse to next/og #56662

merged 10 commits into from
Oct 19, 2023

Conversation

huozhi
Copy link
Member

@huozhi huozhi commented Oct 10, 2023

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

@ijjk
Copy link
Member

ijjk commented Oct 10, 2023

Stats from current PR

Default Build
General Overall increase ⚠️
vercel/next.js canary vercel/next.js migrate-og-export Change
buildDuration 10.6s 10.6s N/A
buildDurationCached 6.3s 6.3s N/A
nodeModulesSize 175 MB 175 MB ⚠️ +2.82 kB
nextStartRea..uration (ms) 516ms 540ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js migrate-og-export Change
199-HASH.js gzip 27.5 kB 27.5 kB N/A
3f784ff6-HASH.js gzip 53.3 kB 53.3 kB
99.HASH.js gzip 182 B 182 B
framework-HASH.js gzip 45.3 kB 45.3 kB
main-app-HASH.js gzip 254 B 250 B N/A
main-HASH.js gzip 32.9 kB 32.9 kB N/A
webpack-HASH.js gzip 1.75 kB 1.75 kB N/A
Overall change 98.8 kB 98.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js migrate-og-export Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js migrate-og-export Change
_app-HASH.js gzip 206 B 205 B N/A
_error-HASH.js gzip 182 B 180 B N/A
amp-HASH.js gzip 506 B 505 B N/A
css-HASH.js gzip 322 B 323 B N/A
dynamic-HASH.js gzip 2.57 kB 2.57 kB N/A
edge-ssr-HASH.js gzip 260 B 259 B N/A
head-HASH.js gzip 350 B 350 B
hooks-HASH.js gzip 369 B 369 B
image-HASH.js gzip 4.36 kB 4.36 kB N/A
index-HASH.js gzip 256 B 256 B
link-HASH.js gzip 2.64 kB 2.63 kB N/A
routerDirect..HASH.js gzip 312 B 311 B N/A
script-HASH.js gzip 385 B 384 B N/A
withRouter-HASH.js gzip 307 B 308 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.08 kB 1.08 kB
Client Build Manifests
vercel/next.js canary vercel/next.js migrate-og-export Change
_buildManifest.js gzip 484 B 482 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js migrate-og-export Change
index.html gzip 530 B 529 B N/A
link.html gzip 542 B 542 B
withRouter.html gzip 524 B 524 B
Overall change 1.07 kB 1.07 kB
Edge SSR bundle Size
vercel/next.js canary vercel/next.js migrate-og-export Change
edge-ssr.js gzip 93.7 kB 93.7 kB N/A
page.js gzip 155 kB 155 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js migrate-og-export Change
middleware-b..fest.js gzip 623 B 621 B N/A
middleware-r..fest.js gzip 150 B 151 B N/A
middleware.js gzip 22.5 kB 22.5 kB N/A
edge-runtime..pack.js gzip 1.92 kB 1.92 kB
Overall change 1.92 kB 1.92 kB
Commit: 2e72835

@ijjk
Copy link
Member

ijjk commented Oct 10, 2023

Tests Passed

@huozhi huozhi marked this pull request as ready for review October 17, 2023 13:18
@huozhi huozhi requested review from S3Prototype and molebox and removed request for a team October 17, 2023 13:18
@huozhi huozhi changed the title (wip) Move ImageResponse to next/og Move ImageResponse to next/og Oct 17, 2023
Copy link
Member

@sokra sokra left a comment

Choose a reason for hiding this comment

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

next_import_map.rs need to have the alias updated too0

Copy link
Member

@styfle styfle left a comment

Choose a reason for hiding this comment

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

@huozhi huozhi requested a review from a team as a code owner October 17, 2023 20:08
@huozhi huozhi marked this pull request as draft October 17, 2023 20:08
@huozhi huozhi marked this pull request as ready for review October 17, 2023 21:07
@huozhi huozhi marked this pull request as draft October 18, 2023 15:53
@huozhi huozhi marked this pull request as ready for review October 18, 2023 23:29
@ijjk ijjk added area: documentation Turbopack Related to Turbopack with Next.js. labels Oct 18, 2023
@styfle styfle requested a review from sokra October 19, 2023 00:32
@kodiakhq kodiakhq bot merged commit a3e56c9 into canary Oct 19, 2023
54 of 59 checks passed
@kodiakhq kodiakhq bot deleted the migrate-og-export branch October 19, 2023 14:26
kodiakhq bot pushed a commit that referenced this pull request Oct 19, 2023
Adding codemod for #56662 for easier migration of `ImageResponse` from `"next/server"` to `"next/og"`
@github-actions github-actions bot added the locked label Nov 3, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 3, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Next.js team PRs by the Next.js team. locked Turbopack Related to Turbopack with Next.js. type: next
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants