diff --git a/app/assets/javascripts/notebook/cells/output/index.vue b/app/assets/javascripts/notebook/cells/output/index.vue
index c5ae7e7ee10b09ce5f310b6db1955ea175861d95..b59ddd0d57abdb6d83648ed969607cc1222a42e8 100644
--- a/app/assets/javascripts/notebook/cells/output/index.vue
+++ b/app/assets/javascripts/notebook/cells/output/index.vue
@@ -20,12 +20,20 @@ export default {
       required: true,
     },
   },
-  data() {
-    return {
-      outputType: '',
-    };
-  },
   methods: {
+    outputType(output) {
+      if (output.text) {
+        return 'text/plain';
+      } else if (output.data['image/png']) {
+        return 'image/png';
+      } else if (output.data['text/html']) {
+        return 'text/html';
+      } else if (output.data['image/svg+xml']) {
+        return 'image/svg+xml';
+      }
+
+      return 'text/plain';
+    },
     dataForType(output, type) {
       let data = output.data[type];
 
@@ -39,20 +47,13 @@ export default {
       if (output.text) {
         return CodeOutput;
       } else if (output.data['image/png']) {
-        this.outputType = 'image/png';
-
         return ImageOutput;
       } else if (output.data['text/html']) {
-        this.outputType = 'text/html';
-
         return HtmlOutput;
       } else if (output.data['image/svg+xml']) {
-        this.outputType = 'image/svg+xml';
-
         return HtmlOutput;
       }
 
-      this.outputType = 'text/plain';
       return CodeOutput;
     },
     rawCode(output) {
@@ -60,7 +61,7 @@ export default {
         return output.text.join('');
       }
 
-      return this.dataForType(output, this.outputType);
+      return this.dataForType(output, this.outputType(output));
     },
   },
 };
@@ -73,7 +74,7 @@ export default {
       v-for="(output, index) in outputs"
       :key="index"
       type="output"
-      :output-type="outputType"
+      :output-type="outputType(output)"
       :count="count"
       :index="index"
       :raw-code="rawCode(output)"
diff --git a/changelogs/unreleased/59079-fix-jupyter-render-loop.yml b/changelogs/unreleased/59079-fix-jupyter-render-loop.yml
new file mode 100644
index 0000000000000000000000000000000000000000..29264b33dfa1c162bdb4d968708b5b9049a04f09
--- /dev/null
+++ b/changelogs/unreleased/59079-fix-jupyter-render-loop.yml
@@ -0,0 +1,5 @@
+---
+title: Fix jupyter rendering bug that ended in an infinite loop
+merge_request: 26656
+author: ROSPARS Benoit
+type: fixed