Skip to content

[services] build time service url env vars#14893

Merged
ricardo-agz merged 4 commits intomainfrom
ricardo/be-426-services-env-vars
Feb 5, 2026
Merged

[services] build time service url env vars#14893
ricardo-agz merged 4 commits intomainfrom
ricardo/be-426-services-env-vars

Conversation

@ricardo-agz
Copy link
Copy Markdown
Contributor

@ricardo-agz ricardo-agz commented Feb 5, 2026

  • Injects {SERVICE_NAME}_URL (and {FRAMEWORK_PREFIX}_{SERVICE_NAME}_URL) environment variables for all the web services that are part of the deployment
  • These consist of {VERCEL_URL}/{SERVICE_ROUTE_PREFIX}
  • This is so they are available during the build, as some frontend frameworks, e.g. Next and Vite require them to be available during build time, not just runtime

Add getServiceUrlEnvVars utility to @vercel/build-utils that generates
environment variables for service URLs (e.g., BACKEND_URL, VITE_BACKEND_URL,
NEXT_PUBLIC_BACKEND_URL).

Wire this into the CLI build command to inject service URLs into process.env
after services are detected, making them available during framework builds.

Key behaviors:
- Requires VERCEL_URL to generate absolute URLs
- User-defined env vars take precedence (won't overwrite existing)
- Generates framework-prefixed versions for all frontend frameworks
  in the deployment (VITE_, NEXT_PUBLIC_, etc.)
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Feb 5, 2026

🦋 Changeset detected

Latest commit: 3ee79f2

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

This PR includes changesets to release 15 packages
Name Type
@vercel/build-utils Patch
vercel Patch
@vercel/backends Patch
@vercel/client Patch
@vercel/elysia Patch
@vercel/express Patch
@vercel/fastify 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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 5, 2026

📦 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-blmk85zya.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-blmk85zya.vercel.sh/tarballs/vercel.tgz"
    }
  }
}

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 5, 2026

🧪 Unit Test Strategy

Comparing: fc357e13ee79f2 (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: Handled separately (Version Packages PRs or run-e2e-tests label)
  • Type checks: All affected packages will run type checks

This comment is automatically generated based on the affected testing strategy

@ricardo-agz ricardo-agz marked this pull request as ready for review February 5, 2026 21:58
@ricardo-agz ricardo-agz requested a review from a team as a code owner February 5, 2026 21:58
@ricardo-agz ricardo-agz merged commit ff320ca into main Feb 5, 2026
144 checks passed
@ricardo-agz ricardo-agz deleted the ricardo/be-426-services-env-vars branch February 5, 2026 22:27
* e.g., "frontend" → "FRONTEND_URL", "api-users" → "API_USERS_URL"
*/
function serviceNameToEnvVar(name: string): string {
return `${name.replace(/-/g, '_').toUpperCase()}_URL`;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we have a restricted alphabet for service names? is it [alpha][alnum]*?

jeffsee55 pushed a commit that referenced this pull request Feb 6, 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/frameworks@3.17.0

### Minor Changes

- Add experimental Go runtime framework preset.
([#14865](#14865))

This adds support for deploying standalone Go HTTP servers (using
`package main` with `func main()`) in addition to the existing
serverless function pattern. The preset supports:

    -   `main.go` at project root (simple projects)
    -   `cmd/api/main.go` (API servers)
    -   `cmd/server/main.go` (HTTP servers)

The Go application must listen on the port specified by the `PORT`
environment variable.

## @vercel/go@3.4.0

### Minor Changes

- Add experimental Go runtime framework preset.
([#14865](#14865))

This adds support for deploying standalone Go HTTP servers (using
`package main` with `func main()`) in addition to the existing
serverless function pattern. The preset supports:

    -   `main.go` at project root (simple projects)
    -   `cmd/api/main.go` (API servers)
    -   `cmd/server/main.go` (HTTP servers)

The Go application must listen on the port specified by the `PORT`
environment variable.

## @vercel/backends@0.0.29

### Patch Changes

- Updated dependencies
\[[`fc357e11cb4b00ab8ec413a0ea3586a87e733f0e`](fc357e1),
[`ff320caa5c8a0857aad0b989699207a6a703256f`](ff320ca)]:
    -   @vercel/build-utils@13.3.2

## @vercel/build-utils@13.3.2

### Patch Changes

- Improve memory efficiency in `FileBlob.fromStream()` by avoiding
unnecessary buffer copies when chunks are already Buffers
([#14701](#14701))

- [services] build time service url env vars
([#14893](#14893))

- Updated dependencies
\[[`7a747344dfb778a650da2ee5f7fba8c974098b42`](7a74734)]:
    -   @vercel/python-analysis@0.3.1

## @vercel/cervel@0.0.16

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/backends@0.0.29

## vercel@50.12.2

### Patch Changes

- Add source and defaultResourceName query params to legacy integration
add web UI path ([#14868](#14868))

- [services] build time service url env vars
([#14893](#14893))

- Updated dependencies
\[[`fc357e11cb4b00ab8ec413a0ea3586a87e733f0e`](fc357e1),
[`84f121190813b2840a6a16279dcaa75dcb2872cd`](84f1211),
[`ff320caa5c8a0857aad0b989699207a6a703256f`](ff320ca)]:
    -   @vercel/build-utils@13.3.2
    -   @vercel/go@3.4.0
    -   @vercel/backends@0.0.29
    -   @vercel/elysia@0.1.31
    -   @vercel/express@0.1.40
    -   @vercel/fastify@0.1.34
    -   @vercel/h3@0.1.40
    -   @vercel/hono@0.2.34
    -   @vercel/hydrogen@1.3.5
    -   @vercel/koa@0.1.14
    -   @vercel/nestjs@0.2.35
    -   @vercel/next@4.15.23
    -   @vercel/node@5.5.32
    -   @vercel/python@6.6.0
    -   @vercel/redwood@2.4.9
    -   @vercel/remix-builder@5.5.10
    -   @vercel/ruby@2.2.5
    -   @vercel/rust@1.0.5
    -   @vercel/static-build@2.8.33

## @vercel/client@17.2.35

### Patch Changes

- Updated dependencies
\[[`fc357e11cb4b00ab8ec413a0ea3586a87e733f0e`](fc357e1),
[`ff320caa5c8a0857aad0b989699207a6a703256f`](ff320ca)]:
    -   @vercel/build-utils@13.3.2

## @vercel/elysia@0.1.31

### Patch Changes

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

## @vercel/express@0.1.40

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.5.32
    -   @vercel/cervel@0.0.16

## @vercel/fastify@0.1.34

### Patch Changes

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

## @vercel/fs-detectors@5.8.2

### Patch Changes

- Updated dependencies
\[[`84f121190813b2840a6a16279dcaa75dcb2872cd`](84f1211)]:
    -   @vercel/frameworks@3.17.0

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

### Patch Changes

- Updated dependencies
\[[`fc357e11cb4b00ab8ec413a0ea3586a87e733f0e`](fc357e1),
[`ff320caa5c8a0857aad0b989699207a6a703256f`](ff320ca)]:
    -   @vercel/build-utils@13.3.2

## @vercel/h3@0.1.40

### Patch Changes

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

## @vercel/hono@0.2.34

### Patch Changes

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

## @vercel/koa@0.1.14

### Patch Changes

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

## @vercel/nestjs@0.2.35

### Patch Changes

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

## @vercel/node@5.5.32

### Patch Changes

- Updated dependencies
\[[`fc357e11cb4b00ab8ec413a0ea3586a87e733f0e`](fc357e1),
[`ff320caa5c8a0857aad0b989699207a6a703256f`](ff320ca)]:
    -   @vercel/build-utils@13.3.2

## @vercel/python-analysis@0.3.1

### Patch Changes

- fix ESM/CJS cross-compatibility
([#14869](#14869))

## @vercel/static-build@2.8.33

### Patch Changes

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

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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