Back to Explore

streamich/memfs

GitHub
15 updates · last 90 days1 watchersOpen source

Last release:

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 activity is recent (upstream push on 2026-09-02), and the memfs repository shows continuous patch and feature updates through late August 2026.
  • Update cadence appears steady, with multiple updates in August 2026 (roughly every few days to a couple of weeks) and additional watcher-related updates in early July 2026.

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v4.71.0

    v4.71.0 focuses on normalizing errors to be more Node.js-like, including standardized `err.code`, `err.errno`, `err.syscall`, and path-related fields. The change also restructures error creation into new core modules and updates how errors propagate across watchers and worker boundaries.

    BreakingFeatures
  • v4.70.0

    This release adds a hard cap of 40 symbolic link hops during resolution and improves the algorithm used for `.open()` operations. The diff also shows several related behavior changes around trailing slashes, `O_NOFOLLOW`, and error-path reporting that are not described in the release notes.

    BreakingFeatures
  • v4.69.1

    Release v4.69.1 is a refactor aimed at improving how dependencies are shared across the memfs monorepo packages (PR #1281). The release notes only mention dependency refactoring, but the diff shows multiple code paths were moved or re-exported between packages, which can affect runtime behavior and deep imports.

  • v4.69.0

    Release v4.69.0 adds improved support for the POSIX O_NOFOLLOW flag. The implementation updates core path resolution in Superblock.open to detect symlinks and throws an ELOOP error, with new tests covering open/openSync and stream and promises APIs.

    BreakingFeatures
  • v4.68.2

    Release v4.68.2 is a bug fix release that changes append-mode write behavior to match Linux. The code now treats O_APPEND as always writing to the current end of the file, regardless of any caller-provided position.

    Breaking
  • 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.

    BreakingFeatures
  • v4.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.

    Features
  • v4.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.

    Features
  • v4.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`.

    Features
  • v4.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.

    Features
  • v4.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.

    Features
  • v4.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