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.