diff --git a/Core/Bridge/TweetDeckBridge.cs b/Core/Bridge/TweetDeckBridge.cs
index 100d4b93..6b885b8e 100644
--- a/Core/Bridge/TweetDeckBridge.cs
+++ b/Core/Bridge/TweetDeckBridge.cs
@@ -1,8 +1,12 @@
-using System.Windows.Forms;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using CefSharp;
 using TweetDuck.Core.Controls;
 using TweetDuck.Core.Notification;
 using TweetDuck.Core.Other;
 using TweetDuck.Core.Utils;
+using TweetDuck.Resources;
 
 namespace TweetDuck.Core.Bridge{
     sealed class TweetDeckBridge{
@@ -11,12 +15,26 @@ sealed class TweetDeckBridge{
         public static string LastHighlightedTweet = string.Empty;
         public static string LastHighlightedQuotedTweet = string.Empty;
         public static string[] LastHighlightedTweetImages = StringUtils.EmptyArray;
+        public static Dictionary<string, string> SessionData = new Dictionary<string, string>(2);
 
         public static void ResetStaticProperties(){
             LastRightClickedLink = LastRightClickedImage = LastHighlightedTweet = LastHighlightedQuotedTweet = string.Empty;
             LastHighlightedTweetImages = StringUtils.EmptyArray;
         }
 
+        public static void RestoreSessionData(IFrame frame){
+            if (SessionData.Count > 0){
+                StringBuilder build = new StringBuilder().Append("window.TD_SESSION={");
+                
+                foreach(KeyValuePair<string, string> kvp in SessionData){
+                    build.Append(kvp.Key).Append(":'").Append(kvp.Value.Replace("'", "\\'")).Append("',");
+                }
+
+                ScriptLoader.ExecuteScript(frame, build.Append("}").ToString(), "gen:session");
+                SessionData.Clear();
+            }
+        }
+
         private readonly FormBrowser form;
         private readonly FormNotificationMain notification;
 
@@ -80,6 +98,12 @@ public void DisplayTooltip(string text, bool showInNotification){
             }
         }
 
+        public void SetSessionData(string key, string value){
+            form.InvokeSafe(() => { // do not use InvokeAsyncSafe, return only after invocation
+                SessionData.Add(key, value);
+            });
+        }
+
         public void LoadNextNotification(){
             notification.InvokeAsyncSafe(notification.FinishCurrentNotification);
         }
diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 82bce66b..d7fe7e1b 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -204,6 +204,7 @@ private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
                 e.Frame.ExecuteJavaScriptAsync(TwitterUtils.BackgroundColorFix);
 
                 UpdateProperties(PropertyBridge.Environment.Browser);
+                TweetDeckBridge.RestoreSessionData(e.Frame);
                 ScriptLoader.ExecuteFile(e.Frame, "code.js");
                 ReinjectCustomCSS(Config.CustomBrowserCSS);
 
diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js
index fda7fe36..2fa42de6 100644
--- a/Resources/Scripts/code.js
+++ b/Resources/Scripts/code.js
@@ -908,6 +908,8 @@
     onAppReady.forEach(func => func());
     onAppReady = null;
     
+    delete window.TD_SESSION;
+    
     if (window.TD_PLUGINS){
       window.TD_PLUGINS.onReady();
     }