Raycast

Raycast is a keyboard-first Application Launcher for MacOS (and now Windows). Works as a replacement to the native Spotlight search.

Extensions

Raycast is modular, and allows to install extensions through a store.

The Extension API

When working on the architecture for 9am.today, I did a bit of a deep dive into the extension API of Raycast.

  • Raycast extensions are built with Node.js, React and TypeScript.
  • The extension interface is exported as a React component and is rendered directly in the Raycast UI.
  • Raycast provides a set of UI components to ease building interfaces that are keyboard-first and consistent with the rest of the application.
  • Raycast app exposes a thin RPC protocol that handles communication between the extension and Raycast itself.
  • These APIs is exposed to the extension using a TypeScript SDK library.
  • Each extension runs on its own V8 worker thread for isolation.
  • Extensions are not sandboxed any more than this, and have access to Node.js I/O and networking etc.
  • All published extensions have to be open source and must be stored in the Raycast Extensions repo.
  • All extensions are reviewed before merging to the repo, and goes through a validation process.