diff --git a/test/autotests/widgets-browser/state-var/component.js b/test/autotests/widgets-browser/state-var/component.js
new file mode 100644
index 000000000..a560bd338
--- /dev/null
+++ b/test/autotests/widgets-browser/state-var/component.js
@@ -0,0 +1,7 @@
+module.exports = {
+ onInput: function() {
+ this.state = {
+ name: 'Frank'
+ };
+ }
+};
\ No newline at end of file
diff --git a/test/autotests/widgets-browser/state-var/index.marko b/test/autotests/widgets-browser/state-var/index.marko
new file mode 100644
index 000000000..3a23b705a
--- /dev/null
+++ b/test/autotests/widgets-browser/state-var/index.marko
@@ -0,0 +1,3 @@
+
+ Hello ${state.name}!
+
\ No newline at end of file
diff --git a/test/autotests/widgets-browser/state-var/test.js b/test/autotests/widgets-browser/state-var/test.js
new file mode 100644
index 000000000..cc1910414
--- /dev/null
+++ b/test/autotests/widgets-browser/state-var/test.js
@@ -0,0 +1,6 @@
+var expect = require('chai').expect;
+
+module.exports = function(helpers) {
+ var widget = helpers.mount(require('./index'), {});
+ expect(widget.el.innerHTML).to.contain('Frank');
+};
\ No newline at end of file
diff --git a/widgets/taglib/marko.json b/widgets/taglib/marko.json
index 36888af31..cf8dc4d37 100644
--- a/widgets/taglib/marko.json
+++ b/widgets/taglib/marko.json
@@ -130,7 +130,7 @@
"@id": "string",
"@hasDomEvents": "number",
"@body": "string",
- "var": "widget",
+ "vars": ["widget", "state"],
"import-var": {
"_cfg": "data.widgetConfig",
"_state": "data.widgetState",
diff --git a/widgets/taglib/widget-tag.js b/widgets/taglib/widget-tag.js
index d2a1b5498..0d2d32be4 100644
--- a/widgets/taglib/widget-tag.js
+++ b/widgets/taglib/widget-tag.js
@@ -210,7 +210,7 @@ module.exports = function widgetTag(input, out) {
// Only render the widget if it needs to be rerendered
if (shouldRenderBody) {
- input.renderBody(out, widgetDef);
+ input.renderBody(out, widgetDef, state);
markoWidgets.writeDomEventsEl(widgetDef, out);
}