                     return false
                 }
                 let diffContainerVC = DiffContainerViewController(siteURL: siteURL, theme: theme, fromRevisionID: fromRevID, toRevisionID: toRevID, type: .compare, articleTitle: nil, hidesHistoryBackTitle: true)
-                present(diffContainerVC)
-                return true
+                return presentOrPush(diffContainerVC, with: completion)
             case .articleDiffSingle(let linkURL, let fromRevID, let toRevID):
                 guard let siteURL = linkURL.wmf_site,
                     (fromRevID != nil || toRevID != nil) else {

                    return false
                }
                let diffContainerVC = DiffContainerViewController(siteURL: siteURL, theme: theme, fromRevisionID: fromRevID, toRevisionID: toRevID, type: .single, articleTitle: nil, hidesHistoryBackTitle: true)
                present(diffContainerVC)
                return true
            case .inAppLink(let linkURL):
                let singlePageVC = SinglePageWebViewController(url: linkURL, theme: theme)
                present(singlePageVC)
                return true
            case .userTalk(let linkURL):
                guard let talkPageVC = TalkPageContainerViewController.userTalkPageContainer(url: linkURL, dataStore: appViewController.dataStore, theme: theme) else {
                    completion()
                    return false
                }
                present(talkPageVC)
                return true
            default:
                completion()
                return false

                return true
            case .articleHistory(let linkURL, let articleTitle):
                let pageHistoryVC = PageHistoryViewController(pageTitle: articleTitle, pageURL: linkURL)
                return presentOrPush(pageHistoryVC, with: completion)
            case .articleDiffCompare(let linkURL, let fromRevID, let toRevID):
                guard let siteURL = linkURL.wmf_site,
                  (fromRevID != nil || toRevID != nil) else {
