Skip to content

[build-utils] Align deserialize logic with existing callers#16002

Merged
healeycodes merged 2 commits into
mainfrom
deserialize-alignment
Apr 16, 2026
Merged

[build-utils] Align deserialize logic with existing callers#16002
healeycodes merged 2 commits into
mainfrom
deserialize-alignment

Conversation

@healeycodes

Copy link
Copy Markdown
Member

While I was integrating #15961 for existing callers, I saw that we are slightly changing the behavior of prerenders.

This PR fixes the differing semantics and unblocks this migration work.

@healeycodes healeycodes requested a review from ofhouse April 16, 2026 15:18
@healeycodes healeycodes requested a review from a team as a code owner April 16, 2026 15:18
@changeset-bot

changeset-bot Bot commented Apr 16, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: d876e6b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@vercel/build-utils Patch
@vercel/backends Patch
vercel Patch
@vercel/client Patch
@vercel/elysia Patch
@vercel/express Patch
@vercel/fastify Patch
@vercel/fs-detectors Patch
@vercel/gatsby-plugin-vercel-builder Patch
@vercel/h3 Patch
@vercel/hono Patch
@vercel/koa Patch
@vercel/nestjs Patch
@vercel/node Patch
@vercel/static-build Patch
@vercel/cervel Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@healeycodes healeycodes enabled auto-merge (squash) April 16, 2026 15:19
@vercel

vercel Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

Low Risk — Build utils refactor: moves boundary generation to module scope for consistency + adds TypeScript generics + tests.

  • prerender-to-build-output-file.ts: moved boundary generation from function scope to module scope for consistent multipart boundaries
  • serialized-types.ts: added generic type parameters to SerializedLambda and SerializedNodejsLambda types
  • unit.deserialize-lambda.test.ts: added new test file for deserializeLambda with subclass preservation

Assessed at d876e6b.

@github-actions

github-actions Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

📦 CLI Tarball Ready

The Vercel CLI tarball for this PR is now available!

Quick Test

You can test this PR's CLI directly by running:

npx https://vercel-j0rizfi4g.vercel.sh/tarballs/vercel.tgz --help

Use in vercel.json

To use this CLI version in your project builds, add to your vercel.json:

{
  "build": {
    "env": {
      "VERCEL_CLI_VERSION": "vercel@https://vercel-j0rizfi4g.vercel.sh/tarballs/vercel.tgz"
    }
  }
}

Python Runtime Wheel

A vercel-runtime wheel was also built for this PR.
To use in your Python project builds, also set this environment variable:

VERCEL_RUNTIME_PYTHON="vercel-runtime @ https://vercel-j0rizfi4g.vercel.sh/tarballs/vercel_runtime-0.14.0.dev1776354707+d876e6b-py3-none-any.whl"

Python Workers Wheel

A vercel-workers wheel was also built for this PR.
To use in your Python project builds, also set this environment variable:

VERCEL_WORKERS_PYTHON="vercel-workers @ https://vercel-j0rizfi4g.vercel.sh/tarballs/vercel_workers-0.1.0.dev1776354707+d876e6b-py3-none-any.whl"

@github-actions

github-actions Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

🧪 Unit Test Strategy

Comparing: 7b1db35d876e6b (view diff)

Strategy: Code changed outside of a package - running all unit tests

⚠️ All unit tests will run because global code changes could impact all packages.

Affected packages - 40 (100%)
  1. @vercel-internals/get-package-json
  2. @vercel/backends
  3. @vercel/build-utils
  4. @vercel/cervel
  5. @vercel/cli-auth
  6. @vercel/client
  7. @vercel/config
  8. @vercel/detect-agent
  9. @vercel/edge
  10. @vercel/elysia
  11. @vercel/error-utils
  12. @vercel/express
  13. @vercel/fastify
  14. @vercel/firewall
  15. @vercel/frameworks
  16. @vercel/fs-detectors
  17. @vercel/functions
  18. @vercel/gatsby-plugin-vercel-builder
  19. @vercel/go
  20. @vercel/h3
  21. @vercel/hono
  22. @vercel/hydrogen
  23. @vercel/koa
  24. @vercel/nestjs
  25. @vercel/next
  26. @vercel/node
  27. @vercel/oidc
  28. @vercel/oidc-aws-credentials-provider
  29. @vercel/python
  30. @vercel/python-analysis
  31. @vercel/redwood
  32. @vercel/related-projects
  33. @vercel/remix-builder
  34. @vercel/routing-utils
  35. @vercel/ruby
  36. @vercel/rust
  37. @vercel/static-build
  38. @vercel/static-config
  39. examples
  40. vercel

Results

  • Unit tests: All affected packages will run unit tests
  • E2E tests: Running in parallel via E2E Tests workflow
  • Type checks: All affected packages will run type checks

This comment is automatically generated based on the affected testing strategy

@healeycodes healeycodes merged commit 5219572 into main Apr 16, 2026
254 of 257 checks passed
@healeycodes healeycodes deleted the deserialize-alignment branch April 16, 2026 18:04
jeffsee55 pushed a commit that referenced this pull request Apr 16, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @vercel/backends@0.0.63

### Patch Changes

- Typecheck deployment TypeScript via the compiler API (entry + import
graph), deduplicate the cervel `typescript` module, and extend the
turborepo fixture with a chained `tsconfig` for monorepo path
resolution. ([#15980](#15980))

- Relax failures when we don't find an entrypoint for backends to
maximize backwards compatibility
([#15980](#15980))

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572)]:
    -   @vercel/build-utils@13.17.1

## @vercel/build-utils@13.17.1

### Patch Changes

- Align deserialize logic with existing callers.
([#16002](#16002))

## @vercel/cervel@0.0.50

### Patch Changes

- Updated dependencies
\[[`2babfa22946d80a92f1307a8d860a9039d695b09`](2babfa2),
[`2babfa22946d80a92f1307a8d860a9039d695b09`](2babfa2)]:
    -   @vercel/backends@0.0.63

## vercel@51.5.1

### Patch Changes

- Improve Claude Code Vercel plugin install and update prompts across
CLI commands. ([#15921](#15921))

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572),
[`2babfa22946d80a92f1307a8d860a9039d695b09`](2babfa2),
[`2babfa22946d80a92f1307a8d860a9039d695b09`](2babfa2),
[`adbe6f0a0152136aa26aa1277458f4578f62beeb`](adbe6f0)]:
    -   @vercel/build-utils@13.17.1
    -   @vercel/backends@0.0.63
    -   @vercel/python@6.33.2
    -   @vercel/elysia@0.1.66
    -   @vercel/express@0.1.76
    -   @vercel/fastify@0.1.69
    -   @vercel/go@3.5.0
    -   @vercel/h3@0.1.75
    -   @vercel/hono@0.2.69
    -   @vercel/hydrogen@1.3.6
    -   @vercel/koa@0.1.49
    -   @vercel/nestjs@0.2.70
    -   @vercel/next@4.16.8
    -   @vercel/node@5.7.8
    -   @vercel/redwood@2.4.12
    -   @vercel/remix-builder@5.7.2
    -   @vercel/ruby@2.3.2
    -   @vercel/rust@1.1.1
    -   @vercel/static-build@2.9.16

## @vercel/client@17.3.5

### Patch Changes

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572)]:
    -   @vercel/build-utils@13.17.1

## @vercel/elysia@0.1.66

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/express@0.1.76

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8
    -   @vercel/cervel@0.0.50

## @vercel/fastify@0.1.69

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/fs-detectors@5.18.1

### Patch Changes

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572)]:
    -   @vercel/build-utils@13.17.1

## @vercel/gatsby-plugin-vercel-builder@2.1.16

### Patch Changes

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572)]:
    -   @vercel/build-utils@13.17.1

## @vercel/h3@0.1.75

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/hono@0.2.69

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/koa@0.1.49

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/nestjs@0.2.70

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.8

## @vercel/node@5.7.8

### Patch Changes

- Updated dependencies
\[[`5219572d21a2ba4b49cc1c27d244c1ff5d76c591`](5219572)]:
    -   @vercel/build-utils@13.17.1

## @vercel/python@6.33.2

### Patch Changes

- Update the error for custom installCommand builds >250MB.
([#15946](#15946))

## @vercel/static-build@2.9.16

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/gatsby-plugin-vercel-builder@2.1.16

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
healeycodes added a commit that referenced this pull request Apr 20, 2026
Building on previous PRs:
- #15927
- #15961
- #16002


We are extracting the core `deserialize-build-output.ts` file here. This
is following refactor efforts in the existing caller codebases to make
this extraction simpler.

After shipping this extraction, we'll delete the duplicated code and
import `deserializeBuildOutput` from this PR. Doing this should
introduce zero semantic changes for those callers.

Note: callers must inject their own `groupLambdas` strategy.

Note2: some existing TODO comments have been left in-place as code
documentation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants