Sign inDemoInstall


Package Overview
File Explorer

Advanced tools

Install Socket

Protect your apps from supply chain attacks



Native Access to MacOS FSEvents


Version published
Weekly downloads
increased by3.16%

Weekly downloads

Package description

What is fsevents?

The fsevents npm package is a Node.js module that provides native and efficient file system event watching on macOS. It is designed to be used by Node.js applications to receive notifications when the contents of a directory change, including file creations, modifications, and deletions. It leverages the macOS FSEvents API for optimal performance and accuracy.

What are fsevents's main functionalities?

Watching for file changes

This feature allows you to watch a directory for changes and execute a callback function whenever a change is detected. The callback receives the path of the changed file, flags that describe the change, and an event ID.

const fsevents = require('fsevents');
const watcher ='/path/to/dir', (path, flags, id) => {
  console.log('File changed:', path);

Stopping the watcher

This feature allows you to stop watching for file changes. It is useful when you no longer need to monitor a directory or when your application is shutting down.


Other packages similar to fsevents




Native access to MacOS FSEvents in Node.js

The FSEvents API in MacOS allows applications to register for notifications of changes to a given directory tree. It is a very fast and lightweight alternative to kqueue.

This is a low-level library. For a cross-platform file watching module that uses fsevents, check out Chokidar.


npm install fsevents

Supports only Node.js v8.16 and higher.

const fsevents = require('fsevents');

// To start observation
const stop =, (path, flags, id) => {
  const info = fsevents.getInfo(path, flags);

// To end observation

Important note: The API behaviour is slightly different from typical JS APIs. The stop function must be retrieved and stored somewhere, even if you don't plan to stop the watcher. If you forget it, the garbage collector will eventually kick in, the watcher will be unregistered, and your callbacks won't be called anymore.

The callback passed as the second parameter to .watch get's called whenever the operating system detects a a change in the file system. It takes three arguments: string, (path: string, flags: number, id: string) => void): () => Promise<undefined>
  • path: string - the item in the filesystem that have been changed
  • flags: number - a numeric value describing what the change was
  • id: string - an unique-id identifying this specific event

Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down.

fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo

The getInfo function takes the path, flags and id arguments and converts those parameters into a structure that is easier to digest to determine what the change was.

The FsEventsInfo has the following shape:

 * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent
 * @typedef {'file'|'directory'|'symlink'} FsEventsType
  "event": "created", // {FsEventsEvent}
  "path": "file.txt",
  "type": "file",    // {FsEventsType}
  "changes": {
    "inode": true,   // Had iNode Meta-Information changed
    "finder": false, // Had Finder Meta-Data changed
    "access": false, // Had access permissions changed
    "xattrs": false  // Had xAttributes changed
  "flags": 0x100000000


  • v2.3 supports Apple Silicon ARM CPUs
  • v2 supports node 8.16+ and reduces package size massively
  • v1.2.8 supports node 6+
  • v1.2.7 supports node 4+


  • I'm getting EBADPLATFORM Unsupported platform for fsevents error.
  • It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default.


The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file.

Visit our GitHub page and NPM Page



Last updated on 21 Aug 2023

Did you know?

Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc