diff --git a/CHANGELOG.md b/CHANGELOG.md
index 445308d1853ab02bc4b16fe2c889faecb5049892..9844319e323d11c9eb0024d8cf13148d8fcdc747 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
+## 2.7.1
+Bugfix release. Added small optimizations to emoji picker that should make it a bit more responsive, however it needs rather large change to make it more performant which might come in a major release.
+
+### Fixed
+- Instance default theme not respected
+- Nested panel header having wrong sticky position if navbar height != panel header height
+- Toggled buttons having bad contrast (when using v2 theme)
+
+### Changed
+- Simplify the OAuth client_name to 'PleromaFE'
+- Small optimizations to emoji picker
+
+
 ## 2.7.0
 
 ### Known issues
diff --git a/package.json b/package.json
index 822559147b6bf3c2e160d6a311e29f098a09d9d3..45b046603876b4530cd29caf5a7a845d8583e208 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "pleroma_fe",
-  "version": "2.7.0",
+  "version": "2.7.1",
   "description": "Pleroma frontend, the default frontend of Pleroma social network server",
   "author": "Pleroma contributors <https://git.pleroma.social/pleroma/pleroma-fe/-/blob/develop/CONTRIBUTORS.md>",
   "private": false,
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index a486bd4c7909df330f6462c417bdaf14e756c726..6cad05f62af6caa1c8a16b477234ddb3a61212fa 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -122,6 +122,7 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => {
     store.dispatch('setInstanceOption', { name, value: config[name] })
   }
 
+  copyInstanceOption('theme')
   copyInstanceOption('nsfwCensorImage')
   copyInstanceOption('background')
   copyInstanceOption('hidePostStats')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index d71bc1bbfc6c4bd177307174947f27ed581fe0b1..9ea5c877add16ca1fe55ca90756323241121566c 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -150,7 +150,9 @@ const EmojiPicker = {
     },
     showPicker () {
       this.$refs.popover.showPopover()
-      this.onShowing()
+      this.$nextTick(() => {
+        this.onShowing()
+      })
     },
     hidePicker () {
       this.$refs.popover.hidePopover()
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 7c36deaa84b1d247accff5e1086364f57aea1416..a3dc8f9eedc0a27fb9e14eea568fe3f6042cdacc 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -89,6 +89,7 @@
             class="emoji-groups"
             :class="groupsScrolledClass"
             :min-item-size="minItemSize"
+            :buffer="minItemSize"
             :items="emojiItems"
             :emit-update="true"
             @update="onScroll"
diff --git a/src/components/timeline/timeline.scss b/src/components/timeline/timeline.scss
index 0fc0d97957823152347bd7f976a5b04a944fbb4a..2dd66328deb0e9d86c5fe7f4d6bfae010dc5ceee 100644
--- a/src/components/timeline/timeline.scss
+++ b/src/components/timeline/timeline.scss
@@ -26,7 +26,7 @@
   }
 
   .conversation-heading {
-    top: calc(var(--__panel-heading-height) * var(--currentPanelStack, 2));
+    top: calc(var(--__panel-heading-height) * var(--currentPanelStack, 1) + var(--navbar-height));
     z-index: 2;
   }
 
diff --git a/src/services/new_api/oauth.js b/src/services/new_api/oauth.js
index 3c8e64bd9a4a7d781c430ea6aa81f057b1ce31a8..a4b7cbf076dd500909818c493d8cfe240a6923a7 100644
--- a/src/services/new_api/oauth.js
+++ b/src/services/new_api/oauth.js
@@ -10,7 +10,8 @@ export const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) =>
   const url = `${instance}/api/v1/apps`
   const form = new window.FormData()
 
-  form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)
+  form.append('client_name', 'PleromaFE')
+  form.append('website', 'https://pleroma.social')
   form.append('redirect_uris', REDIRECT_URI)
   form.append('scopes', 'read write follow push admin')
 
diff --git a/src/services/theme_data/theme2_to_theme3.js b/src/services/theme_data/theme2_to_theme3.js
index 95eb03c19ded9c437381e7b0105145444fd49a46..bcc0c961b8aec7cf4408c242a9e143949929786a 100644
--- a/src/services/theme_data/theme2_to_theme3.js
+++ b/src/services/theme_data/theme2_to_theme3.js
@@ -418,7 +418,6 @@ export const convertTheme2To3 = (data) => {
         case 'Border':
           newRule.parent = rule
           newRule.directives.textColor = data.colors[key]
-          newRule.directives.textAuto = 'no-auto'
           variantArray = parts.slice(0, -1)
           break
         default: