diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for reflex-dom-fragment-shader-canvas
 
+## 0.2 -- 2018-10-12
+
+* Provide fragmentShaderCanvas'
+
 ## 0.1.0.2 -- 2018-10-12
 
 * Silently ignore if the webgl context cannot be enabled
diff --git a/Reflex/Dom/FragmentShaderCanvas.hs b/Reflex/Dom/FragmentShaderCanvas.hs
--- a/Reflex/Dom/FragmentShaderCanvas.hs
+++ b/Reflex/Dom/FragmentShaderCanvas.hs
@@ -3,7 +3,11 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE LambdaCase #-}
 {-# OPTIONS_GHC -Wno-unused-do-bind #-}
-module Reflex.Dom.FragmentShaderCanvas (fragmentShaderCanvas, trivialFragmentShader) where
+module Reflex.Dom.FragmentShaderCanvas
+    ( fragmentShaderCanvas
+    , fragmentShaderCanvas'
+    , trivialFragmentShader
+    ) where
 
 import Data.Map (Map)
 import Data.Text as Text (Text, unlines)
@@ -133,7 +137,15 @@
     (Map Text Text) ->
     Dynamic t Text ->
     m (Dynamic t (Maybe Text))
-fragmentShaderCanvas attrs fragmentShaderSource = do
+fragmentShaderCanvas attrs fragmentShaderCanvas
+    = snd <$> fragmentShaderCanvas' attrs fragmentShaderCanvas
+
+fragmentShaderCanvas' ::
+    (MonadWidget t m) =>
+    (Map Text Text) ->
+    Dynamic t Text ->
+    m (El t, Dynamic t (Maybe Text))
+fragmentShaderCanvas' attrs fragmentShaderSource = do
   (canvasEl, _) <- elAttr' "canvas" attrs $ blank
   (eError, reportError) <- newTriggerEvent
   pb <- getPostBuild
@@ -162,4 +174,6 @@
   performEvent $ (<$> eDraw) $ \src -> do
     onOffScreenCanvas domEl $ paintGL (liftIO . reportError) src
 
-  holdDyn Nothing eError
+  dErr <- holdDyn Nothing eError
+  return (canvasEl, dErr)
+
diff --git a/reflex-dom-fragment-shader-canvas.cabal b/reflex-dom-fragment-shader-canvas.cabal
--- a/reflex-dom-fragment-shader-canvas.cabal
+++ b/reflex-dom-fragment-shader-canvas.cabal
@@ -1,5 +1,5 @@
 name:                reflex-dom-fragment-shader-canvas
-version:             0.1.0.2
+version:             0.2
 synopsis:            A reflex-dom widget to draw on a canvas with a fragment shader program
 description:
   This simple reflex-dom widget takes a @Dynamic t Text@ value representing
