raycast / raycast/extensions

[Bug] Raycast process crash when quickLook and detail props used together on List.Item with isShowingDetail={true}

Open
#28,210 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
7.8k
Forks
6.9k
Avg merge
2d 6h
Merged PRs (30d)
442

Description

Description

Using the quickLook prop alongside detail on the same List.Item when isShowingDetail={true} causes intermittent full Raycast process crashes (not extension errors) when pressing Cmd+Y to toggle Quick Look.

Minimal Reproduction

import { List, Action, ActionPanel } from "@raycast/api";
import { useEffect } from "react";
import { writeFileSync } from "fs";

const ITEMS = ["alpha", "bravo", "charlie", "delta", "echo"];
const QL_PATH = "/tmp/ql-test.txt";

export default function Command() {
  useEffect(() => {
    writeFileSync(QL_PATH, "Quick Look test content.\nLine two.\n");
  }, []);

  return (
    <List isShowingDetail={true}>
      {ITEMS.map((name) => (
        <List.Item
          key={name}
          title={name}
          quickLook={{ path: QL_PATH, name: "test.txt" }}
          detail={<List.Item.Detail markdown="**Detail panel content**" />}
          actions={
            <ActionPanel>
              <Action.ToggleQuickLook />
            </ActionPanel>
          }
        />
      ))}
    </List>
  );
}

Steps to Reproduce

  1. Create an extension with the code above
  2. Open Raycast, run the command
  3. Select any item, press Cmd+Y
  4. Raycast crashes — in our testing, crashed on the 2nd attempt

The crash is intermittent and timing-dependent, not data-dependent. The same file at the same path may crash on the first try and succeed on the second.

What We Tested and Ruled Out

Change Result
Remove quickLook prop entirely Zero crashes
Remove detail prop, keep quickLook No crashes
Same file path every time Still crashes — not data-dependent
Dynamic isShowingDetail (falsetrue transition) Made crashes more frequent
Static isShowingDetail={true} Reduced frequency but did not eliminate
Minimal 30-line static extension (no async, no subprocess, no dynamic data) Still crashes — eliminates all app-specific code as a factor

Notes

The Raycast docs never show quickLook and detail used together on the same List.Item. This appears to be an unhandled conflict in the native layer when both the detail panel and Quick Look window compete for presentation.

Prior Quick Look native-layer fixes suggest this area has had similar issues before:

  • v1.30.0 — "Fixed crash when switching Quick Look to full-screen"
  • v1.30.2 — "Updating list isShowingDetail property has been fixed"
  • v1.67.0 — "Action.ToggleQuickLook now expands paths starting with ~"

Expected Behavior

Pressing Cmd+Y on a List.Item that has both quickLook and detail props should either open Quick Look without crashing, or the API should document/enforce mutual exclusivity between the two props.

Environment

  • macOS Sequoia 15.5
  • Raycast latest stable
  • @raycast/api ^1.93.2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the minimal TypeScript reproduction in the issue using @raycast/api, then investigate the native presentation path triggered by Cmd+Y when List.Item has both quickLook and detail while isShowingDetail is true. Reproduce the intermittent crash and determine whether Quick Look should open safely or the two props should be made mutually exclusive; verify the chosen behavior against the listed test variations.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.