diff --git a/lib/stylesheet/manager.rb b/lib/stylesheet/manager.rb
index 8279c3d3f70..3b4b4400a76 100644
--- a/lib/stylesheet/manager.rb
+++ b/lib/stylesheet/manager.rb
@@ -302,13 +302,16 @@ class Stylesheet::Manager
   end
 
   def settings_digest
+    theme_ids = Theme.components_for(@theme_id).dup
+    theme_ids << @theme_id
+
     fields = ThemeField.where(
       name: "yaml",
       type_id: ThemeField.types[:yaml],
-      theme_id: @theme_id
+      theme_id: theme_ids
     ).pluck(:updated_at)
 
-    settings = ThemeSetting.where(theme_id: @theme_id).pluck(:updated_at)
+    settings = ThemeSetting.where(theme_id: theme_ids).pluck(:updated_at)
     timestamps = fields.concat(settings).map!(&:to_f).sort!.join(",")
 
     Digest::SHA1.hexdigest(timestamps)
diff --git a/spec/components/stylesheet/manager_spec.rb b/spec/components/stylesheet/manager_spec.rb
index 541a4696bde..fb6f3fd5dbb 100644
--- a/spec/components/stylesheet/manager_spec.rb
+++ b/spec/components/stylesheet/manager_spec.rb
@@ -65,7 +65,6 @@ describe Stylesheet::Manager do
     end
 
     it 'can correctly account for plugins in digest' do
-
       theme = Fabricate(:theme)
 
       manager = Stylesheet::Manager.new(:desktop_theme, theme.id)
@@ -79,6 +78,26 @@ describe Stylesheet::Manager do
       expect(digest1).not_to eq(digest2)
     end
 
+    it "can correctly account for settings in theme's components" do
+      theme = Fabricate(:theme)
+      child = Fabricate(:theme, component: true)
+      theme.add_child_theme!(child)
+
+      child.set_field(target: :settings, name: :yaml, value: "childcolor: red")
+      child.set_field(target: :common, name: :scss, value: "body {background-color: $childcolor}")
+      child.save!
+
+      manager = Stylesheet::Manager.new(:desktop_theme, theme.id)
+      digest1 = manager.digest
+
+      child.update_setting(:childcolor, "green")
+
+      manager = Stylesheet::Manager.new(:desktop_theme, theme.id)
+      digest2 = manager.digest
+
+      expect(digest1).not_to eq(digest2)
+    end
+
     let(:image) { file_from_fixtures("logo.png") }
     let(:image2) { file_from_fixtures("logo-dev.png") }