diff --git a/src/pages/invite/Invite.tsx b/src/pages/invite/Invite.tsx
index 9cfe4f7382c8bf7cfbab7f81b3e00af253683c22..b326ed312582df26220e2bf17e3c530764986f41 100644
--- a/src/pages/invite/Invite.tsx
+++ b/src/pages/invite/Invite.tsx
@@ -5,6 +5,8 @@ import { Invites } from "revolt.js/dist/api/objects";
 import styles from "./Invite.module.scss";
 import { useContext, useEffect, useState } from "preact/hooks";
 
+import { defer } from "../../lib/defer";
+
 import RequiresOnline from "../../context/revoltjs/RequiresOnline";
 import {
     AppContext,
@@ -118,10 +120,13 @@ export default function Invite() {
                                     const result = await client.joinInvite(
                                         code,
                                     );
+
                                     if (result.type === "Server") {
-                                        history.push(
-                                            `/server/${result.server._id}/channel/${result.channel._id}`,
-                                        );
+                                        defer(() => {
+                                            history.push(
+                                                `/server/${result.server._id}/channel/${result.channel._id}`,
+                                            );
+                                        });
                                     }
                                 } catch (err) {
                                     setError(takeError(err));