What works
What Redcast supports from the Raycast API, how well it works in practice, and the known gaps.
How well it works
The inherited development fixture measured 37 installed extensions:
32 of 37 extensions and 114 of 147 view commands opened and rendered in that fixture. This is a historical sample, not a current guarantee for every Store version.
Supported
Components. List and Grid with sections, empty views, item details and search bar dropdowns.
Detail with Metadata. Form with every field type: text, password, text area, checkbox,
dropdown, tag picker, date picker, file picker, separator and description. ActionPanel with
sections and submenus, and Action with all its built-in variants. Older names still used by
published extensions also work.
APIs. Clipboard, LocalStorage, Cache, environment, getPreferenceValues, showToast,
showHUD, confirmAlert, closeMainWindow, popToRoot, clearSearchBar, open, trash,
showInFinder, getApplications, getDefaultApplication, getFrontmostApplication,
getSelectedText, getSelectedFinderItems, launchCommand, updateCommandMetadata,
openExtensionPreferences, OAuth, useNavigation, Icon, Color, Image.Mask,
Keyboard.Shortcut.Common, LaunchType.
Sign-in with OAuth. Extensions like GitHub sign you in through your browser, and the palette comes back when you finish. Sign in from one of the extension's commands first: a background refresh or menu bar item can't start a sign-in on its own.
Node built-ins. path, fs and fs/promises, os, child_process, crypto, zlib,
http and https, stream, util, events, buffer, url, querystring, punycode,
assert, string_decoder and timers. Other built-ins load without errors and only fail when
they're actually used.
http and https requests use the same code as fetch, so libraries like axios and node-fetch
work. Streams are fully implemented, so pipelines like fetch → file work from start to finish.
Bundled Swift helpers, like Color Picker's, run normally.
Command modes. view commands appear in the palette. no-view commands run in the background
with the palette closed. A no-view command with an interval can refresh on a schedule; see
Background refresh. menu-bar commands show
native menu items and refresh on their manifest interval, without keeping JavaScript in memory
between runs; see Menu bar commands.
raycast:// links are handled inside Redcast. Redcast registers this link type; if Raycast is
also installed, macOS decides which app receives those links. A link to an installed extension command
runs that command, whether it comes from another app, the browser or an extension, with its arguments,
fallbackText and launchType applied. tinycast:// links work the same way. Any other link
reopens the palette, since passing it on would open Raycast itself.
Supported in the current runtime
The runtime also supports WebSocket, streamed child-process stdout/stderr, and the extension AI bridge. These additions do not make it a complete Node.js process.
Known limitations
| Gap | Behavior |
|---|---|
| BrowserExtension and WindowManagement services | Imports can resolve, but unsupported calls report a reason |
| Extension-provided model catalogs and tools/ entry points | Not surfaced |
| Automatic AI from a timer or menu render | Cannot spend tokens; AI is tied to an allowed user-started command or clicked menu item |
| WebSockets with untrusted TLS certificates | macOS still validates certificates; rejectUnauthorized: false does not bypass it |
| Aborting an in-flight fetch | The caller receives AbortError, but the underlying network task can finish |
| Interactive spawn stdin | Initial input is sent when starting; later writes are not an interactive terminal |
| Streaming HTTP and server-sent events | The network body arrives as a whole, so there is no true socket-level stream or download progress |
| Raw net and tls sockets | Not bridged as general raw sockets |
If a command depends on a missing API, report the extension and command name with the displayed error. A successful install or rendered first screen does not establish that every action works.