diff --git a/src/components/palette/index.js b/src/components/palette/index.js
index 8a6003b92..09f1dd74a 100644
--- a/src/components/palette/index.js
+++ b/src/components/palette/index.js
@@ -45,18 +45,9 @@ This shows that using keyboardHideStart event is faster than not using it.
  * @param {()=>string} onsSelectCb Callback to call when a hint is selected
  * @param {string} placeholder Placeholder for input
  * @param {function} onremove Callback to call when palette is removed
- * @param {function} onHighlight Callback to call when hint is highlighted
  * @returns {void}
  */
-export default function palette(
-	getList,
-	onsSelectCb,
-	placeholder,
-	onremove,
-	onHighlight,
-) {
-	let isRemoving = false;
-
+export default function palette(getList, onsSelectCb, placeholder, onremove) {
 	/**@type {HTMLInputElement} */
 	const $input = (
 		<input
@@ -72,16 +63,16 @@ export default function palette(
 	const $palette = <div id="palette">{$input}</div>;
 
 	// Create a palette with input and hints
-	inputhints($input, generateHints, onSelect, onHighlight);
+	inputhints($input, generateHints, onSelect);
 
 	// Removes the darkened color from status bar and navigation bar
 	restoreTheme(true);
 
 	// Remove palette when input is blurred
-	$input.addEventListener("blur", handleBlur);
+	$input.addEventListener("blur", remove);
 	// Don't wait for input to blur when keyboard hides, remove is
 	// as soon as keyboard starts to hide
-	keyboardHandler.on("keyboardHideStart", handleKeyboardHide);
+	keyboardHandler.on("keyboardHideStart", remove);
 
 	// Add to DOM
 	app.append($palette, $mask);
@@ -100,25 +91,12 @@ export default function palette(
 	 * @param {string} value
 	 */
 	function onSelect(value) {
-		isRemoving = true;
 		remove();
 		setTimeout(() => {
 			onsSelectCb(value);
 		}, 0);
 	}
 
-	function handleBlur() {
-		if (!isRemoving) {
-			remove();
-		}
-	}
-
-	function handleKeyboardHide() {
-		if (!isRemoving) {
-			remove();
-		}
-	}
-
 	/**
 	 * Keydown event handler for input
 	 * @param {KeyboardEvent} e
@@ -143,12 +121,9 @@ export default function palette(
 	 * Removes the palette
 	 */
 	function remove() {
-		if (isRemoving) return;
-		isRemoving = true;
-
 		actionStack.remove("palette");
-		keyboardHandler.off("keyboardHideStart", handleKeyboardHide);
-		$input.removeEventListener("blur", handleBlur);
+		keyboardHandler.off("keyboardHideStart", remove);
+		$input.removeEventListener("blur", remove);
 
 		restoreTheme();
 		$palette.remove();
@@ -160,8 +135,12 @@ export default function palette(
 		}
 
 		const { activeFile, editor } = editorManager;
-		if (activeFile?.wasFocused) {
+		if (activeFile.wasFocused) {
 			editor.focus();
 		}
+
+		remove = () => {
+			window.log("warn", "Palette already removed.");
+		};
 	}
 }
diff --git a/src/pages/plugin/plugin.view.js b/src/pages/plugin/plugin.view.js
index bc6684b9a..c51592f5a 100644
--- a/src/pages/plugin/plugin.view.js
+++ b/src/pages/plugin/plugin.view.js
@@ -18,9 +18,9 @@ export default (props) => {
 		author,
 		downloads,
 		license,
-		keywords,
-		contributors,
 		changelogs,
+		keywords: keywordsRaw,
+		contributors: contributorsRaw,
 		votes_up: votesUp,
 		votes_down: votesDown,
 		author_verified: authorVerified,
@@ -30,6 +30,13 @@ export default (props) => {
 
 	let rating = "unrated";
 
+	const keywords =
+		typeof keywordsRaw === "string" ? JSON.parse(keywordsRaw) : keywordsRaw;
+	const contributors =
+		typeof contributorsRaw === "string"
+			? JSON.parse(contributorsRaw)
+			: contributorsRaw;
+
 	if (votesUp || votesDown) {
 		rating = `${Math.round((votesUp / (votesUp + votesDown)) * 100)}%`;
 	}