diff --git a/__tests__/src/selectors/manifests.test.js b/__tests__/src/selectors/manifests.test.js
index c51962e0d3e0811ac0733163ed9fa164a9950efa..0460a07c50db9ac93ca59089ef7a14ce99afea06 100644
--- a/__tests__/src/selectors/manifests.test.js
+++ b/__tests__/src/selectors/manifests.test.js
@@ -360,6 +360,8 @@ describe('getMetadataLocales', () => {
           label: 'Some label',
           value: { '@language': 'one-value', '@value': '1' },
         },
+        { label: 'Bad value', value: null },
+        { label: null, value: 'Bad label' },
       ],
     };
     const state = { manifests: { x: { json: manifest } } };
diff --git a/src/state/selectors/manifests.js b/src/state/selectors/manifests.js
index 7c166c30dfd79bc3cd43fee765562df70009fde6..4dc15f631259b26f9be427b39321aadab9408e10 100644
--- a/src/state/selectors/manifests.js
+++ b/src/state/selectors/manifests.js
@@ -338,9 +338,10 @@ export const getManifestMetadata = createSelector(
 /** */
 function getLocalesForStructure(item) {
   const languages = [];
+
   if (Array.isArray(item)) {
     languages.push(...item.filter(i => (typeof i === 'object' && i['@language'])).map(i => i['@language']));
-  } else if (typeof item === 'object') {
+  } else if (item && typeof item === 'object') {
     if (item['@language']) languages.push(item['@language']);
   }
   return languages;