diff --git a/WordPress/build.gradle b/WordPress/build.gradle
index 3b3602aacb86..9eae6a8115a2 100644
--- a/WordPress/build.gradle
+++ b/WordPress/build.gradle
@@ -164,7 +164,6 @@ android {
         buildConfigField "boolean", "VOICE_TO_CONTENT", "false"
         buildConfigField "boolean", "READER_FLOATING_BUTTON", "false"
         buildConfigField "boolean", "ENABLE_SELF_HOSTED_USERS", "false"
-        buildConfigField "boolean", "GRAVATAR_QUICK_EDITOR", "false"
 
         // Override these constants in jetpack product flavor to enable/ disable features
         buildConfigField "boolean", "ENABLE_SITE_CREATION", "true"
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
index 440314539931..f3997bfe6595 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/accounts/signup/SignupEpilogueFragment.kt
@@ -3,12 +3,8 @@
 package org.wordpress.android.ui.accounts.signup
 
 import android.annotation.SuppressLint
-import android.app.Activity
 import android.content.Context
 import android.content.DialogInterface
-import android.content.Intent
-import android.graphics.drawable.BitmapDrawable
-import android.graphics.drawable.Drawable
 import android.net.Uri
 import android.os.Bundle
 import android.text.Editable
@@ -26,7 +22,6 @@ import android.widget.FrameLayout
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.annotation.LayoutRes
-import androidx.appcompat.view.ContextThemeWrapper
 import androidx.core.widget.NestedScrollView
 import androidx.lifecycle.lifecycleScope
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -35,18 +30,16 @@ import com.gravatar.AvatarUrl
 import com.gravatar.quickeditor.GravatarQuickEditor
 import com.gravatar.quickeditor.ui.editor.AuthenticationMethod
 import com.gravatar.quickeditor.ui.editor.AvatarPickerContentLayout
+import com.gravatar.quickeditor.ui.editor.AvatarPickerResult
 import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
 import com.gravatar.services.AvatarService
 import com.gravatar.services.GravatarResult
 import com.gravatar.types.Email
-import com.yalantis.ucrop.UCrop
-import com.yalantis.ucrop.UCropActivity
 import kotlinx.coroutines.launch
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 import org.wordpress.android.R
 import org.wordpress.android.WordPress
-import org.wordpress.android.WordPress.Companion.getBitmapCache
 import org.wordpress.android.analytics.AnalyticsTracker
 import org.wordpress.android.analytics.AnalyticsTracker.Stat
 import org.wordpress.android.fluxc.Dispatcher
@@ -62,11 +55,7 @@ import org.wordpress.android.login.LoginBaseFormFragment
 import org.wordpress.android.login.widgets.WPLoginInputRow
 import org.wordpress.android.ui.FullScreenDialogFragment
 import org.wordpress.android.ui.FullScreenDialogFragment.OnShownListener
-import org.wordpress.android.ui.RequestCodes
 import org.wordpress.android.ui.accounts.UnifiedLoginTracker
-import org.wordpress.android.ui.photopicker.MediaPickerConstants
-import org.wordpress.android.ui.photopicker.MediaPickerLauncher
-import org.wordpress.android.ui.photopicker.PhotoPickerActivity.PhotoPickerMediaSource
 import org.wordpress.android.ui.prefs.AppPrefsWrapper
 import org.wordpress.android.ui.reader.services.update.ReaderUpdateLogic.UpdateTask
 import org.wordpress.android.ui.reader.services.update.ReaderUpdateServiceStarter
@@ -74,10 +63,6 @@ import org.wordpress.android.util.AppLog
 import org.wordpress.android.util.MediaUtils
 import org.wordpress.android.util.StringUtils
 import org.wordpress.android.util.ToastUtils
-import org.wordpress.android.util.WPAvatarUtils
-import org.wordpress.android.util.WPMediaUtils
-import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
-import org.wordpress.android.util.extensions.getColorFromAttribute
 import org.wordpress.android.util.extensions.redirectContextClickToLongPressListener
 import org.wordpress.android.util.image.ImageManager
 import org.wordpress.android.util.image.ImageType
@@ -135,15 +120,9 @@ class SignupEpilogueFragment : LoginBaseFormFragment<SignupEpilogueListener?>(),
     @Inject
     lateinit var mSignupUtils: SignupUtils
 
-    @Inject
-    lateinit var mMediaPickerLauncher: MediaPickerLauncher
-
     @Inject
     lateinit var mAvatarService: AvatarService
 
-    @Inject
-    lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
-
     @LayoutRes
     override fun getContentLayout(): Int {
         return 0 // no content layout; entire view is inflated in createMainView
@@ -173,33 +152,35 @@ class SignupEpilogueFragment : LoginBaseFormFragment<SignupEpilogueListener?>(),
         headerAvatarLayout.isEnabled = mIsEmailSignup
         headerAvatarLayout.setOnClickListener {
             mUnifiedLoginTracker.trackClick(UnifiedLoginTracker.Click.SELECT_AVATAR)
-            if (gravatarQuickEditorFeatureConfig.isEnabled()) {
-                GravatarQuickEditor.show(
-                    fragment = this,
-                    gravatarQuickEditorParams = GravatarQuickEditorParams {
-                        email = Email(mEmailAddress)
-                        avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
-                    },
-                    authenticationMethod = AuthenticationMethod.Bearer(mAccount.accessToken.orEmpty()),
-                    onAvatarSelected = {
-                        mPhotoUrl = AvatarUrl(
-                            email = Email(mEmailAddress),
-                            avatarQueryOptions = AvatarQueryOptions {
-                                preferredSize = resources.getDimensionPixelSize(R.dimen.avatar_sz_large)
-                            }
-                        ).url(cacheBuster = System.currentTimeMillis().toString()).toString()
-                        mImageManager.loadIntoCircle(
-                            mHeaderAvatar,
-                            ImageType.AVATAR_WITHOUT_BACKGROUND,
-                            mPhotoUrl
-                        )
-                        mHeaderAvatarAdd.visibility = View.GONE
-                        mIsAvatarAdded = true
-                    },
-                )
-            } else {
-                mMediaPickerLauncher.showGravatarPicker(this@SignupEpilogueFragment)
-            }
+            GravatarQuickEditor.show(
+                fragment = this,
+                gravatarQuickEditorParams = GravatarQuickEditorParams {
+                    email = Email(mEmailAddress)
+                    avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
+                },
+                authenticationMethod = AuthenticationMethod.Bearer(mAccount.accessToken.orEmpty()),
+                updateHandler = { event ->
+                    when (event) {
+                        AvatarPickerResult -> {
+                            mPhotoUrl = AvatarUrl(
+                                email = Email(mEmailAddress),
+                                avatarQueryOptions = AvatarQueryOptions {
+                                    preferredSize = resources.getDimensionPixelSize(R.dimen.avatar_sz_large)
+                                }
+                            ).url(cacheBuster = System.currentTimeMillis().toString()).toString()
+                            mImageManager.loadIntoCircle(
+                                mHeaderAvatar,
+                                ImageType.AVATAR_WITHOUT_BACKGROUND,
+                                mPhotoUrl
+                            )
+                            mHeaderAvatarAdd.visibility = View.GONE
+                            mIsAvatarAdded = true
+                        }
+
+                        else -> Unit
+                    }
+                },
+            )
         }
         headerAvatarLayout.setOnLongClickListener {
             ToastUtils.showToast(
@@ -374,81 +355,6 @@ class SignupEpilogueFragment : LoginBaseFormFragment<SignupEpilogueListener?>(),
         }
     }
 
-    @Deprecated("Deprecated in Java")
-    @Suppress("deprecation", "NestedBlockDepth", "LongMethod")
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-
-        if (isAdded) {
-            when (resultCode) {
-                Activity.RESULT_OK -> when (requestCode) {
-                    RequestCodes.PHOTO_PICKER -> if (data != null) {
-                        val mediaUriStringsArray =
-                            data.getStringArrayExtra(MediaPickerConstants.EXTRA_MEDIA_URIS)
-
-                        if (mediaUriStringsArray != null && mediaUriStringsArray.size > 0) {
-                            val source =
-                                PhotoPickerMediaSource.fromString(
-                                    data.getStringExtra(MediaPickerConstants.EXTRA_MEDIA_SOURCE)
-                                )
-                            val stat =
-                                if (source == PhotoPickerMediaSource.ANDROID_CAMERA) {
-                                    Stat.SIGNUP_EMAIL_EPILOGUE_GRAVATAR_SHOT_NEW
-                                } else {
-                                    Stat.SIGNUP_EMAIL_EPILOGUE_GRAVATAR_GALLERY_PICKED
-                                }
-                            AnalyticsTracker.track(stat)
-                            val imageUri = Uri.parse(mediaUriStringsArray[0])
-
-                            if (imageUri != null) {
-                                val wasSuccess = WPMediaUtils.fetchMediaAndDoNext(
-                                    activity, imageUri
-                                ) { uri -> startCropActivity(uri) }
-
-                                if (!wasSuccess) {
-                                    AppLog.e(
-                                        AppLog.T.UTILS,
-                                        "Can't download picked or captured image"
-                                    )
-                                }
-                            } else {
-                                AppLog.e(AppLog.T.UTILS, "Can't parse media string")
-                            }
-                        } else {
-                            AppLog.e(AppLog.T.UTILS, "Can't resolve picked or captured image")
-                        }
-                    }
-
-                    UCrop.REQUEST_CROP -> {
-                        AnalyticsTracker.track(Stat.SIGNUP_EMAIL_EPILOGUE_GRAVATAR_CROPPED)
-                        WPMediaUtils.fetchMediaAndDoNext(
-                            activity, UCrop.getOutput((data)!!)
-                        ) { uri ->
-                            startGravatarUpload(
-                                MediaUtils.getRealPathFromURI(
-                                    activity, uri
-                                )
-                            )
-                        }
-                    }
-                }
-
-                UCrop.RESULT_ERROR -> {
-                    AppLog.e(
-                        AppLog.T.NUX, "Image cropping failed", UCrop.getError(
-                            (data)!!
-                        )
-                    )
-                    ToastUtils.showToast(
-                        activity,
-                        R.string.error_cropping_image,
-                        ToastUtils.Duration.SHORT
-                    )
-                }
-            }
-        }
-    }
-
     @Suppress("TooGenericExceptionThrown")
     override fun onAttach(context: Context) {
         super.onAttach(context)
@@ -633,56 +539,6 @@ class SignupEpilogueFragment : LoginBaseFormFragment<SignupEpilogueListener?>(),
         mDialog?.show(requireActivity().supportFragmentManager, FullScreenDialogFragment.TAG)
     }
 
-    private fun loadAvatar(avatarUrl: String, injectFilePath: String) {
-        val newAvatarUploaded = injectFilePath.isNotEmpty()
-        if (newAvatarUploaded) {
-            // Remove specific URL entry from bitmap cache. Update it via injected request cache.
-            getBitmapCache().removeSimilar(avatarUrl)
-            // Changing the signature invalidates Glide's cache
-            mAppPrefsWrapper.avatarVersion += 1
-        }
-
-        val bitmap = getBitmapCache()[avatarUrl]
-        // Avatar's API doesn't synchronously update the image at avatarUrl. There is a replication lag
-        // (cca 5s), before the old avatar is replaced with the new avatar. Therefore we need to use this workaround,
-        // which temporary saves the new image into a local bitmap cache.
-        if (bitmap != null) {
-            mImageManager.load((mHeaderAvatar), bitmap)
-        } else {
-            mImageManager.loadIntoCircle(
-                mHeaderAvatar,
-                ImageType.AVATAR_WITHOUT_BACKGROUND,
-                if (newAvatarUploaded) {
-                    injectFilePath
-                } else {
-                    avatarUrl
-                },
-                object : ImageManager.RequestListener<Drawable> {
-                    override fun onLoadFailed(e: Exception?, model: Any?) {
-                        AppLog.e(
-                            AppLog.T.NUX,
-                            "Uploading image to Gravatar succeeded, but setting image view failed"
-                        )
-                        showErrorDialogWithCloseButton(getString(R.string.signup_epilogue_error_avatar_view))
-                    }
-
-                    @Suppress("NAME_SHADOWING")
-                    override fun onResourceReady(resource: Drawable, model: Any?) {
-                        if (newAvatarUploaded && resource is BitmapDrawable) {
-                            var bitmap = resource.bitmap
-                            // create a copy since the original bitmap may by automatically recycled
-                            bitmap.config?.let { config ->
-                                bitmap = bitmap.copy(config, true)
-                            }
-                            getBitmapCache().put((avatarUrl), bitmap)
-                        }
-                    }
-                },
-                mAppPrefsWrapper.avatarVersion
-            )
-        }
-    }
-
     private fun populateViews() {
         mEmailAddress = mAccountStore.account.email
         mDisplayName = mSignupUtils.createDisplayNameFromEmail(mEmailAddress)
@@ -728,84 +584,6 @@ class SignupEpilogueFragment : LoginBaseFormFragment<SignupEpilogueListener?>(),
         dialog.show()
     }
 
-    private fun startCropActivity(uri: Uri?) {
-        val baseContext: Context? = activity
-
-        if (baseContext != null) {
-            val context: Context = ContextThemeWrapper(baseContext, R.style.WordPress_NoActionBar)
-
-            val options = UCrop.Options()
-            options.setShowCropGrid(false)
-            options.setStatusBarColor(
-                context.getColorFromAttribute(
-                    android.R.attr.statusBarColor
-                )
-            )
-            options.setToolbarColor(context.getColorFromAttribute(R.attr.wpColorAppBar))
-            options.setToolbarWidgetColor(
-                context.getColorFromAttribute(
-                    com.google.android.material.R.attr.colorOnSurface
-                )
-            )
-            options.setAllowedGestures(UCropActivity.SCALE, UCropActivity.NONE, UCropActivity.NONE)
-            options.setHideBottomControls(true)
-
-            UCrop.of((uri)!!, Uri.fromFile(File(context.cacheDir, "cropped.jpg")))
-                .withAspectRatio(1f, 1f)
-                .withOptions(options)
-                .start(context, this)
-        }
-    }
-
-    private fun startGravatarUpload(filePath: String) {
-        if (!TextUtils.isEmpty(filePath)) {
-            val file = File(filePath)
-            if (file.exists()) {
-                mAccountStore.accessToken?.let { accessToken ->
-                    startProgress(false)
-                    lifecycleScope.launch {
-                        val result = mAvatarService.uploadCatching(
-                            file,
-                            accessToken,
-                            hash = Email(mAccountStore.account.email).hash(),
-                            selectAvatar = true
-                        )
-                        when (result) {
-                            is GravatarResult.Success -> {
-                                endProgress()
-                                AnalyticsTracker.track(Stat.ME_GRAVATAR_UPLOADED)
-                                mPhotoUrl = WPAvatarUtils.rewriteAvatarUrl(
-                                    mAccount.account.avatarUrl,
-                                    resources.getDimensionPixelSize(R.dimen.avatar_sz_large)
-                                )
-                                loadAvatar(mPhotoUrl, filePath)
-                                mHeaderAvatarAdd.visibility = View.GONE
-                                mIsAvatarAdded = true
-                            }
-
-                            is GravatarResult.Failure -> {
-                                endProgress()
-                                showErrorDialogWithCloseButton(getString(R.string.signup_epilogue_error_avatar))
-                                val properties: MutableMap<String, Any?> = HashMap()
-                                properties["error_type"] = result.error
-                                AnalyticsTracker.track(Stat.ME_GRAVATAR_UPLOAD_EXCEPTION, properties)
-                                AppLog.e(AppLog.T.NUX, "Uploading image to Gravatar failed")
-                            }
-                        }
-                    }
-                }
-            } else {
-                ToastUtils.showToast(
-                    activity,
-                    R.string.error_locating_image,
-                    ToastUtils.Duration.SHORT
-                )
-            }
-        } else {
-            ToastUtils.showToast(activity, R.string.error_locating_image, ToastUtils.Duration.SHORT)
-        }
-    }
-
     @SuppressLint("SetTextI18n")
     private fun undoChanges() {
         mDisplayName = if (!TextUtils.isEmpty(mAccountStore.account.displayName)
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
index faaab57b8e6b..0f2ed9d7dadb 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
+++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.kt
@@ -2,15 +2,12 @@
 
 package org.wordpress.android.ui.main
 
-import android.app.Activity
 import android.app.ProgressDialog
 import android.content.Intent
 import android.content.pm.PackageManager
 import android.graphics.drawable.BitmapDrawable
 import android.graphics.drawable.Drawable
-import android.net.Uri
 import android.os.Bundle
-import android.text.TextUtils
 import android.view.View
 import android.view.View.OnClickListener
 import androidx.annotation.StringRes
@@ -20,7 +17,6 @@ import androidx.core.view.isVisible
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.google.android.material.snackbar.Snackbar
 import com.gravatar.quickeditor.GravatarQuickEditor
@@ -31,14 +27,8 @@ import com.gravatar.quickeditor.ui.editor.AvatarPickerAndAboutEditorConfiguratio
 import com.gravatar.quickeditor.ui.editor.AvatarPickerResult
 import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
 import com.gravatar.quickeditor.ui.editor.QuickEditorScopeOption
-import com.gravatar.services.AvatarService
-import com.gravatar.services.GravatarResult
 import com.gravatar.types.Email
-import com.yalantis.ucrop.UCrop
-import com.yalantis.ucrop.UCrop.Options
-import com.yalantis.ucrop.UCropActivity
 import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.launch
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -46,12 +36,7 @@ import org.wordpress.android.BuildConfig
 import org.wordpress.android.R
 import org.wordpress.android.WordPress
 import org.wordpress.android.analytics.AnalyticsTracker
-import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_CROPPED
-import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_GALLERY_PICKED
-import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_SHOT_NEW
 import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_TAPPED
-import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_UPLOADED
-import org.wordpress.android.analytics.AnalyticsTracker.Stat.ME_GRAVATAR_UPLOAD_EXCEPTION
 import org.wordpress.android.databinding.MeFragmentBinding
 import org.wordpress.android.designsystem.DesignSystemActivity
 import org.wordpress.android.fluxc.Dispatcher
@@ -61,7 +46,6 @@ import org.wordpress.android.fluxc.store.PostStore
 import org.wordpress.android.fluxc.store.SiteStore
 import org.wordpress.android.models.JetpackPoweredScreen
 import org.wordpress.android.ui.ActivityLauncher
-import org.wordpress.android.ui.RequestCodes
 import org.wordpress.android.ui.about.UnifiedAboutActivity
 import org.wordpress.android.ui.accounts.HelpActivity.Origin.ME_SCREEN_HELP
 import org.wordpress.android.ui.debug.DebugSettingsActivity
@@ -74,45 +58,33 @@ import org.wordpress.android.ui.main.emailverificationbanner.EmailVerificationVi
 import org.wordpress.android.ui.main.utils.MeGravatarLoader
 import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredBottomSheetFragment
 import org.wordpress.android.ui.notifications.utils.NotificationsUtils
-import org.wordpress.android.ui.photopicker.MediaPickerConstants
-import org.wordpress.android.ui.photopicker.MediaPickerLauncher
-import org.wordpress.android.ui.photopicker.PhotoPickerActivity
 import org.wordpress.android.ui.prefs.AppPrefsWrapper
 import org.wordpress.android.ui.utils.UiHelpers
 import org.wordpress.android.ui.utils.UiString
 import org.wordpress.android.ui.utils.UiString.UiStringText
 import org.wordpress.android.util.AppLog
 import org.wordpress.android.util.AppLog.T.MAIN
-import org.wordpress.android.util.AppLog.T.UTILS
 import org.wordpress.android.util.FluxCUtils
 import org.wordpress.android.util.JetpackBrandingUtils
-import org.wordpress.android.util.MediaUtils
 import org.wordpress.android.util.PackageManagerWrapper
 import org.wordpress.android.util.SnackbarItem
 import org.wordpress.android.util.SnackbarItem.Info
 import org.wordpress.android.util.SnackbarSequencer
 import org.wordpress.android.util.ToastUtils
 import org.wordpress.android.util.ToastUtils.Duration.SHORT
-import org.wordpress.android.util.WPMediaUtils
 import org.wordpress.android.util.config.DomainManagementFeatureConfig
-import org.wordpress.android.util.config.GravatarQuickEditorFeatureConfig
 import org.wordpress.android.util.config.QRCodeAuthFlowFeatureConfig
 import org.wordpress.android.util.config.RecommendTheAppFeatureConfig
-import org.wordpress.android.util.extensions.getColorFromAttribute
 import org.wordpress.android.util.image.ImageManager.RequestListener
 import org.wordpress.android.util.image.ImageType.AVATAR_WITHOUT_BACKGROUND
 import org.wordpress.android.viewmodel.observeEvent
-import java.io.File
 import javax.inject.Inject
-import android.R as AndroidR
-import com.google.android.material.R as MaterialR
 
 @AndroidEntryPoint
-@Suppress("TooManyFunctions", "LargeClass")
+@Suppress("TooManyFunctions")
 class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
     @Suppress("DEPRECATION")
     private var disconnectProgressDialog: ProgressDialog? = null
-    private var isUpdatingGravatar = false
     private var binding: MeFragmentBinding? = null
 
     @Inject
@@ -133,9 +105,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
     @Inject
     lateinit var viewModelFactory: ViewModelProvider.Factory
 
-    @Inject
-    lateinit var mediaPickerLauncher: MediaPickerLauncher
-
     @Inject
     lateinit var recommendTheAppFeatureConfig: RecommendTheAppFeatureConfig
 
@@ -145,9 +114,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
     @Inject
     lateinit var qrCodeAuthFlowFeatureConfig: QRCodeAuthFlowFeatureConfig
 
-    @Inject
-    lateinit var gravatarQuickEditorFeatureConfig: GravatarQuickEditorFeatureConfig
-
     @Inject
     lateinit var jetpackBrandingUtils: JetpackBrandingUtils
 
@@ -166,9 +132,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
     @Inject
     lateinit var domainManagementFeatureConfig: DomainManagementFeatureConfig
 
-    @Inject
-    lateinit var avatarService: AvatarService
-
     private val viewModel: MeViewModel by viewModels()
     private val emailVerificationViewModel: EmailVerificationViewModel by viewModels()
 
@@ -178,9 +141,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         (requireActivity().application as WordPress).component().inject(this)
-        if (savedInstanceState != null) {
-            isUpdatingGravatar = savedInstanceState.getBoolean(IS_UPDATING_GRAVATAR)
-        }
     }
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -230,9 +190,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
         learnMoreAtGravatar.setOnClickListener {
             ActivityLauncher.openUrlExternal(activity, GRAVATAR_URL)
         }
-        gravatarSyncView.gravatarSyncButton.setOnClickListener {
-            gravatarSyncView.gravatarSyncContainer.visibility = View.GONE
-        }
 
         if (BuildConfig.IS_JETPACK_APP) meAboutIcon.setImageResource(R.drawable.ic_jetpack_logo_white_24dp)
 
@@ -287,11 +244,7 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
 
     private fun MeFragmentBinding.showAvatarPicker() {
         withVeryfiedEmail(unverifiedEmailMessageRes = R.string.avatar_update_email_unverified) {
-            if (gravatarQuickEditorFeatureConfig.isEnabled()) {
-                showQuickEditor(page = AvatarPickerAndAboutEditorConfiguration.Page.AvatarPicker)
-            } else {
-                showPhotoPickerForGravatar()
-            }
+            showQuickEditor(page = AvatarPickerAndAboutEditorConfiguration.Page.AvatarPicker)
         }
     }
 
@@ -406,9 +359,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
             if (savedInstanceState.getBoolean(IS_DISCONNECTING, false)) {
                 viewModel.openDisconnectDialog()
             }
-            if (savedInstanceState.getBoolean(IS_UPDATING_GRAVATAR, false)) {
-                showGravatarProgressBar(true)
-            }
         }
 
         viewModel.showUnifiedAbout.observeEvent(viewLifecycleOwner) {
@@ -505,7 +455,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
         if (disconnectProgressDialog != null) {
             outState.putBoolean(IS_DISCONNECTING, true)
         }
-        outState.putBoolean(IS_UPDATING_GRAVATAR, isUpdatingGravatar)
         super.onSaveInstanceState(outState)
     }
 
@@ -564,7 +513,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
             meDisplayName.visibility = View.GONE
             meUsername.visibility = View.GONE
             cardAvatar.visibility = View.GONE
-            avatarProgress.visibility = View.GONE
             rowMyProfile.visibility = View.GONE
             myProfileDivider.visibility = View.GONE
             rowAccountSettings.visibility = View.GONE
@@ -573,11 +521,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
         }
     }
 
-    private fun MeFragmentBinding.showGravatarProgressBar(isUpdating: Boolean) {
-        avatarProgress.visibility = if (isUpdating) View.VISIBLE else View.GONE
-        isUpdatingGravatar = isUpdating
-    }
-
     private fun MeFragmentBinding.loadAvatar(injectFilePath: String?, forceRefresh: Boolean = false) {
         val newAvatarUploaded = !injectFilePath.isNullOrEmpty()
         val avatarUrl = meGravatarLoader.constructGravatarUrl(accountStore.account.avatarUrl)
@@ -688,150 +631,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
         disconnectProgressDialog = null
     }
 
-    @Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "LongMethod", "NestedBlockDepth")
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-
-        // If the fragment is not attached to the activity, we can't start the crop activity or upload the
-        // cropped image.
-        if (!isAdded) {
-            return
-        }
-        when (requestCode) {
-            RequestCodes.PHOTO_PICKER -> if (resultCode == Activity.RESULT_OK && data != null) {
-                val mediaUriStringsArray = data.getStringArrayExtra(MediaPickerConstants.EXTRA_MEDIA_URIS)
-                if (mediaUriStringsArray.isNullOrEmpty()) {
-                    AppLog.e(
-                        UTILS,
-                        "Can't resolve picked or captured image"
-                    )
-                    return
-                }
-                val source = PhotoPickerActivity.PhotoPickerMediaSource.fromString(
-                    data.getStringExtra(MediaPickerConstants.EXTRA_MEDIA_SOURCE)
-                )
-                val stat = if (source == PhotoPickerActivity.PhotoPickerMediaSource.ANDROID_CAMERA) {
-                    ME_GRAVATAR_SHOT_NEW
-                } else {
-                    ME_GRAVATAR_GALLERY_PICKED
-                }
-                AnalyticsTracker.track(stat)
-                val imageUri = Uri.parse(mediaUriStringsArray[0])
-                if (imageUri != null) {
-                    val didGoWell = WPMediaUtils.fetchMediaAndDoNext(
-                        activity,
-                        imageUri
-                    ) { uri: Uri -> startCropActivity(uri) }
-                    if (!didGoWell) {
-                        AppLog.e(
-                            UTILS,
-                            "Can't download picked or captured image"
-                        )
-                    }
-                }
-            }
-
-            UCrop.REQUEST_CROP -> {
-                AnalyticsTracker.track(ME_GRAVATAR_CROPPED)
-                if (resultCode == Activity.RESULT_OK) {
-                    WPMediaUtils.fetchMediaAndDoNext(
-                        activity, UCrop.getOutput(data!!)
-                    ) { uri: Uri? ->
-                        startGravatarUpload(
-                            MediaUtils.getRealPathFromURI(activity, uri)
-                        )
-                    }
-                } else if (resultCode == UCrop.RESULT_ERROR) {
-                    AppLog.e(
-                        MAIN,
-                        "Image cropping failed!",
-                        UCrop.getError(data!!)
-                    )
-                    ToastUtils.showToast(
-                        activity,
-                        R.string.error_cropping_image,
-                        SHORT
-                    )
-                }
-            }
-        }
-    }
-
-    private fun showPhotoPickerForGravatar() {
-        mediaPickerLauncher.showGravatarPicker(this)
-    }
-
-    private fun startCropActivity(uri: Uri) {
-        val context = activity ?: return
-        val options = Options()
-        options.setShowCropGrid(false)
-        options.setStatusBarColor(context.getColorFromAttribute(AndroidR.attr.statusBarColor))
-        options.setToolbarColor(context.getColorFromAttribute(R.attr.wpColorAppBar))
-        options.setToolbarWidgetColor(context.getColorFromAttribute(MaterialR.attr.colorOnSurface))
-        options.setAllowedGestures(UCropActivity.SCALE, UCropActivity.NONE, UCropActivity.NONE)
-        options.setHideBottomControls(true)
-        UCrop.of(uri, Uri.fromFile(File(context.cacheDir, "cropped_for_gravatar.jpg")))
-            .withAspectRatio(1f, 1f)
-            .withOptions(options)
-            .start(requireActivity(), this)
-    }
-
-    private fun startGravatarUpload(filePath: String) {
-        if (TextUtils.isEmpty(filePath)) {
-            ToastUtils.showToast(
-                activity,
-                R.string.error_locating_image,
-                SHORT
-            )
-            return
-        }
-        val file = File(filePath)
-        if (!file.exists()) {
-            ToastUtils.showToast(activity, R.string.error_locating_image, SHORT)
-            return
-        }
-        binding?.showGravatarProgressBar(true)
-        lifecycleScope.launch {
-            val result = avatarService.uploadCatching(
-                file = file,
-                oauthToken = accountStore.accessToken.orEmpty(),
-                hash = Email(accountStore.account.email).hash(),
-                selectAvatar = true,
-            )
-            when (result) {
-                is GravatarResult.Failure -> {
-                    AnalyticsTracker.track(
-                        ME_GRAVATAR_UPLOAD_EXCEPTION,
-                        mapOf("error_type" to result.error.javaClass.name)
-                    )
-                    EventBus.getDefault().post(GravatarUploadFinished(filePath, false))
-                }
-
-                is GravatarResult.Success -> {
-                    AnalyticsTracker.track(ME_GRAVATAR_UPLOADED)
-                    EventBus.getDefault().post(GravatarUploadFinished(filePath, true))
-                }
-            }
-        }
-    }
-
-    class GravatarUploadFinished internal constructor(val filePath: String, val success: Boolean)
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onEventMainThread(event: GravatarUploadFinished) {
-        binding?.showGravatarProgressBar(false)
-        if (event.success) {
-            binding?.loadAvatar(event.filePath)
-            binding?.gravatarSyncView?.gravatarSyncContainer?.visibility = View.VISIBLE
-        } else {
-            ToastUtils.showToast(
-                activity,
-                R.string.error_updating_gravatar,
-                SHORT
-            )
-        }
-    }
-
     @Suppress("unused", "UNUSED_PARAMETER")
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onAccountChanged(event: OnAccountChanged?) {
@@ -840,7 +639,6 @@ class MeFragment : Fragment(R.layout.me_fragment), OnScrollToTopListener {
 
     companion object {
         private const val IS_DISCONNECTING = "IS_DISCONNECTING"
-        private const val IS_UPDATING_GRAVATAR = "IS_UPDATING_GRAVATAR"
         private const val GRAVATAR_URL = "https://www.gravatar.com"
         fun newInstance(): MeFragment {
             return MeFragment()
diff --git a/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt b/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt
deleted file mode 100644
index f956586ca177..000000000000
--- a/WordPress/src/main/java/org/wordpress/android/util/config/GravatarQuickEditorFeatureConfig.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.wordpress.android.util.config
-
-import org.wordpress.android.BuildConfig
-import org.wordpress.android.annotation.Feature
-import javax.inject.Inject
-
-@Feature(GravatarQuickEditorFeatureConfig.GRAVATAR_QUICK_EDITOR_REMOTE_FIELD, true)
-class GravatarQuickEditorFeatureConfig @Inject constructor(appConfig: AppConfig) : FeatureConfig(
-    appConfig,
-    BuildConfig.GRAVATAR_QUICK_EDITOR,
-    GRAVATAR_QUICK_EDITOR_REMOTE_FIELD
-) {
-    companion object {
-        const val GRAVATAR_QUICK_EDITOR_REMOTE_FIELD = "gravatar_quick_editor"
-    }
-}
diff --git a/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml b/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml
deleted file mode 100644
index 0920b9a9a1af..000000000000
--- a/WordPress/src/main/res/drawable/bg_wordpress_gravatar_sync_info.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="?attr/grColorSyncBanner" />
-    <corners android:radius="10dp" />
-</shape>
-
diff --git a/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml b/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml
deleted file mode 100644
index 4a3d104edd90..000000000000
--- a/WordPress/src/main/res/layout/gravatar_sync_info_banner.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/gravatar_sync_container"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@drawable/bg_wordpress_gravatar_sync_info"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/margin_extra_small_large"
-    android:paddingStart="@dimen/margin_extra_small_large"
-    android:paddingTop="@dimen/margin_extra_small_large"
-    android:visibility="visible"
-    tools:ignore="RtlSymmetry"
-    tools:visibility="visible">
-
-    <com.google.android.material.button.MaterialButton
-        android:id="@+id/gravatar_sync_button"
-        style="@style/OverlayMigrationHelperText"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/gravatar_info_sync_done_button"
-        android:textColor="@color/jetpack_green_50"
-        android:textStyle="bold"
-        app:drawableEndCompat="@drawable/ic_external_white_24dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <org.wordpress.android.widgets.WPTextView
-        android:id="@+id/gravatar_sync_message"
-        style="@style/MyProfileLabel"
-        android:layout_width="0dp"
-        android:text="@string/gravatar_info_sync_message"
-        android:textColor="@color/white"
-        app:layout_constraintEnd_toStartOf="@+id/gravatar_sync_button"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/WordPress/src/main/res/layout/me_fragment.xml b/WordPress/src/main/res/layout/me_fragment.xml
index 3aa55705a4ee..2894b89d5af0 100644
--- a/WordPress/src/main/res/layout/me_fragment.xml
+++ b/WordPress/src/main/res/layout/me_fragment.xml
@@ -43,37 +43,18 @@
                     android:padding="@dimen/margin_large">
 
                     <FrameLayout
-                        android:id="@+id/frame_avatar"
+                        android:id="@+id/avatar_container"
                         android:layout_width="wrap_content"
-                        android:layout_height="wrap_content">
-
-                        <FrameLayout
-                            android:id="@+id/avatar_container"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:background="?attr/selectableItemBackgroundBorderless"
-                            android:contentDescription="@string/me_profile_photo"
-                            android:padding="@dimen/margin_small">
-
-                            <ImageView
-                                android:id="@+id/me_avatar"
-                                android:layout_width="@dimen/avatar_sz_inner_circle"
-                                android:layout_height="@dimen/avatar_sz_inner_circle"
-                                android:contentDescription="@string/reader_avatar_desc" />
-                        </FrameLayout>
-
-                        <ProgressBar
-                            android:id="@+id/avatar_progress"
+                        android:layout_height="wrap_content"
+                        android:background="?attr/selectableItemBackgroundBorderless"
+                        android:contentDescription="@string/me_profile_photo"
+                        android:padding="@dimen/margin_small">
+
+                        <ImageView
+                            android:id="@+id/me_avatar"
                             android:layout_width="@dimen/avatar_sz_inner_circle"
                             android:layout_height="@dimen/avatar_sz_inner_circle"
-                            android:layout_gravity="center"
-                            android:background="@drawable/bg_oval_black_translucent_50"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:indeterminate="true"
-                            android:padding="@dimen/margin_large"
-                            android:visibility="gone"
-                            tools:visibility="visible" />
+                            android:contentDescription="@string/reader_avatar_desc" />
                     </FrameLayout>
 
                     <org.wordpress.android.widgets.WPTextView
@@ -82,7 +63,7 @@
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginStart="@dimen/margin_extra_large"
-                        android:layout_toEndOf="@+id/frame_avatar"
+                        android:layout_toEndOf="@+id/avatar_container"
                         android:ellipsize="end"
                         android:maxLines="1"
                         app:autoSizeMaxTextSize="@dimen/my_site_name_label_single_line_text_size"
@@ -97,7 +78,7 @@
                         android:layout_marginStart="@dimen/margin_extra_large"
                         android:layout_marginBottom="@dimen/margin_extra_large"
                         android:layout_below="@id/me_display_name"
-                        android:layout_toEndOf="@id/frame_avatar"
+                        android:layout_toEndOf="@id/avatar_container"
                         android:ellipsize="end"
                         android:maxLines="1"
                         android:textAppearance="?attr/textAppearanceBody2"
@@ -480,17 +461,4 @@
         </LinearLayout>
     </androidx.core.widget.NestedScrollView>
 
-    <include
-        android:id="@+id/gravatar_sync_view"
-        layout="@layout/gravatar_sync_info_banner"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginHorizontal="@dimen/margin_extra_large"
-        android:layout_marginBottom="@dimen/margin_extra_large"
-        android:visibility="gone"
-        android:layout_gravity="bottom"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        tools:visibility="gone" />
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml
index 2304235419e8..f371665dc5c1 100644
--- a/WordPress/src/main/res/values/strings.xml
+++ b/WordPress/src/main/res/values/strings.xml
@@ -3013,8 +3013,6 @@
     <string name="gravatar_info_title">Your WordPress.com profile is powered by Gravatar</string>
     <string name="gravatar_info_description">Updating your avatar, name, and about info here will also update it across all sites that use Gravatar profiles.</string>
     <string name="gravatar_info_learn_more_link">What is Gravatar?</string>
-    <string name="gravatar_info_sync_message">Updates might take some time to sync with your Gravatar profile.</string>
-    <string name="gravatar_info_sync_done_button">Done</string>
 
 
     <!-- Self-hosted Users -->
@@ -3069,7 +3067,6 @@
     <string name="error_cropping_image">Error cropping the image</string>
     <string name="error_locating_image">Error locating the cropped image</string>
     <string name="error_refreshing_gravatar">Error reloading your Gravatar</string>
-    <string name="error_updating_gravatar">Error updating your Gravatar</string>
     <string name="avatar_update_email_unverified">To update your avatar, you need to verify your email address first.</string>
     <string name="about_update_email_unverified">To update your profile, you need to verify your email address first.</string>
 
@@ -3296,7 +3293,6 @@
 
     <!-- Signup -->
     <string name="sign_up_label" tools:ignore="UnusedResources" a8c-src-lib="module:login">Sign Up</string>
-    <string name="signup_epilogue_error_avatar">There was some trouble uploading your avatar.</string>
     <string name="signup_epilogue_error_avatar_view">Your avatar has been uploaded and will be available shortly.</string>
     <string name="signup_epilogue_error_generic">There was some trouble updating your account. You can retry or revert your changes to continue.</string>
     <string name="signup_epilogue_error_button_negative">Revert</string>
diff --git a/WordPress/src/test/java/org/wordpress/android/util/analytics/AnalyticsTrackerNosaraTest.kt b/WordPress/src/test/java/org/wordpress/android/util/analytics/AnalyticsTrackerNosaraTest.kt
index c1866c22ed17..755463b2be5f 100644
--- a/WordPress/src/test/java/org/wordpress/android/util/analytics/AnalyticsTrackerNosaraTest.kt
+++ b/WordPress/src/test/java/org/wordpress/android/util/analytics/AnalyticsTrackerNosaraTest.kt
@@ -176,8 +176,6 @@ class AnalyticsTrackerNosaraTest {
         Stat.PAGES_SEARCH_ACCESSED to "site_pages_search_accessed",
         Stat.PAGES_EDIT_HOMEPAGE_INFO_PRESSED to "site_pages_edit_homepage_info_pressed",
         Stat.PAGES_EDIT_HOMEPAGE_ITEM_PRESSED to "site_pages_edit_homepage_item_pressed",
-        Stat.SIGNUP_EMAIL_EPILOGUE_GRAVATAR_GALLERY_PICKED to "signup_email_epilogue_gallery_picked",
-        Stat.SIGNUP_EMAIL_EPILOGUE_GRAVATAR_SHOT_NEW to "signup_email_epilogue_shot_new",
         Stat.SIGNUP_EMAIL_EPILOGUE_UNCHANGED to "signup_epilogue_unchanged",
         Stat.SIGNUP_EMAIL_EPILOGUE_UPDATE_DISPLAY_NAME_FAILED to "signup_epilogue_update_display_name_failed",
         Stat.SIGNUP_EMAIL_EPILOGUE_UPDATE_DISPLAY_NAME_SUCCEEDED to "signup_epilogue_update_display_name_succeeded",
diff --git a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java
index d569f276a82e..52c1742200af 100644
--- a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java
+++ b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java
@@ -289,9 +289,6 @@ public enum Stat {
         FOLLOWED_BLOG_NOTIFICATIONS_SETTINGS_COMMENTS_ON,
         ME_ACCESSED("me_tab_accessed"),
         ME_GRAVATAR_TAPPED,
-        ME_GRAVATAR_SHOT_NEW,
-        ME_GRAVATAR_GALLERY_PICKED,
-        ME_GRAVATAR_CROPPED,
         ME_GRAVATAR_UPLOADED,
         ME_GRAVATAR_UPLOAD_UNSUCCESSFUL,
         ME_GRAVATAR_UPLOAD_EXCEPTION,
@@ -471,9 +468,6 @@ public enum Stat {
         PAGES_EDIT_HOMEPAGE_ITEM_PRESSED("site_pages_edit_homepage_item_pressed"),
         SIGNUP_BUTTON_TAPPED,
         SIGNUP_EMAIL_BUTTON_TAPPED,
-        SIGNUP_EMAIL_EPILOGUE_GRAVATAR_CROPPED,
-        SIGNUP_EMAIL_EPILOGUE_GRAVATAR_GALLERY_PICKED("signup_email_epilogue_gallery_picked"),
-        SIGNUP_EMAIL_EPILOGUE_GRAVATAR_SHOT_NEW("signup_email_epilogue_shot_new"),
         SIGNUP_EMAIL_EPILOGUE_UNCHANGED("signup_epilogue_unchanged"),
         SIGNUP_EMAIL_EPILOGUE_UPDATE_DISPLAY_NAME_FAILED("signup_epilogue_update_display_name_failed"),
         SIGNUP_EMAIL_EPILOGUE_UPDATE_DISPLAY_NAME_SUCCEEDED("signup_epilogue_update_display_name_succeeded"),