Links

Changelog

1.59.0 - 2023-09-21

✨ New

  • PickDate: Similar to Form.DatePicker, you can also check whether the user picked a full day or a specific time with Action.PickDate.isFullDay(date).

💎 Improvements

  • Clipboard: The transient option is renamed to concealed.

🐞 Fixes

  • MenuBarExtra: Right-clicking MenuBarExtra.Items should now work in macOS Sonoma.

1.58.0 - 2023-09-06

✨ New

  • Alert: Add a new option rememberUserChoice to show a checkbox to remember the user choice the next time the same Alert would be shown.
  • DatePicker: You can know check whether the user picked a full day or a specific time with Form.DatePicker.isFullDay(date).

💎 Improvements

  • The “Fork Extension” action is now also available in the Store for installed extensions.
  • All the APIs that accepts a file path will now resolve ~ if necessary.

🐞 Fixes

  • Fix an issue where some Toasts would not disappear after the command was terminated.
  • Fix an issue where List Item’s accessories with an icon could have their text cut off.
  • Fix getFrontmostApplication failing for some applications.
  • The “Fork Extension” will now be more robust dealing with unexpected package.json formats.
  • Fixed an issue where newly created Extensions would not use the correct username after it had been updated.
  • Fix an issue where it was possible to set a multiline searchText

1.57.0 - 2023-08-09

🐞 Fixes

  • Metadata: Fixed various rendering issues with TagList.
  • Menu Bar Extra: Fixed a bug that caused section titles to be unreadable on macOS Sonoma.
  • Menu Bar Extra: Fixed a bug that could cause a menu bar command to be unloaded while its menu is open.
  • Form: Fixed stale suggestions in the DatePicker when changing its type.
  • Icon: Fixed the AppWindowGrid2x2 icon only showing a square.

1.56.0 - 2023-07-26

✨ New

  • Clipboard: Clipboard.read() now supports an offset option to access the Clipboard History (limited to the last 5)
  • Grid: Grid items can now have an icon accessory
  • Shortcuts: Providing a consistent user experience should now be easier thanks to the new Keyboard.Shortcut.Common export.

💎 Improvements

  • getSelectedText is now more reliable
  • Trash: Improved behaviour of trash and Action.Trash to better handle missing files.
  • HUD: showHUD now supports the same options as closeMainWindow
  • Command Launching: Improved logic for deciding which version of a command gets launched when a user has both a production and a development version of an extension installed.
  • Tags: Icon-only tags should now center the icon.

🐞 Fixes

  • Form: When working on a draft, updating a Form.Checkbox will update the draft.
  • Error Reports: Improved error messages when an extension crashes during a background launch.
  • Shortcuts: Previously, the API permitted the creation of shortcuts using keys reserved by Raycast (⌘+K, ⌘+W, ⌘+Esc, etc.), resulting in unexpected behavior. Raycast now ignores these and, during development mode, they will trigger a runtime warning.

1.55.0 - 2023-07-06

💎 Improvements

  • Fallback Commands: Local commands will now have an indicator so that it’s possible to differentiate them from the commands installed from the Store
  • The NodeJS process used for Raycast extensions will now be named Raycast Helper (Extensions)
  • Active menu bar commands will now be displayed in Extension Diagnostics.

🐞 Fixes

  • Fix an issue where Metadata’s Tag items would sometimes not be updated
  • Fix a bug where renamed commands appear in the root search with both the original and the updated name after an extension update.

1.54.0 - 2023-06-21

💎 Improvements

  • Add an action to clear the local storage when an unexpected error occurs
  • When using showToast while the Raycast window is closed (for example if a command is launched with a hotkey), a HUD will be shown instead
  • Improve the error messages when a command fails to load
  • The NodeJS inspector will now use a random free port instead of using the default 9229 port (which you can use for other NodeJS scripts)

🐞 Fixes

  • Fix a performance issue on the first render of Lists and Grids
  • Fix an issue where required arguments wouldn’t be required when launching a command right after installing it
  • Fix a regression where the deprecated render method would not work anymore
  • Fix an edge case where some Form items would not be updated if some items would be added at the same time

1.53.0 - 2023-06-07

✨ New

  • Metadata: List.Item.Detail.Metadata.TagList.Item and Detail.Metadata.TagList.Item now accepts an action handler via the onAction prop!
  • Added LaunchContext support to Create Quicklink and Create Snippet:
    • launchCommand({ ownerOrAuthorName: "raycast", extensionName: "raycast", name: "create-quicklink", type: LaunchType.UserInitiated, context: { name: "context name", application: "Xcode", }});
    • launchCommand({ ownerOrAuthorName: "raycast", extensionName: "snippets", name: "create-snippet", type: LaunchType.UserInitiated, context: { name: "context name", text: "context text", keyword: "context keyword" }})
  • Date Pickers: You can now add a minimum and maximum date to Form.DatePicker and Action.PickDate using the min and max props to limit the suggestions shown when entering a date.

💎 Improvements

  • Updated NodeJS to 18.16.0
  • Improve the “Fork Extension” action to avoid modifying the manifest as much as possible.

🐞 Fixes

  • Fixed a bug that sometimes caused no-view commands to not display errors.
  • Fixed a bug that caused OAuth not to work if the client.authorize(authorizationRequest) was executed more than once.
  • Fixed a problem where commands with background execution would not display the OAuth sign-in screen.
  • SVG: Properly handle currentColor
  • List/Grid: Fixed selectedItemId being sometimes ignored on the first render.
  • Form: Fixed triggering onChange on the TextArea when using a markdown keyboard shortcut.

1.52.0 - 2023-05-24

✨ New

  • SVG: You can now use the Raycast Color in an SVG.

💎 Improvements

  • Improve the error message when a required property is missing on a component

🐞 Fixes

  • Fixed an edge case where the keyboard events triggered while an extension is loading would not be passed down to the extension once loaded
  • Fixed an issue where the fallback of an image would show while it is being loaded

1.51.0 - 2023-05-10

✨ New

  • AI: Introduced a new AI Pro API. Use AI.ask to seamlessly ask any prompt and enhance your extensions with artificial intelligence.
  • Pro APIs: You can now check whether a user can access a certain API using environment.canAccess(AI).

💎 Improvements

  • Custom Theme: Deprecated Color.Brown as it is not part of the Raycast colors anymore.
  • Custom Theme: Renamed environment.theme to environment.appearance.
  • Improve the error message when an API is called with arguments of the wrong type.

🐞 Fixes

  • Forms: Fixed an issue where drafts would not save the value of a File Picker.
  • Forms: Fixed an issue where onChange would not be triggered in certain cases for a File Picker.
  • Lists: Fixed an issue that caused a List’s section to re-render whenever an action panel’s submenu was updated.
  • Colors: Fixed a crash that could sometimes occur when using adjustContrast on a dynamic color.

1.50.0 - 2023-04-27

✨ New

  • Raycast now provides 2 global TypeScript namespaces called **Preferences** and **Arguments** which respectively contain the types of the preferences and the types of the arguments of all the commands of the extensions. For example, if a command named show-todos has some preferences, its getPreferenceValues's return type can be specified with getPreferenceValues<Preferences.ShowTodos>(). This will make sure that the types used in the command stay in sync with the manifest.
  • It is now possible to add commands that are disabled by default. A user will have to enable it manually before it shows up in Raycast's root search. This can be useful to provide commands for specific workflows without overwhelming everybody's root search.
  • Markdown Tables are now properly supported.
  • Markdown code blocks now support syntax highlighting. To enable it, make sure you specify the programming language at the start of the block.

💎 Improvements

  • Colors: To improve accessibility, dynamic adjustment for raw colors (HEX, rgb etc) used in extensions has been switched from opt-in to opt-out. If your extension relies on accurate color reproduction, check the documentation for instructions on how to opt-out.
  • Images: You can now suffix your local assets with @dark to automatically provide a dark theme option, eg: icon.png and [email protected].

🐞 Fixes

  • CLI: Fix an issue where the CLI wouldn't want to bundle files named foo.node.js.

1.49.0 - 2023-03-29

✨ New

  • It is now possible to drag and drop items from Grids. Lists are also supported if their items have as quickLook properties.

💎 Improvements

  • Extend launchCommand to allow inter-extension launches
  • Extend launchCommand to allow to pass a fallbackText

🐞 Fixes

  • SVG: Ignore doctype and HTML comments
  • Fix a flicker happening when there was a fallback text passed to a command
  • Fix a rendering issue with multi-line tag text.

1.48.0 - 2023-02-22

✨ New

  • Clipboard: Added transient option to Clipboard.copy method.
  • Actions: Added type prop to Action.PickDate to control the date components to be picked.

💎 Improvements

  • Improve the time to interaction when launching a command that always renders the same view type.

🐞 Fixes

  • Changed Deactivate Command action shortcut to ⌘ ⌥ ⇧ D, so it doesn't clash with Copy Deeplink
  • Fixed an issue where restarting Raycast would not properly restore menu bar commands that sometimes didn't put anything in the menu bar.
  • Locale: Respect the hourCycle, calendar, and numbering system locale.

1.47.0 - 2023-02-01

✨ New

  • Clipboard: Add a new Clipboard.read() method that reads the clipboard content as plain text, file path, or HTML.

💎 Improvements

  • List Accessories: Tags can now use any color (we made some improvements to ensure that any color would have enough contrast to be readable)

🐞 Fixes

  • Fixed a bug where reloading menu bar commands in development mode would not respect certain manifest property updates (e.g. interval).
  • Fixed a bug that caused Metadata.Link's title to be cut off unnecessarily when using the large text size.
  • Fixed a bug where clearSearchBar wouldn't clear the search bar when rendering a Grid.
  • Fixed a bug where ray lint would fail if there were a .DS_Store file in the src folder.

1.46.0 - 2023-01-18

⚠️️ Global Fetch Deprecation: We've removed the experimental support for global fetch in Node 18. The reason is that the feature is not stable yet (hence the warning on it being "experimental" in the dev console) and is not compatible with our new proxy feature in Raycast. We've scanned the public repository for extensions that make use of global fetch and replaced it with the cross-fetch dependency via separate PRs. If we missed an extension, let us know - in most cases, it should be a straightforward replacement.

✨ New

  • Source maps for production errors: source maps are now also enabled for production builds of an extension. When an exception occurs, you get cleaner stack traces with proper source locations in the TypeScript sources files (vs. the minified and unusable JavaScript locations). Note: An extension must be re-published to enable production source maps.
  • Action.PickDate: We are introducing a new Action to allow users to set a Date directly from the action panel.

💎 Improvements

  • Dev Tools: the "Start Development" command under "Manage Extensions" now starts development in iTerm if installed as the default terminal.
  • In order to ensure that date formatting & other internationalization functions work as expected, the NodeJS process is now started with the LC_ALL environment variable set to the user's current locale.

🐞 Fixes

  • Fixed an issue where the first exec/spawn call for running a subprocess could be slower than subsequent calls.
  • Fixed menu bar icon padding when there's no text.
  • Fixed a problem where menu bar commands updated with a new required preference would not display the required preference screen.
  • Fixed a rare bug with menu bar commands that could lead to Raycast hanging.
  • Fixed an issue where menu bar commands launching view commands would cause stacking in the navigation hierarchy.
  • Fixed an issue where fallback images in lists would flicker.
  • Dev Tools: Fixed a bug when zip archiving extensions with special characters in file names.

1.45.0 - 2022-12-14

✨ New

  • Fallback commands: All commands (except menu-bar commands and commands with more than one required argument) can now be used as fallback commands! They should all work out of the box (e.g. a command that renders a List will receive onSearchTextChange with the fallback text on its first render, etc.) but you can customize the user experience with a new top-level prop fallbackText.
  • List Accessories: date and text accessories can now be colored.
  • List Accessories: We've added a new accessory type: tag.
  • Metadata: Label text can now also be colored.
  • Proxy Support: Extensions using popular networking libraries such as node-fetch/cross-fetch, got, Axios, or our useFetch hook are compatible with proxies if the user has turned on the new proxy preference in Raycast.

💎 Improvements

  • Background refresh: when a command misses a required preference, instead of showing the error screen, the user is directed to the preference onboarding screen again.

🐞 Fixes

  • Fixed a bug where entered characters could be "swallowed" in controlled form components or the controlled search bar.
  • Fixed the launchContext not being propagated to menu-bar and background launches when using the launchCommand API.
  • Fixed a multi-monitor bug where menu bar extra text would be unreadable on the inactive screen.
  • Fixed a bug where menu bar extra icon tinting would change based on Raycast's appearance instead of the system's.
  • Fixed some memory leaks when using Form components

1.44.0 - 2022-11-23

✨ New

  • Async Submenus and Dropdown: Dropdowns and ActionPanel Submenus now also support the properties onSearchTextChange, isLoading, throttle, filtering - same as for List and Grid where you can perform custom logic when the user changes the search text.
  • Application: You can now get the current frontmost Application of the system with the top-level getFrontmostApplication method.
  • File and Directory Preferences: We've added two new preference types "directory" and "file", supported via the manifest. Both types show a file picker component and let the user select directory or file paths.
  • Environment: You can now get the user's text size via environment.textSize.

💎 Improvements

  • Pop To Root Behavior: closeMainWindow accepts a new parameter popToRootType that lets you control when Raycast pops back to root: the default is as-is and respects the user's "Pop to Root Search" preference in Raycast. PopToRootType.Immediate closes the window and immediately pops back to root, regardless of the user's setting (so you can get rid of an additional popToRoot() call). The new mode PopToRootType.Suspended temporarily prevents Raycast from automatically popping back to root; this is useful for situations where a command needs to interact with an external system utility and then return the user back to the launching command.
  • Clipboard: We added new options to copy and paste HTML content, which is useful for sharing formatted text, e.g. a link to a Notion page in Slack.
  • Markdown: Markdown in a Detail component now supports convenience image references for icons and asset folder files such as: ![built-in icon](${Icon.AddPerson}) or ![local-assets-image](example.png) (absolute URLs and user folder paths via ~ are also supported)
  • OAuth: The client's providerIcon is now optional (extension icon as default) and accepts an Image.ImageLike type.
  • List and Detail Metadata: Now show tooltips when labels get truncated.
  • Action.ToggleQuickLook: Now also expands paths starting with ~.

🐞 Fixes

  • Dropdown: Fixed triggering a dropdown component's onChange handler when navigating.
  • Dropdown: Fixed the missing placeholder property in the search bar dropdown.
  • Forms: Fixed submitting a form with marked text.

1.43.0 - 2022-11-09

✨ New

  • Actions: You can now specify an action to focus when opening the ActionPanel (and an ActionPanel.Submenu) by setting the autoFocus prop.
  • Forms: Introducing a new Form Item Form.FilePicker to select one or multiple files (or directories)

💎 Improvements

  • DX: A warning will now be shown in the console when using async entry points for view and menu-bar commands.
  • List/Grid: Improved the keyword search algorithm to match intersecting keywords (for example, the search term "black cat" matches keywords ["black", "cat"]).
  • Grid: The grid supports a new property for configuring how sections are ordered. Setting filtering={{ keepSectionOrder: true }} ensures that the sections' order is not changed based on items' ranking values; this can be useful for use cases where a small number of fixed sections should always appear in the same order when the user filters the grid. We are deprecating the enableFiltering property.

🐞 Fixes

  • Fixed the Grid or List's selection sometimes not being preserved when native filtering is disabled.
  • The Image.Mask.RoundedRectangle mask will be more consistent regardless of the size of the image.
  • Fixed an issue where the specified searchText property would not always be respected.

1.42.0 - 2022-10-26

✨ New

  • The Node runtime has been updated to Node 18, the current Long-term Support (LTS) release.
  • Commands can now launch other commands! Using the new launchCommand method, you can now trigger a background refresh of another command in the same extension - or even open another command. Some use cases are updating a menu bar command from a view command or, vice versa, launching a companion view command from the menu bar. (Note that for now we only support launches of other commands within the same extension.)

💎 Improvements

  • Grid now supports two new aspect ratios: 4/3 and 3/4.
  • Menu Bar icon tinting is now theme-aware.
  • Background Refresh: The shortest interval available is now 10s instead of 1m (use cautiously and also see our best practices guide).
  • Grid: The grid supports a new property for configuring how sections are ordered. Setting filtering={{ keepSectionOrder: true }} ensures that the section order is not changed based on items' ranking values; this can be useful for use cases where a small number of fix sections should always appear in the same order when the user filters the list. We are deprecating the enableFiltering property.

🐞 Fixes

  • List Item Metadata Link and Detail Metadata Link styling should now be consistent with their respective List Item Metadata Label and Detail Metadata Label respectively.
  • Fixed a bug where List.Item's accessories might not be aligned.
  • Fixed a bug where the last API call or log in a no-view command would not run before the command gets unloaded.

1.41.0 - 2022-10-12

New

  • Grid: the Grid component accepts three new props that should give extension authors more flexibility: columns, fit and aspectRatio.
  • Grid Sections don't all have to look the same anymore! The grid Section component now also accepts the columns, fit and aspectRatio props. When specified, they will override the value of the parent Grid component's prop.
  • List: The list supports a new property for configuring how sections are ordered. Setting filtering={{ keepSectionOrder: true }} ensures that the section order is not changed based on items' ranking values; this can be useful for use cases where a small number of fix sections should always appear in the same order when the user filters the list. We are deprecating the enableFiltering property.
  • Menu Bar Extra: added a new Section component, which can be used to better group related Items and/or Submenus. The component has an optional title for the section. At the same time, we are deprecating the Separator component.
  • Menu Bar Extra: The Item component now accepts an optional subtitle prop.
  • Clipboard: Clipboard.copy() and Clipboard.paste() methods now accept file paths as a parameter.

💎 Improvements

  • Improved dark/light mode detection for Menu Bar Extra icons.
  • If a Menu Bar Extra's title spans multiple lines**,** only the first one will be displayed.

🐞 Fixes

  • Fixed certain error stack traces causing CPU spikes of the Node process.
  • Fixed an issue with macOS Ventura Beta where Menu Bar Extras would sometimes become unresponsive.
  • Fixed the type of the List and Grid's onSelectionChange. It always used to return null when no items were selected but the type was string | undefined. It is now properly string | null. Note that this might trigger some TypeScript error when you upgrade but it should help you fix some bugs.

1.40.0 - 2022-09-28

✨ New

  • Menu Bar Extras can now be deactivated without disabling the menu bar command! To deactivate a menu bar command, run the Deactivate Command action from the command's Action Panel - or drag the menu bar extra out of the menu bar while holding down ⌘.
  • Commands with Background Refresh also now have a Deactivate Command action!
  • Menu Bar Extras now support both a primary and secondary action type (right click or control click).
  • Dropdown's items can now specify keywords to match more search terms.
  • Extension Diagnostics command can now be used to help finding the cause behind any issues with extensions. It displays all Loaded Commands, commands with Background Refresh enabled and latest Events triggered.

💎 Improvements

  • Menu Bar Extra action handlers will now either wait or force a render after finishing execution, to ensure any state updates performed in the action handler have had a chance to render.
  • Menu Bar commands now automatically refresh when their or their parent extension's preferences change.
  • OAuth: Path-based redirect URLs are now officially supported.
  • OAuth: ⚠️️ API methods for OAuth request creation now throw an error when used from a background command - you can check the launch type of a command to see whether authorization can be performed
  • Types: Node and React types have been added back as optional API peer dependencies and dev dependencies to the templates, so that VS Code autocompletion works.
  • Templates: Updated to include the utils package.
  • DevX: Added warnings when specifying a value without onChange or when changing a Form item from controlled to uncontrolled.
  • DevX: For starting development, the CLI does not depend on metadata attributes any more

🐞 Fixes

  • Forms: The type of the DatePicker's value is now Date | null (null happens when selecting No Date). ⚠️ This might cause some TypeScript errors but it will now reflect what is really happening, preventing bugs at runtime.
  • Fixed an issue where List.Item.Detail.Metadata titles sometimes being cropped despite there being enough room.
  • Menu Bar Extra Item and Submenu icons now change based on the system's dark / light mode, not Raycast's.
  • Forms: Fixed a bug where the initial value for a controlled TextArea could not be deleted.
  • Forms: Fixed the info icon and message not coming back after clearing an error on form items.
  • Forms: Fixed updating the placeholder of the TagPicker item.
  • Empty View: Fix an issue where an Empty View's actions would be rendered even thought the Empty View isn't.
  • OAuth: Fixed a bug where multiple overlays could stack upon each other when OAuth was initiated from a menu bar or background launched command

1.39.2 - 2022-09-01

✨ New

  • Bundler: You can now import wasm files and they will bundle in the extension

💎 Improvements

  • SVG: Accept a percentage for rect corner radius attributes
  • Actions: Action.Trash is now a Destructive Action (meaning it will show up in red)

🐞 Fixes

  • Metadata: Fixes an issue where List Metadata would sometimes render Tags in the wrong position

1.39.0 - 2022-08-18

✨ New

  • List.Item.Detail.Metadata: We've added support for new Link and TagList item types.
  • Environment: You can now check the mode of the current command (as defined in the manifest) via environment.commandMode.

💎 Improvements

  • CLI: The ray CLI is now code-signed
  • CLI: We've updated esbuild to v0.14.52
  • NPM size: is now 0.5MB instead of 25MB (binary files for ray CLI have been moved out of the NPM package)

🐞 Fixes

  • Navigation: Top-level components can now dynamically return a different view type when used inside a navigation stack
  • Background Refresh: Fixed an edge case where commands would run into a timeout that prevented further refreshing
  • Menu Bar Commands: Fixed a bug where the error screen of menu bar commands would repeatedly be shown in the root search
  • Actions: Triggering actions by numeric shortcut / double-clicking could trigger wrong actions or didn't work entirely
  • Form: TextArea placeholder now won't highlight markdowns if it has enabledMarkdown

1.38.3 - 2022-08-03

💎 Improvements

  • Added debug actions to all local development commands in root search
  • Menu bar commands now show an activation button in preferences

🐞 Fixes

  • Menu Bar Commands: Fixed issues around hot reloading, unloading, and inconsistent action handler behavior
  • No-view Commands: Fixed returning top-level props for commands that doesn't have arguments or drafts

1.38.1 - 2022-07-21

✨ New

  • 🍫 Menu Bar Commands (Beta): For a long time, Commands could only live in the Raycast window. From today, Commands can put glanceable information in the Menu Bar 💪. Check out our new docs section on how to develop your first native macOS menu bar command with hot reloading 🔥.
  • 🔄 Background Refresh (Beta): To keep Menu Bar Commands up-to-date, we ported Background Refresh from Script Commands to Extensions. Background Refresh is configured with a new interval option in the Extension's manifest and also works for "no-view" mode commands. Read more about it in a new docs guide.
  • 🪝 Utils: We've released new React hooks to make it faster to build extensions that follow best practices. To do this, we looked at the Extension's repository for use cases and how we can improve them. Most Extensions connect to APIs: they make network requests, show a toast to handle errors, and add caching and optimistic updates to speed up interactions. Utils are available via a new public npm package.
  • 🤬 Arguments: We also ported more functionality from Script Commands. Extensions can now define arguments, which enable simple forms that live in the root search of Raycast. Arguments can be defined via the manifest, and their entered values are passed to the main function of a command.
  • ✍️ Subtitle Updates: We've added a new method updateCommandMetadata that allows you to update the subtitle of a command in root search. Combined with Background Refresh, this is another way to present information to the user as dashboard-like items in the root search.

1.38.0 - 2022-07-19

✨ New

  • Redesign: Along side the app's redesign, we are introducing a whole set of new icons for you to pick to illustrate the actions in your extensions.
  • New Destructive Action: You can now specify the style of an Action to highlight it in the Action Panel as destructive. Use it for actions where an end-user should be cautious with proceeding.

💎 Improvements

  • DevTools: Turning on the "Use Node production environment" in the Advanced Preferences will also hide the debug actions. Previously it was only hiding them when there was no Action Panel specified.
  • DevTools: The "Clear Local Storage" debug action has been renamed to "Clear Local Storage & Cache" and will clear the Cache along side the Local Storage.
  • Dev Tools: The "Start Development" action now quotes the extension folder path.
  • Dev Tools: Added a new development advanced preference to keep the Raycast window always visible during development.
  • Dev Tools: Added a new build status tooltip to the accessory icon of a development command in root search.
  • Dev Tools: Improved the error handling for failed extension updates after invalid manifest changes; improved the error messages for general rendering errors.

🐞 Fixes

  • require('os').tmpdir() will now properly return the path to a temp directory.
  • Fixed a rarely occurring crash happening when using some SVGs with a path that contains an arc where the ending point is the same as the starting point.
  • Forms: Fixed a bug where stored form values could get cleared after extension updates.
  • Forms: Fixed inconsistent behaviour of the onBlur handler that could get triggered for the Form.TextField when the form screen is popped in a navigation stack.
  • List: Fixed the updating of tooltips for list accessory items.

1.37.0 - 2022-06-29

✨ New

  • React 18: React Suspense, useSyncExternalStore, etc.. A whole bunch of new features are available with the newest version of React. See the migration guide for more information.
  • Quick Look: Use the new <Action.ToggleQuickLook /> action to show additional information with a Quick Look preview.
  • Forms: Use the new validation feature to check if entered data is correctly formatted and show failure messages with a nice UX
  • Forms: Drafts support - use the feature if you want Raycast to preserve non-submitted data, to provide the best experience for users
  • DevX: Check out the new screenshot tool that takes a photo of Raycast from the best possible angle

💎 Improvements

  • List Accessories: You can now pass {date: Date} as an accessory and it will be rendered nicely by Raycast.
  • Detail View: Add support for - [ ] task and - [x] task in markdown views.
  • Action Panel: Add a new onOpen callback on ActionPanel.Submenu. It can, for example, be used to lazily fetch the content of the Submenu.
  • Grid: Add support for ColorLike as Grid.Item's content.
  • Forms: New callbacks onFocus and onBlur for all the items
  • Forms: Markdown highlighting for the Form.TextArea

🐞 Fixes

  • Misc: Fixed a crash when using <List>{response?.website && <List.Item title={response.website} />}</List> and website is an empty string (
    Issue 1845
    ).
  • Dev Tools: Fixed uninstalling of local development extensions via the Action Panel
  • Markdown: Fixed rendering of transparent animated gifs in markdown
  • Forms: Fixed an issue when entering characters with IME (
    Issue 739
    ) in controlled text inputs
  • List Accessories: Fixed the tooltip for grouped accessories; now the tooltip will be shown for the group instead of separately for the items

1.36.0 - 2022-06-01

✨ New

The <Grid /> component's made its way to our API. It's perfect to layout media-heavy information, such as icons, images or colors. The component allows you to layout differently sized items. We designed its API close to the <List /> component for smooth adoption.

🐞 Fixes

  • Fixed the controlled mode for Form.DatePicker
  • Fixed the dynamic appearance of form item's info accessory
  • Fixed the OAuth logout preference not being shown for single-command extensions
  • Fixed a bug where components that are pushed with the same properties values would not be updated (
    Issue 1843
    )
  • Fixed a bug where updated list metadata items would cause unnecessary list reloading
  • Fixed an issue with tinted, resized icons appearing blurred in some cases (e.g. Alerts)

1.35.0 - 2022-05-18

✨ New

  • List Item Metadata: we've added a new metadata property to the List.Item.Detail component, allowing you to add structured metadata. The metadata property can be used together with markdown, in which case the detail view will be split horizontally, with the markdown being displayed in the top half and the metadata displayed in the bottom half (similar to the File Search, Clipboard History or Search Contacts commands). Alternatively, it can be used by itself, in which case the metadata will take up the entire height of the detail view.
  • Preferences: We've added two new top-level methods openExtensionPreferences and openCommandPreferences that allow you to open both extension and command preferences, for example, via an Action (
    Issue 179
    )

💎 Improvements

  • Added a new development action to clear the local storage of an extension

🐞 Fixes

  • Fixed a bug where the wrong form element onChange handler would be called initially while the form was being updated (
    Issue 1633
    )
  • Fixed a bug where form elements would not be re-rendered correctly (
    Issue 1663
    )
  • Fixed a bug where a fully controlled form TextField/PasswordField behaves as stateful (
    Issue 1093
    )
  • Fixed EmptyView not being displayed when it would be reused in a navigation stack

1.34.0 - 2022-05-04

💎 Improvements

  • OAuth: TokenSets are now included in the encrypted Raycast export (Raycast Preferences > Advanced > Export)
  • OAuth: The convenience method TokenSet.isExpired() now includes some buffer time to reduce the risk of performing requests with expired access tokens

🐞 Fixes

  • Fixed an issue where updating the search bar accessory would result in the search bar text being selected
  • Forms: We've fixed some inconsistencies around form item properties and added new warnings (e.g. when defaultValue and value are set at the same time); this also fixes
    Issue 1104
  • Forms: Fixed an issue where updating form items would lead to unwanted scrolling; fixed the autoFocus property not scrolling to the focused item
  • Fixed an issue with Action.OpenWith trying to perform a state update without checking whether it's still mounted (
    Issue 1495
    ).
  • Fixed an issue where adjustContrast would not be respected for colored TagPicker items.

1.33.0 - 2022-04-20

✨ New

  • OAuth: we've added a new API that enables you to authorize extensions through OAuth providers such as Google, Twitter, Dropbox or Spotify (
    Issue #178
    ). The docs contain a new detailed guide and we've added some integration examples to the extensions repository. (Note that we currently only support OAuth 2.0 with PKCE, more on that in the guide.)
  • Form Focus: use the new imperative form API to programmatically focus form items. Want to make sure a particular input is focused on mount? Form items now accept an autoFocus prop! (
    Issue #66
    )
  • Form Reset: use the new imperative form API to reset form items' values to their initial values.
  • Form Info: Use the new info prop on form items to show additional information about an item, e.g. to explain what this field is used for.
  • The Raycast window opens automatically when you start a development session for an extension. You can turn the behavior off in the Advanced preferences tab.

💎 Improvements

  • Improved detection of default editor when you open extensions from Raycast
  • Improved templates for list, form and detail
  • Removed react-devtools from devDependencies for newly created extensions (so that you don't have to download a big dependency that you might not use)

🐞 Fixes

  • Fixed an issue where animated gifs would be incorrectly scaled when size attributes are specified in markdown.
  • Form Checkbox now returns proper boolean values on submit

1.32.0 - 2022-04-06

✨ New

  • List Tooltips: List items now support tooltips for the title, subtitle, icon, and each accessory item. For titles, you can use the new type { value: string, tooltip: string }, for icons { value: Image.ImageLike, tooltip: string }, and for accessories you just add the new property tooltip.
  • Animated Gifs: the Detail component now renders animated gifs defined in markdown! 🎭

💎 Improvements

  • Improved recovering the Node process after a crash and logging the error to the CLI output
  • Added support for running CLI commands through npx @raycast/api <commandName>
  • Improved the Create Extension command to add README.md and CHANGELOG.md files

🐞 Fixes

  • Detail Metadata: Fixed toggling (showing/hiding)
  • Detail Metadata: Fixed only one separator item getting rendered
  • Detail Metadata: Fixed a crash when using primary or secondary colors for tag items
  • List Accessories: Fixed rendering when using undefined for accessory values
  • List EmptyView: Fixed an issue where passing a List.EmptyView child to a List.Section would treat it as a List.Item
  • SVG: Fixed rendering base64 encoded SVG images
  • Fixed loading when a new command is launched by hotkey while another command is open

1.31.0 - 2022-03-23

✨ New

  • Detail Metadata: we've added a new property metadata to the Detail component; this allows you to add structured metadata that is displayed on the right side in a detail view (similar to the Linear, Asana or Jira extensions). We support types such as labels, coloured tags, links, and separators. (
    Issue #219
    )
  • List Accessories: list components can now show multiple accessory items through the new accessories property. (Previously you could only configure one accessoryTitle and accesoryIcon, both of which continue to work but have been marked deprecated.) Each item can be configured as text-only, icon-only, or icon + text. (
    Issue #72
    )
  • List Empty View: list components can define a new EmptyView that gives you control over the icon, title, description and optional actions to use when there are no items in a list. (Previously we would default to a "No results" view.) You can use the component to show a custom image and text when the search does not return results or the user is required to first perform some setup. (
    Issue #447
    )

💎 Improvements

  • Environment: the current theme ("dark" | "light") configured via Raycast appearance preferences is now globally accessible through environment.theme
  • SVG: You can now specify width and height attributes for images in markdown (<img> tag).
  • Dev Tools: the "Create Extension" command lets you add categories to your extension; the categories are displayed alongside the new metadata on our revamped details page in the store.
  • Dev Tools: added a new development action to clear the local assets cache, e.g. to render an updated list icon without having to restart Raycast. (
    Issue #1095
    )
  • Preferences: the required property in manifest preferences is now optional.

🐞 Fixes

  • Fixed the extension icon not being updated during development.
  • Fixed an extension's cached icon not being cleared when updated from the store. (Note that other dynamically loaded images in the assets folder may still be cached, so if you want to enforce an update for end users you need to rename them.)
  • Fixed an edge case where some search bar characters would be wrongly passed to pushed lists in a navigation stack.

1.30.2 - 2022-03-11

🐞 Fixes

  • Fixed updating the list isShowingDetail property
  • Fixed unnecessarily reloading the list detail view on search term changes

1.30.0 - 2022-03-09

✨ New

  • We've added the highly requested search bar dropdown 🎉 (
    Issue #72
    ): you can now add a dropdown component as an accessory to the search bar; the dropdown shows up in the top-right corner and can be used for filtering lists and toggling list states. (So it's a good time to remove any workarounds with actions or navigation for showing a different set of items in the list.)
  • The search bar text 🔎 can now be programmatically updated (
    Issue #281
    ) while you can still opt into built-in filtering at the same time
  • List-detail views: list views now support a detail property that allows you to display a detail view on the right-hand side of list items (
    Issue #83
    ) 👯‍♂️; you can use the feature to display additional content side-by-side as users scroll through the list