diff --git a/client/src/components/helpers/avatar-renderer.tsx b/client/src/components/helpers/avatar-renderer.tsx
index 4a9257df17e..f9f2bfd8db7 100644
--- a/client/src/components/helpers/avatar-renderer.tsx
+++ b/client/src/components/helpers/avatar-renderer.tsx
@@ -2,7 +2,6 @@ import { Image } from '@freecodecamp/react-bootstrap';
import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import isURL from 'validator/lib/isURL';
-import { defaultUserImage } from '../../../../config/misc';
import DefaultAvatar from '../../assets/icons/default-avatar';
import borderColorPicker from './border-color-picker';
@@ -27,8 +26,12 @@ function AvatarRenderer({
useEffect(() => {
const validationImage = document.createElement('img');
- // eslint-disable-next-line @typescript-eslint/naming-convention
- if (isURL(picture, { require_protocol: true })) {
+ if (
+ // we probably have loads of records in the database with this default avatar URL set. To prevent making a request to the image we know will 404.
+ !/freecodecamp\.com\/sample-image/.test(picture) &&
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ isURL(picture, { require_protocol: true })
+ ) {
validationImage.src = picture;
validationImage.onload = onImageLoad;
validationImage.onerror = onImageError;
@@ -38,9 +41,7 @@ function AvatarRenderer({
}, [picture]);
const isPlaceHolderImage =
- !isPictureValid ||
- /example.com|identicon.org|^$/.test(picture) ||
- picture === defaultUserImage;
+ !isPictureValid || /example.com|identicon.org|^$/.test(picture);
return (
diff --git a/config/misc.ts b/config/misc.ts
index fd3b5d0389a..041fffc3eea 100644
--- a/config/misc.ts
+++ b/config/misc.ts
@@ -1,4 +1,3 @@
-export const defaultUserImage = 'https://freecodecamp.com/sample-image.png';
export const MAX_MOBILE_WIDTH = 767;
export const TOOL_PANEL_HEIGHT = 37;
export const SEARCH_EXPOSED_WIDTH = 980;
diff --git a/tools/scripts/seed/certified-user-data.js b/tools/scripts/seed/certified-user-data.js
index f23d643a76b..fda10137acf 100644
--- a/tools/scripts/seed/certified-user-data.js
+++ b/tools/scripts/seed/certified-user-data.js
@@ -1,6 +1,5 @@
/* eslint-disable max-len */
const ObjectId = require('mongodb').ObjectID;
-const defaultUserImage = require('../../../config/misc').defaultUserImage;
module.exports = {
_id: ObjectId('5fa2db00a25c1c1fa49ce067'),
@@ -13,7 +12,7 @@ module.exports = {
about: '',
name: 'Full Stack User',
location: '',
- picture: defaultUserImage,
+ picture: '',
acceptedPrivacyTerms: true,
sendQuincyEmail: false,
currentChallengeId: '',
diff --git a/tools/scripts/seed/seed-demo-user.js b/tools/scripts/seed/seed-demo-user.js
index b77bff931a1..56f4b76c8f0 100644
--- a/tools/scripts/seed/seed-demo-user.js
+++ b/tools/scripts/seed/seed-demo-user.js
@@ -2,7 +2,6 @@ const path = require('path');
const debug = require('debug');
require('dotenv').config({ path: path.resolve(__dirname, '../../../.env') });
const { MongoClient, ObjectId } = require('mongodb');
-const defaultUserImage = require('../../../config/misc').defaultUserImage;
const fullyCertifiedUser = require('./certified-user-data');
const envVariables = process.argv;
@@ -36,7 +35,7 @@ const demoUser = {
about: '',
name: 'Development User',
location: '',
- picture: defaultUserImage,
+ picture: '',
acceptedPrivacyTerms: envVariables.includes('--unset-privacy-terms')
? null
: true,
@@ -100,7 +99,7 @@ const blankUser = {
about: '',
name: 'Development User',
location: '',
- picture: defaultUserImage,
+ picture: '',
acceptedPrivacyTerms: true,
sendQuincyEmail: false,
currentChallengeId: '',