Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: serverless/serverless
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: serverless/serverless
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: sea
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 2 commits
  • 16 files changed
  • 2 contributors

Commits on Apr 13, 2026

  1. feat: add Single Executable Application (SEA) build for the framework

    Add local build infrastructure to compile the Serverless Framework into a
    standalone binary using Node.js SEA. The binary embeds the V8 engine, all
    framework code, and support files — eliminating the need for Node.js, npm,
    or `npm install` on the target machine.
    
    Key changes:
    - New `build-sea.sh` and `esbuild-sea.js` in packages/sf-core for SEA builds
    - ajv runtime Module._resolveFilename hook for standalone validator code
    - Support files embedded as SEA assets, extracted next to binary on first run
    - esbuild native binary embedded as asset with ESBUILD_BINARY_PATH trick
    - Remove `@aws-sdk/signature-v4-crt` (native CRT) import — pure JS
      `@aws-sdk/signature-v4a` self-registers as fallback
    - Remove `@aws-sdk/signature-v4-crt` from framework-dist dependencies
    
    Tested: --version, --help, print, package (with esbuild TS bundling),
    deploy, invoke, info, logs, remove, SigV4a signing.
    
    Known limitation: ESM SEA does not support dynamic import() of external
    files — affects plugin loading and invoke local (Node.js).
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    czubocha and claude committed Apr 13, 2026
    Configuration menu
    Copy the full SHA
    54a045b View commit details
    Browse the repository at this point in the history
  2. feat: add SEA import bridge for loading external modules

    ESM SEA restricts import() to built-in modules only — external files
    (plugins, user config, handlers) can't be loaded directly. This adds a
    three-tier loadExternalModule() utility:
    
      1. import() — works outside SEA (no change for current users)
      2. createRequire() — works in SEA for CJS modules
      3. Bridge file — works in SEA for ESM modules (escapes the SEA loader
         by loading a CJS file via createRequire, whose import() runs under
         the normal filesystem loader)
    
    Updated call sites: plugin-manager.js, configuration/read.js,
    esbuild/index.js, invoke-local/index.js.
    
    Tested: CJS plugins, ESM plugins, npm plugins, serverless.js config,
    esbuild.config.js, invoke local — all work in the SEA binary.
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    czubocha and claude committed Apr 13, 2026
    Configuration menu
    Copy the full SHA
    2120b9e View commit details
    Browse the repository at this point in the history
Loading