diff --git a/app/models/packages/package.rb b/app/models/packages/package.rb
index 7b0bb72940e1502ab1e46166671de172e6419da0..b040c98ef095c326a9ab6e2a1098e259cace19fc 100644
--- a/app/models/packages/package.rb
+++ b/app/models/packages/package.rb
@@ -158,7 +158,7 @@ class Packages::Package < ApplicationRecord
     joins(:project).reorder(keyset_order)
   end
 
-  after_commit :update_composer_cache, on: :destroy, if: -> { composer? }
+  after_commit :update_composer_cache, on: :destroy, if: -> { composer? && Feature.disabled?(:disable_composer_callback) }
 
   def self.only_maven_packages_with_path(path, use_cte: false)
     if use_cte
diff --git a/config/feature_flags/development/disable_composer_callback.yml b/config/feature_flags/development/disable_composer_callback.yml
new file mode 100644
index 0000000000000000000000000000000000000000..93861e5040932ce2a4014bf08f5a6c2adc87233b
--- /dev/null
+++ b/config/feature_flags/development/disable_composer_callback.yml
@@ -0,0 +1,8 @@
+---
+name: disable_composer_callback
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64016
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/333587
+milestone: '14.0'
+type: development
+group: group::package
+default_enabled: false
diff --git a/spec/models/packages/package_spec.rb b/spec/models/packages/package_spec.rb
index 1e44327c08910e60db2c72fe0cf062ddbbc6c12e..b2c1d51e4af1eb4278abf26ead4a22daa389a3ba 100644
--- a/spec/models/packages/package_spec.rb
+++ b/spec/models/packages/package_spec.rb
@@ -1019,10 +1019,24 @@
       package.composer_metadatum.reload
     end
 
-    it 'schedule the update job' do
-      expect(::Packages::Composer::CacheUpdateWorker).to receive(:perform_async).with(project.id, package_name, package.composer_metadatum.version_cache_sha)
+    context 'with feature flag disabled' do
+      before do
+        stub_feature_flags(disable_composer_callback: false)
+      end
+
+      it 'schedule the update job' do
+        expect(::Packages::Composer::CacheUpdateWorker).to receive(:perform_async).with(project.id, package_name, package.composer_metadatum.version_cache_sha)
+
+        package.destroy!
+      end
+    end
 
-      package.destroy!
+    context 'with feature flag enabled' do
+      it 'does nothing' do
+        expect(::Packages::Composer::CacheUpdateWorker).not_to receive(:perform_async)
+
+        package.destroy!
+      end
     end
   end
 end