Skip to content

Add node:fs implementation on Sandbox#112

Merged
LukeSheard merged 7 commits intomainfrom
luke/fs
Apr 13, 2026
Merged

Add node:fs implementation on Sandbox#112
LukeSheard merged 7 commits intomainfrom
luke/fs

Conversation

@LukeSheard
Copy link
Copy Markdown
Collaborator

@LukeSheard LukeSheard commented Mar 25, 2026

This PR introduces a node:fs-compatible API for the Vercel Sandbox environment.

The goal is to provide a familiar, minimal subset of Node’s filesystem interface that works within the constraints of the Sandbox runtime, enabling easier portability of existing Node.js code and libraries.

In particular provide something we can pass directly around with just-bash as an fs implementation without needing their Sandbox primitive wrapper.

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sandbox Ready Ready Preview, Comment, Open in v0 Apr 13, 2026 4:54pm
sandbox-cli Ready Ready Preview, Comment, Open in v0 Apr 13, 2026 4:54pm
sandbox-sdk Ready Ready Preview, Comment, Open in v0 Apr 13, 2026 4:54pm
sandbox-sdk-ai-example Ready Ready Preview, Comment, Open in v0 Apr 13, 2026 4:54pm
workflow-code-runner Ready Ready Preview, Comment, Open in v0 Apr 13, 2026 4:54pm

@LukeSheard LukeSheard changed the title basic fs implementation Add node:fs implementation on Sandbox Mar 25, 2026
Copy link
Copy Markdown
Collaborator Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

The SWC compiler plugin in workflow@4.2.0-beta.73 had a bug where
anonymous class expressions (var Foo = class { ... }) without an
internal class name would fall back to 'AnonymousClass' for step
registrations, causing a ReferenceError at runtime.

This was fixed in vercel/workflow2@5d22e614 and released in 4.2.1.
@socket-security
Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​workflow@​4.2.19910085100100

View full report

@LukeSheard LukeSheard merged commit 42515e1 into main Apr 13, 2026
14 checks passed
@LukeSheard LukeSheard deleted the luke/fs branch April 13, 2026 19:12
@github-actions github-actions bot mentioned this pull request Apr 13, 2026
Schniz added a commit that referenced this pull request Apr 14, 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/sandbox@1.10.0

### Minor Changes

- Expose Filesystem api from Sandbox
([#112](#112))

### Patch Changes

- Reuse Undici `Agent` across instances
([#143](#143))

- Smarter fallback team selection for scope inference: tries
`defaultTeamId` first, then the best hobby-plan OWNER team (personal
team or most recently updated). Filters fallback candidates by
`billing.plan === 'hobby'` to avoid selecting pro/enterprise teams.
Skips teams that return 403 and shows a helpful error when no team
allows sandbox creation.
([#120](#120))

- Add workflow serialization support for the `Snapshot` class via
`WORKFLOW_SERIALIZE` / `WORKFLOW_DESERIALIZE`, fixing serialization
errors when a `Snapshot` instance is returned from a workflow step.
([#140](#140))

## sandbox@2.5.10

### Patch Changes

- Smarter fallback team selection for scope inference: tries
`defaultTeamId` first, then the best hobby-plan OWNER team (personal
team or most recently updated). Filters fallback candidates by
`billing.plan === 'hobby'` to avoid selecting pro/enterprise teams.
Skips teams that return 403 and shows a helpful error when no team
allows sandbox creation.
([#120](#120))

- Updated dependencies
\[[`9dc0ac96d1d531b5a44786c92d6ddc2ce4890791`](9dc0ac9),
[`494c2ddae5899b7f793cbd906a2a62260bd08885`](494c2dd),
[`3fbabb95946771e41d8b17b7f8cb8d2972beba25`](3fbabb9),
[`42515e1ede4468fad204e5332ade0ee5d8dce3e5`](42515e1)]:
    -   @vercel/sandbox@1.10.0

## sandbox-filesystem-snapshots@0.0.15

### Patch Changes

- Updated dependencies
\[[`9dc0ac96d1d531b5a44786c92d6ddc2ce4890791`](9dc0ac9),
[`494c2ddae5899b7f793cbd906a2a62260bd08885`](494c2dd),
[`3fbabb95946771e41d8b17b7f8cb8d2972beba25`](3fbabb9),
[`42515e1ede4468fad204e5332ade0ee5d8dce3e5`](42515e1)]:
    -   @vercel/sandbox@1.10.0

## workflow-code-runner@0.1.4

### Patch Changes

- Updated dependencies
\[[`9dc0ac96d1d531b5a44786c92d6ddc2ce4890791`](9dc0ac9),
[`494c2ddae5899b7f793cbd906a2a62260bd08885`](494c2dd),
[`3fbabb95946771e41d8b17b7f8cb8d2972beba25`](3fbabb9),
[`42515e1ede4468fad204e5332ade0ee5d8dce3e5`](42515e1)]:
    -   @vercel/sandbox@1.10.0

---------

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