MIT licensed and maintained by Michael Snoyman
This version can be pinned in stack with:yesod-,2030


The yesod package groups together the various Yesod related packages into one cohesive whole. This is the “battery loaded” version of Yesod, whereas most of the core code lives in yesod-core.

For the yesod executable, see yesod-bin.

Yesod is fully documented on its website.

Getting Started

Learn more about Yesod on its main website. If you want to get started using Yesod, we strongly recommend the quick start guide, based on the Haskell build tool stack.

Here’s a minimal example!

{-# LANGUAGE OverloadedStrings, QuasiQuotes, TemplateHaskell, TypeFamilies #-}

import Yesod

data App = App -- Put your config, database connection pool, etc. in here.

-- Derive routes and instances for App.
mkYesod "App" [parseRoutes|
/ HomeR GET

instance Yesod App -- Methods in here can be overridden as needed.

-- The handler for the GET request at /, corresponds to HomeR.
getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]

main :: IO ()
main = warp 3000 App

To read about each of the concepts in use above (routing, handlers, linking, JSON), in detail, visit Basics in the Yesod book.


ChangeLog for yesod

  • Support template-haskell- #1769


  • aeson 2

  • Fix compatibility with template-haskell 2.17 #1730

  • Allow yesod-form 1.7

  • widgetFileReload and widgetFileNoReload now use absolute paths via the new globFilePackage Q Exp which can provide absolute templates paths within the project #1691

  • Replace deprecated decodeFile with decodeFileEither. This should have no semantic impact, but silences a deprecation warning. #1658

  • Remove unnecessary deriving of Typeable


  • Upgrade to yesod-core 1.6


  • Fix warnings


  • Reduce dependencies

  • Handle exceptions while writing a file in addStaticContentExternal


  • Switch to Data.Yaml.Config


  • Do not parse string environment variables into numbers/booleans #1061


Provide the Yesod.Default.Config2 module, for use by newer scaffoldings.