diff --git a/django_components/templatetags/__init__.py b/django_components/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/django_components/templatetags/component_tags.py b/django_components/templatetags/component_tags.py
new file mode 100644
index 00000000..108a78f4
--- /dev/null
+++ b/django_components/templatetags/component_tags.py
@@ -0,0 +1,12 @@
+from django import template
+from django_components.component import registry
+
+register = template.Library()
+
+@register.simple_tag(name="component_dependencies")
+def component_dependencies_tag():
+ out = []
+ for comp in registry._registry.values():
+ out.append(comp.render_dependencies())
+
+ return "\n".join(out)
diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py
new file mode 100644
index 00000000..fb8a608f
--- /dev/null
+++ b/tests/test_templatetags.py
@@ -0,0 +1,27 @@
+from textwrap import dedent
+import unittest
+from django.template import Template, Context
+from django_components import component
+from .django_test_setup import * # NOQA
+
+class SimpleComponent(component.Component):
+ def context(self, variable=None):
+ return {
+ "variable": variable,
+ }
+
+ class Media:
+ template = "simple_template.html"
+ css = {"all": "style.css"}
+ js = ("script.js",)
+
+class ComponentTemplateTagTest(unittest.TestCase):
+ def test_component_dependencies(self):
+ component.registry.register(name="testcomponent", component=SimpleComponent)
+
+ template = Template("{% load component_tags %}{% component_dependencies %}")
+ rendered = template.render(Context())
+ self.assertEqual(rendered, dedent("""
+
+
+ """).strip())