Skip to content

Instantly share code, notes, and snippets.

@tkafka
Last active October 26, 2025 17:16
Show Gist options
  • Save tkafka/e3eb63a5ec448e9be6701bfd1f1b1e58 to your computer and use it in GitHub Desktop.
Save tkafka/e3eb63a5ec448e9be6701bfd1f1b1e58 to your computer and use it in GitHub Desktop.

Revisions

  1. tkafka revised this gist Oct 22, 2025. 2 changed files with 2 additions and 2 deletions.
    2 changes: 1 addition & 1 deletion detect-electron-apps-by-version.sh
    100644 → 100755
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read -r app; do
    find /Applications /System/Applications ~/Applications -name "*.app" -type d 2>/dev/null | sort --ignore-case | while read -r app; do
    appName=$(basename "$app")
    electronFrameworkInfo="$app/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist"
    if [[ -f "$electronFrameworkInfo" ]]; then
    2 changes: 1 addition & 1 deletion detect-electron-apps-using-cornermask.sh
    100644 → 100755
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read -r app; do
    find /Applications /System/Applications ~/Applications -name "*.app" -type d 2>/dev/null | sort --ignore-case | while read -r app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
  2. tkafka revised this gist Oct 21, 2025. 2 changed files with 7 additions and 7 deletions.
    4 changes: 2 additions & 2 deletions detect-electron-apps-by-version.sh
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read -r app; do
    appName=$(basename "$app")
    electronFrameworkInfo="$app/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist"
    if [[ -f "$electronFrameworkInfo" ]]; then
    @@ -23,4 +23,4 @@ mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    fi
    fi
    fi
    done
    done
    10 changes: 5 additions & 5 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,18 +1,18 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read -r app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
    appName=$(basename "$app")

    while IFS= read -r filename; do
    if [[ -f "$filename" ]]; then
    ev=$(grep -aoE 'Chrome/.*Electron/[0-9]+(\.[0-9]+){1,3}' "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')
    [ -z "$ev" ] && ev=$(grep -aoE 'Electron/[0-9]+(\.[0-9]+){1,3}' "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')
    ev=$(grep -aoE 'Chrome/.*Electron/[0-9]+(\.[0-9]+){1,3}' -- "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')
    [ -z "$ev" ] && ev=$(grep -aoE 'Electron/[0-9]+(\.[0-9]+){1,3}' -- "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')

    relativePath=$(echo "$filename" | sed "s|$app/||")
    relativePath="${filename#"$app/"}"

    if grep -aqF "_cornerMask" "$filename" 2>/dev/null; then
    if grep -aqF "_cornerMask" -- "$filename" 2>/dev/null; then
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
    else
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
  3. tkafka revised this gist Oct 21, 2025. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,8 @@ https://github.com/tkafka/detect-electron-apps-on-mac

    See:
    - https://github.com/electron/electron/issues/48311#issuecomment-3332181420
    - https://mjtsai.com/blog/2025/09/30/electron-apps-causing-system-wide-lag-on-tahoe/
    - [Michael Tsai: Electron Apps Causing System-Wide Lag on Tahoe](https://mjtsai.com/blog/2025/09/30/electron-apps-causing-system-wide-lag-on-tahoe/)
    - [Avarayr's tracker of affected and fixed Electron apps](https://avarayr.github.io/shamelectron/)

    Fixed versions:
    - 36.9.2
  4. tkafka revised this gist Oct 21, 2025. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -50,7 +50,8 @@ EDIT 2025-10-03: Congrats to Signal being first!


    ## What I also make
    🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576) is my weather app that shows hourly forecasts as charts instead of lists. See a week's worth of temperature, precipitation, wind, UV, and pressure in one visual.
    🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576) is my weather app that shows hourly forecasts as charts instead of lists.
    See a week's worth of temperature, precipitation, wind, UV, and pressure in a single visual.

    Built in Swift/SwiftUI for iPhone, Apple Watch, and Mac. Highly customizable if you're into that.

  5. tkafka revised this gist Oct 21, 2025. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -54,6 +54,8 @@ EDIT 2025-10-03: Congrats to Signal being first!

    Built in Swift/SwiftUI for iPhone, Apple Watch, and Mac. Highly customizable if you're into that.

    > "I first downloaded the app because I caught sight of the large complication on an Apple Store employee's Apple Watch and asked about it. This is the perfect weather app. All information beautifully presented and easily accessible." - lucenvoyage
    Thanks! Tomas

    [![Weathergraph](https://weathergraph.app/homepage/weathergraph-web-header-transparent-full-wide@1_5x.png)](https://weathergraph.app)
  6. tkafka revised this gist Oct 21, 2025. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -48,8 +48,11 @@ EDIT 2025-10-03: Congrats to Signal being first!
    ✅ Signal.app (Electron 38.2.0) - Contents/Frameworks/Electron Framework.framework/Electron Framework
    ```


    ## What I also make
    If you'd appreciate a visual hour by hour forecast for iOS/Apple Watch/mac with detailed visualizations and nice widgets, I'd love to introduce you to 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).
    🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576) is my weather app that shows hourly forecasts as charts instead of lists. See a week's worth of temperature, precipitation, wind, UV, and pressure in one visual.

    Built in Swift/SwiftUI for iPhone, Apple Watch, and Mac. Highly customizable if you're into that.

    Thanks! Tomas

  7. tkafka revised this gist Oct 21, 2025. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -49,8 +49,8 @@ EDIT 2025-10-03: Congrats to Signal being first!
    ```

    ## What I also make
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I'd love to introduce you to 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).
    If you'd appreciate a visual hour by hour forecast for iOS/Apple Watch/mac with detailed visualizations and nice widgets, I'd love to introduce you to 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).

    [![Weathergraph](https://weathergraph.app/homepage/weathergraph-web-header-transparent-full-wide@1_5x.png)](https://weathergraph.app)
    Thanks! Tomas

    Thanks! Tomas
    [![Weathergraph](https://weathergraph.app/homepage/weathergraph-web-header-transparent-full-wide@1_5x.png)](https://weathergraph.app)
  8. tkafka revised this gist Oct 21, 2025. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Detect electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -48,8 +48,8 @@ EDIT 2025-10-03: Congrats to Signal being first!
    ✅ Signal.app (Electron 38.2.0) - Contents/Frameworks/Electron Framework.framework/Electron Framework
    ```

    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).
    ## What I also make
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I'd love to introduce you to 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).

    [![Weathergraph](https://weathergraph.app/homepage/weathergraph-web-header-transparent-full-wide@1_5x.png)](https://weathergraph.app)

  9. tkafka renamed this gist Oct 21, 2025. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions README.md → ... electron apps causing macOS Tahoe lag.md
    Original file line number Diff line number Diff line change
    @@ -51,4 +51,6 @@ EDIT 2025-10-03: Congrats to Signal being first!
    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).

    [![Weathergraph](https://weathergraph.app/homepage/weathergraph-web-header-transparent-full-wide@1_5x.png)](https://weathergraph.app)

    Thanks! Tomas
  10. tkafka revised this gist Oct 21, 2025. 1 changed file with 4 additions and 9 deletions.
    13 changes: 4 additions & 9 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,4 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    if [[ ! -f $(which rg) ]]; then
    echo "❌ this script requires ripgrep, you can install it with: brew install ripgrep"
    exit 1
    fi

    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    @@ -12,12 +7,12 @@ mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do

    while IFS= read -r filename; do
    if [[ -f "$filename" ]]; then
    ev=$(rg -a -m1 -o -r '$1' 'Chrome/.*Electron/([0-9]+(\.[0-9]+){1,3})' -- "$filename" 2>/dev/null)
    [ -z "$ev" ] && ev=$(rg -a -m1 -o -r '$1' 'Electron/([0-9]+(\.[0-9]+){1,3})' -- "$filename" 2>/dev/null)
    ev=$(grep -aoE 'Chrome/.*Electron/[0-9]+(\.[0-9]+){1,3}' "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')
    [ -z "$ev" ] && ev=$(grep -aoE 'Electron/[0-9]+(\.[0-9]+){1,3}' "$filename" 2>/dev/null | head -n1 | sed -E 's/.*Electron\/([0-9]+(\.[0-9]+){1,3}).*/\1/')

    relativePath=$(echo "$filename" | sed "s|$app/||")

    if rg -a -q -F "_cornerMask" -- "$filename" 2>/dev/null; then
    if grep -aqF "_cornerMask" "$filename" 2>/dev/null; then
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
    else
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
    @@ -26,4 +21,4 @@ mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    fi
    done <<< "$electronFiles"
    fi
    done
    done
  11. tkafka revised this gist Oct 21, 2025. 2 changed files with 2 additions and 2 deletions.
    2 changes: 1 addition & 1 deletion detect-electron-apps-by-version.sh
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" | while read app; do
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    appName=$(basename "$app")
    electronFrameworkInfo="$app/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist"
    if [[ -f "$electronFrameworkInfo" ]]; then
    2 changes: 1 addition & 1 deletion detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ if [[ ! -f $(which rg) ]]; then
    exit 1
    fi

    mdfind "kMDItemFSName == '*.app'" | while read app; do
    mdfind "kMDItemFSName == '*.app'" | sort --ignore-case | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
  12. tkafka revised this gist Oct 21, 2025. 1 changed file with 21 additions and 27 deletions.
    48 changes: 21 additions & 27 deletions detect-electron-apps-by-version.sh
    Original file line number Diff line number Diff line change
    @@ -1,32 +1,26 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
    appName=$(basename "$app")

    while IFS= read -r filename; do
    electronVersion=$(strings "$filename" | grep "Chrome/" | grep -i Electron | grep -v '%s' | sort -u | cut -f 3 -d '/')

    if [[ -n "$electronVersion" ]]; then
    IFS='.' read -r major minor patch <<< "$electronVersion"

    relativePath=$(echo "$filename" | sed "s|$app/||")

    if [[ $major -gt 39 ]] || \
    [[ $major -eq 39 && $minor -ge 0 ]] || \
    [[ $major -eq 38 && $minor -gt 2 ]] || \
    [[ $major -eq 38 && $minor -eq 2 && $patch -ge 0 ]] || \
    [[ $major -eq 37 && $minor -gt 6 ]] || \
    [[ $major -eq 37 && $minor -eq 6 && $patch -ge 0 ]] || \
    [[ $major -eq 36 && $minor -gt 9 ]] || \
    [[ $major -eq 36 && $minor -eq 9 && $patch -ge 2 ]]; then
    echo "$appName: Electron $electronVersion ($relativePath)"
    else
    echo "$appName: Electron $electronVersion ($relativePath)"
    fi
    break
    appName=$(basename "$app")
    electronFrameworkInfo="$app/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist"
    if [[ -f "$electronFrameworkInfo" ]]; then
    electronVersion=$(plutil -extract CFBundleVersion raw "$electronFrameworkInfo")
    if [[ $? -eq 1 || -z "$electronVersion" ]]; then
    echo "⚠️ $appName (No Electron version)"
    else
    IFS='.' read -r major minor patch <<< "$electronVersion"

    if [[ $major -gt 39 ]] || \
    [[ $major -eq 39 && $minor -ge 0 ]] || \
    [[ $major -eq 38 && $minor -gt 2 ]] || \
    [[ $major -eq 38 && $minor -eq 2 && $patch -ge 0 ]] || \
    [[ $major -eq 37 && $minor -gt 6 ]] || \
    [[ $major -eq 37 && $minor -eq 6 && $patch -ge 0 ]] || \
    [[ $major -eq 36 && $minor -gt 9 ]] || \
    [[ $major -eq 36 && $minor -eq 9 && $patch -ge 2 ]]; then
    echo "$appName ($electronVersion)"
    else
    echo "❌️ $appName ($electronVersion)"
    fi
    done <<< "$electronFiles"
    fi
    fi
    done
  13. tkafka revised this gist Oct 3, 2025. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,10 @@
    # Electron Apps Causing System-Wide Lag on Tahoe

    This script detects apps with not yet updated versions of Electron.

    Repo:
    https://github.com/tkafka/detect-electron-apps-on-mac

    See:
    - https://github.com/electron/electron/issues/48311#issuecomment-3332181420
    - https://mjtsai.com/blog/2025/09/30/electron-apps-causing-system-wide-lag-on-tahoe/
    @@ -11,8 +16,6 @@ Fixed versions:
    - 39.0.0
    - and all above 39

    This script detects apps with not yet updated versions of Electron.

    ## Temporary workaround:

    Run
  14. tkafka renamed this gist Oct 3, 2025. 1 changed file with 0 additions and 0 deletions.
  15. tkafka revised this gist Oct 3, 2025. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -18,9 +18,9 @@ mdfind "kMDItemFSName == '*.app'" | while read app; do
    relativePath=$(echo "$filename" | sed "s|$app/||")

    if rg -a -q -F "_cornerMask" -- "$filename" 2>/dev/null; then
    echo "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
    else
    echo "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    echo "$appName (Electron ${ev:-unknown}) - $relativePath"
    fi
    break
    fi
  16. tkafka revised this gist Oct 3, 2025. 1 changed file with 7 additions and 3 deletions.
    10 changes: 7 additions & 3 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,9 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    # Needs ripgrep - brew install ripgrep
    if [[ ! -f $(which rg) ]]; then
    echo "❌ this script requires ripgrep, you can install it with: brew install ripgrep"
    exit 1
    fi

    mdfind "kMDItemFSName == '*.app'" | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    @@ -14,9 +18,9 @@ mdfind "kMDItemFSName == '*.app'" | while read app; do
    relativePath=$(echo "$filename" | sed "s|$app/||")

    if rg -a -q -F "_cornerMask" -- "$filename" 2>/dev/null; then
    echo -e "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    echo "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    else
    echo -e "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    echo "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    fi
    break
    fi
  17. tkafka revised this gist Oct 3, 2025. 2 changed files with 2 additions and 2 deletions.
    2 changes: 1 addition & 1 deletion detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    # Needs ripgrep - brew install ripgrep
    mdfind "kMDItemFSName == '*.app'" 2>/dev/null | while read app; do
    mdfind "kMDItemFSName == '*.app'" | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
    2 changes: 1 addition & 1 deletion detect-electron-apps-with-macos-lag.sh
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" 2>/dev/null | while read app; do
    mdfind "kMDItemFSName == '*.app'" | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
  18. tkafka revised this gist Oct 3, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    # Needs ripgrep - brew install ripgrep
    mdfind "kind:app" 2>/dev/null | while read app; do
    mdfind "kMDItemFSName == '*.app'" 2>/dev/null | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
  19. tkafka revised this gist Oct 3, 2025. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -40,6 +40,11 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ❌ Slack.app: Electron 38.1.2 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ```

    EDIT 2025-10-03: Congrats to Signal being first!
    ```
    ✅ Signal.app (Electron 38.2.0) - Contents/Frameworks/Electron Framework.framework/Electron Framework
    ```

    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).

  20. tkafka revised this gist Oct 1, 2025. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,5 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    # Needs ripgrep - brew install ripgrep
    mdfind "kind:app" 2>/dev/null | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

  21. tkafka revised this gist Oct 1, 2025. 2 changed files with 25 additions and 0 deletions.
    24 changes: 24 additions & 0 deletions detect-electron-apps-using-cornermask.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    # Directly detect Electron apps using the _cornerMask override - thanks avarayr!
    mdfind "kind:app" 2>/dev/null | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
    appName=$(basename "$app")

    while IFS= read -r filename; do
    if [[ -f "$filename" ]]; then
    ev=$(rg -a -m1 -o -r '$1' 'Chrome/.*Electron/([0-9]+(\.[0-9]+){1,3})' -- "$filename" 2>/dev/null)
    [ -z "$ev" ] && ev=$(rg -a -m1 -o -r '$1' 'Electron/([0-9]+(\.[0-9]+){1,3})' -- "$filename" 2>/dev/null)

    relativePath=$(echo "$filename" | sed "s|$app/||")

    if rg -a -q -F "_cornerMask" -- "$filename" 2>/dev/null; then
    echo -e "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    else
    echo -e "$appName \033[2m(Electron ${ev:-unknown}) - $relativePath\033[0m"
    fi
    break
    fi
    done <<< "$electronFiles"
    fi
    done
    1 change: 1 addition & 0 deletions detect-electron-apps-with-macos-lag.sh
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    # Detect affected Electron versions
    mdfind "kMDItemFSName == '*.app'" 2>/dev/null | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

  22. tkafka revised this gist Oct 1, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,7 @@ launchctl setenv CHROME_HEADLESS 1
    on every system start. The CHROME_HEADLESS flag has a side effect of disabling Electron app window shadows, which makes them ugly, but also stops triggering the issue.

    ## Example output
    (as of 1st oct 2025)
    (as of 1st oct 2025 - it lists all electron apps, but none shows the ✅ checkmark so far)

    ```
    ❌ OpenMTP.app: Electron 18.3.15 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
  23. tkafka revised this gist Oct 1, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -41,6 +41,6 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ```

    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576).
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/app/apple-store/id1501958576).

    Thanks! Tomas
  24. tkafka revised this gist Oct 1, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion detect-electron-apps-with-macos-lag.sh
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    mdfind "kind:app" 2>/dev/null | while read app; do
    mdfind "kMDItemFSName == '*.app'" 2>/dev/null | while read app; do
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
  25. tkafka revised this gist Oct 1, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -41,6 +41,6 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ```

    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576)!
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out 🌦️ [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576).

    Thanks! Tomas
  26. tkafka revised this gist Oct 1, 2025. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -41,7 +41,6 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ```

    ## A bit of promo
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one.
    Thanks if you check out [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576)!
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one - check out [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576)!

    Tomas
    Thanks! Tomas
  27. tkafka revised this gist Oct 1, 2025. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -41,6 +41,7 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ```

    ## A bit of promo
    If you'd like a beautiful hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576).
    Thanks if you check it out!
    If you'd appreciate a visual (Tufte-like) hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made one.
    Thanks if you check out [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576)!

    Tomas
  28. tkafka revised this gist Oct 1, 2025. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -38,4 +38,9 @@ on every system start. The CHROME_HEADLESS flag has a side effect of disabling E
    ❌ Figma Beta.app: Electron 37.5.1 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Beeper Desktop.app: Electron 33.2.0 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Slack.app: Electron 38.1.2 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ```
    ```

    ## A bit of promo
    If you'd like a beautiful hour by hour forecast for iOS/Apple Watch/mac with nice widgets, I made [Weathergraph](https://apps.apple.com/cz/app/weathergraph-weather-widget/id1501958576).
    Thanks if you check it out!
    Tomas
  29. tkafka revised this gist Oct 1, 2025. 1 changed file with 18 additions and 1 deletion.
    19 changes: 18 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -21,4 +21,21 @@ Run
    launchctl setenv CHROME_HEADLESS 1
    ```

    on every system start. The CHROME_HEADLESS flag has a side effect of disabling Electron app window shadows, which makes them ugly, but also stops triggering the issue.
    on every system start. The CHROME_HEADLESS flag has a side effect of disabling Electron app window shadows, which makes them ugly, but also stops triggering the issue.

    ## Example output
    (as of 1st oct 2025)

    ```
    ❌ OpenMTP.app: Electron 18.3.15 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ DaVinci Resolve.app: Electron 36.3.2 (Contents/Applications/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Electron.app: Electron 36.3.2 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Visual Studio Code.app: Electron 37.3.1 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Cursor.app: Electron 34.5.8 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Windsurf.app: Electron 34.4.0 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Claude.app: Electron 36.4.0 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Signal.app: Electron 38.1.2 (Contents/Frameworks/Electron Framework.framework/Electron Framework)
    ❌ Figma Beta.app: Electron 37.5.1 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Beeper Desktop.app: Electron 33.2.0 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ❌ Slack.app: Electron 38.1.2 (Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework)
    ```
  30. tkafka revised this gist Oct 1, 2025. 1 changed file with 24 additions and 17 deletions.
    41 changes: 24 additions & 17 deletions detect-electron-apps-with-macos-lag.sh
    Original file line number Diff line number Diff line change
    @@ -1,24 +1,31 @@
    mdfind "kind:app" 2>/dev/null | while read app; do
    filename="$app/Contents/Frameworks/Electron Framework.framework/Electron Framework"
    if [[ -f "$filename" ]]; then
    electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)

    if [[ -n "$electronFiles" ]]; then
    appName=$(basename "$app")
    electronVersion=$(strings "$filename" | grep "Chrome/" | grep -i Electron | grep -v '%s' | sort -u | cut -f 3 -d '/')

    if [[ -n "$electronVersion" ]]; then
    IFS='.' read -r major minor patch <<< "$electronVersion"
    while IFS= read -r filename; do
    electronVersion=$(strings "$filename" | grep "Chrome/" | grep -i Electron | grep -v '%s' | sort -u | cut -f 3 -d '/')

    if [[ $major -gt 39 ]] || \
    [[ $major -eq 39 && $minor -ge 0 ]] || \
    [[ $major -eq 38 && $minor -gt 2 ]] || \
    [[ $major -eq 38 && $minor -eq 2 && $patch -ge 0 ]] || \
    [[ $major -eq 37 && $minor -gt 6 ]] || \
    [[ $major -eq 37 && $minor -eq 6 && $patch -ge 0 ]] || \
    [[ $major -eq 36 && $minor -gt 9 ]] || \
    [[ $major -eq 36 && $minor -eq 9 && $patch -ge 2 ]]; then
    echo "$appName: Electron $electronVersion"
    else
    echo "$appName: Electron $electronVersion"
    if [[ -n "$electronVersion" ]]; then
    IFS='.' read -r major minor patch <<< "$electronVersion"

    relativePath=$(echo "$filename" | sed "s|$app/||")

    if [[ $major -gt 39 ]] || \
    [[ $major -eq 39 && $minor -ge 0 ]] || \
    [[ $major -eq 38 && $minor -gt 2 ]] || \
    [[ $major -eq 38 && $minor -eq 2 && $patch -ge 0 ]] || \
    [[ $major -eq 37 && $minor -gt 6 ]] || \
    [[ $major -eq 37 && $minor -eq 6 && $patch -ge 0 ]] || \
    [[ $major -eq 36 && $minor -gt 9 ]] || \
    [[ $major -eq 36 && $minor -eq 9 && $patch -ge 2 ]]; then
    echo "$appName: Electron $electronVersion ($relativePath)"
    else
    echo "$appName: Electron $electronVersion ($relativePath)"
    fi
    break
    fi
    fi
    done <<< "$electronFiles"
    fi
    done