Auto-close Slack redirect pages

Closes a Slack app redirect page after a few seconds

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Auto-close Slack redirect pages
// @namespace    http://tampermonkey.net/
// @version      2025-11-24
// @description  Closes a Slack app redirect page after a few seconds
// @author       joeytwiddle
// @license      ISC
// @match        https://slack.com/archives/*
// @match        https://*.slack.com/archives/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=slack.com
// @grant        window.close
// ==/UserScript==

(function() {
    'use strict';

    setTimeout(() => {
        const loadingMessages = document.querySelector('p[data-qa="loading_messages"]');

        const appHasBeenOpened = loadingMessages && loadingMessages.textContent.includes("We’ve redirected you");

        if (appHasBeenOpened) {
            // Close the window later
            setTimeout(() => {
                window.close();
            }, 20 * 1000);

            // Advertise that this script is running
            loadingMessages.appendChild(document.createElement('br'));
            const textNode = document.createTextNode('(This page will auto-close soon.)');
            loadingMessages.appendChild(textNode);
            //textNode.style.opacity = '0.6';
        }
    }, 4 * 1000);
})();