diff --git a/elements/lazy-template/lazy-template-examples.js b/elements/lazy-template/lazy-template-examples.js
new file mode 100644
index 00000000..c95e99ac
--- /dev/null
+++ b/elements/lazy-template/lazy-template-examples.js
@@ -0,0 +1,37 @@
+export default {
+ element: 'lazy-template',
+ examples: {
+ 'Load On Page Load': {
+ render () {
+ return `
+
+ `;
+ },
+ },
+ 'Load On In View': {
+ render () {
+ return `
+
+
SCROLL DOWN TO LOAD STUFF
+
+
+ `;
+ },
+ },
+ },
+};
diff --git a/elements/lazy-template/lazy-template.js b/elements/lazy-template/lazy-template.js
new file mode 100644
index 00000000..e623e1e7
--- /dev/null
+++ b/elements/lazy-template/lazy-template.js
@@ -0,0 +1,68 @@
+import { registerElement } from 'bulbs-elements/register';
+import { InViewMonitor } from 'bulbs-elements/util';
+import invariant from 'invariant';
+import './lazy-template.scss';
+
+function BulbsHTMLScriptElement () {}
+BulbsHTMLScriptElement.prototype = HTMLScriptElement.prototype;
+
+class LazyTemplate extends BulbsHTMLScriptElement {
+ get loadOn () {
+ return this.getAttribute('load-on');
+ }
+
+ attachedCallback () {
+ invariant(this.hasAttribute('load-on'),
+ '