diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,1 +1,3 @@
+__1.4.0.8__ Updated postgres-fay scaffolding for yesod-fay 0.7.0
+
 __1.4.0.7__ Fix a bug in `yesod devel` when cabal config has `tests: True` #864
diff --git a/hsfiles/postgres-fay.hsfiles b/hsfiles/postgres-fay.hsfiles
--- a/hsfiles/postgres-fay.hsfiles
+++ b/hsfiles/postgres-fay.hsfiles
@@ -13,11 +13,13 @@
 dist*
 static/tmp/
 static/combined/
+static/fay-runtime.js
+static/faygen*.js
 config/client_session_key.aes
 *.hi
 *.o
 *.sqlite3
-fay/Language/Fay/Yesod.hs
+fay/Fay/Yesod.hs
 .hsenv*
 cabal-dev/
 yesod-devel/
@@ -469,8 +471,8 @@
                  , yesod-auth                    >= 1.4.0      && < 1.5
                  , yesod-static                  >= 1.4.0      && < 1.5
                  , yesod-form                    >= 1.4.0      && < 1.5
-                 , yesod-fay                     >= 0.5.0.1
-                 , fay                           >= 0.16
+                 , yesod-fay                     >= 0.7        && < 0.8
+                 , fay                           >= 0.21.2.1   && < 0.22
                  , bytestring                    >= 0.9        && < 0.11
                  , text                          >= 0.11       && < 2.0
                  , persistent                    >= 2.0        && < 2.2
@@ -619,6 +621,7 @@
         { yfsSeparateRuntime = Just ("static", staticR)
         -- , yfsPostProcess = readProcess "java" ["-jar", "closure-compiler.jar"]
         , yfsExternal = Just ("static", staticR)
+        , yfsPackages = ["fay-dom"]
         }
 
 data Extra = Extra
@@ -1069,55 +1072,53 @@
 
 import Prelude
 import Data.Data
-import Language.Fay.Yesod
-#ifdef FAY
-import FFI
-#else
---import Language.Fay.FFI
-#endif
+import Fay.Yesod
 
 data Command = GetFib Int (Returns Int)
-    deriving (Read, Typeable, Data)
+    deriving (Typeable, Data)
 
 
-{-# START_FILE fay/Home.hs #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE EmptyDataDecls    #-}
-module Home where
-
-import Prelude
-import Fay.FFI
-import Language.Fay.Yesod
-import SharedTypes
+{-# START_FILE fay/FFIExample.hs #-}
+-- | Example of defining FFI functions.
+--
+-- The `ffi' method is currently incompatible with 'RebindableSyntax',
+-- so these are defined in another module.
 
-data Element
+module FFIExample where
 
-getElementById :: String -> Fay Element
-getElementById = ffi "document.getElementById(%1)"
+import Data.Text (Text)
+import DOM
+import FFI
 
-getAttribute :: String -> Element -> Fay String
-getAttribute = ffi "%2[%1]"
+onKeyUp :: Element -> Fay () -> Fay ()
+onKeyUp = ffi "%1.onkeyup=%2"
 
-setInnerHTML :: Element -> String -> Fay ()
+setInnerHTML :: Element -> Text -> Fay ()
 setInnerHTML = ffi "%1.innerHTML=%2"
 
-onKeyUp :: Element -> Fay () -> Fay ()
-onKeyUp = ffi "%1.onkeyup=%2"
+{-# START_FILE fay/Home.hs #-}
+{-# LANGUAGE RebindableSyntax #-}
+{-# LANGUAGE OverloadedStrings #-}
 
-alert :: String -> Fay ()
-alert = ffi "window.alert(%1)"
+module Home where
 
-parseInt :: String -> Fay Int
-parseInt = ffi "window.parseInt(%1, 10)"
+import           FFIExample
 
+import           DOM
+import           Data.Text (fromString)
+import qualified Data.Text as T
+import           Fay.Yesod
+import           Prelude
+import           SharedTypes
+
 main :: Fay ()
 main = do
     input <- getElementById "fibindex"
     result <- getElementById "fibresult"
     onKeyUp input $ do
-        indexS <- getAttribute "value" input
+        indexS <- getValue input
         index <- parseInt indexS
-        call (GetFib index) $ setInnerHTML result . show
+        call (GetFib index) $ setInnerHTML result . T.pack . show
 
 {-# START_FILE messages/en.msg #-}
 Hello: Hello
diff --git a/yesod-bin.cabal b/yesod-bin.cabal
--- a/yesod-bin.cabal
+++ b/yesod-bin.cabal
@@ -1,5 +1,5 @@
 name:            yesod-bin
-version:         1.4.0.7
+version:         1.4.0.8
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
