memfs provides JavaScript file system utilities for Node.js and browsers, including an in-memory implementation of the Node.js fs API and the browser File System API. It’s useful for testing or running code that expects filesystem behavior without writing to a real disk, and it also includes adapters between the Node fs API and the browser File System API.
Project status
- Actively maintained, GitHub updates are recent (2026-08-10, 2026-08-05, 2026-08-04), and the project continues to add fs and browser File System API adapter functionality plus behavioral fixes.
- Update cadence appears steady and frequent, with new versions landing about every few days in early August 2026.
AI summary generated
Recent updates
v4.68.1
This release changes memfs unlink behavior so that attempting to unlink a directory does not remove it. The release notes mention empty directories specifically. The code also broadens the restriction to all directory cases and standardizes the thrown error to an EPERM-style error.
v4.68.0
v4.68.0 adds support for a node creation time (birth time), exposing it through Node and the fs-compatible Stats APIs. The change introduces Node.btime, includes it in serialization, and updates stats generation so reported birthtime values are stable and distinct from ctime.
BreakingFeaturesv4.67.0
Release v4.67.0 primarily updates the memfs Git File System Access (git-fsa) browser demo to persist the user-selected directory handle and reuse it on later visits. The code diff also includes several demo build/runtime changes (IndexedDB handle storage, worker removal, and webpack/dev-server adjustments) that are not mentioned in the release notes.
Featuresv4.66.1
Release v4.66.1 is a small build-focused change across the memfs monorepo. The only functional-area change shown in the diff is enabling inline sources for sourcemaps (to embed sources in published sourcemaps), alongside the usual version bumps across packages.
v4.66.0
This release updates memfs to better handle Windows drive-letter file URLs and adjusts the package metadata around tslib peer dependencies. In addition to the documented behavioral fix, the implementation changes the underlying POSIX/Windows URL-to-path conversion logic and adds targeted tests.
v4.65.0
Release v4.65.0 refactors directory listing in the File System Access API adapter (FsaNodeFs) to support the `recursive` option. It also adds additional test coverage around FileHandle behavior after unlinking.
Featuresv4.64.0
Release v4.64.0 is described in the notes as “Fsa watch bridge improvements”. The actual diff shows broader watch-related changes across multiple packages, including new/extended `watch()` options (signal, ignore, throwIfNoEntry, buffer encoding) and updated abort semantics for `fs.promises.watch`.
Featuresv4.63.0
This release introduces a Node.js fs.watch to File System Access (FSA) watcher bridge (“node-to-FSA watcher bridge”). It adds a new NodeFileSystemObserver implementation, wires it into the exports, and extends the fsa-to-node adapter behavior to support fs.watch/watchFile so events can flow across both stacks.
Featuresv4.62.0
This release adds an FSA-to-Node watcher bridge, implementing Node-like `fs.watch` and `fs.watchFile` functionality for the `fs-fsa-to-node` adapter using the browser/FS `FileSystemObserver` (and polling for stat changes). New watcher classes (`FsaNodeFsWatcher`, `FsaNodeStatWatcher`) are introduced and wired into `FsaNodeFs` along with a configurable observer constructor. The release notes only mention the bridge at a high level.
Featuresv4.61.0
This release (v4.61.0) primarily introduces a real implementation of `FileSystemObserver` in `fs-fsa`, replacing previously unimplemented methods. It also adds extensive tests to validate observer behavior, including Windows-specific hardening for test reliability.
BreakingFeatures