diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,5 @@
+* 0.4.0
+    - Use `Vector` instead of `[]` for child widgets
 * 0.3.0
     - Add user documentation
     - Use record for `BoxChild` properties (breaking change!)
diff --git a/bench/Benchmark.hs b/bench/Benchmark.hs
--- a/bench/Benchmark.hs
+++ b/bench/Benchmark.hs
@@ -8,6 +8,8 @@
 import           Criterion.Main
 import           Data.Functor             ((<&>))
 import           Data.Text
+import           Data.Vector              (Vector)
+import qualified Data.Vector              as Vector
 import qualified GI.Gdk                   as Gdk
 import qualified GI.GLib.Constants        as GLib
 
@@ -16,7 +18,7 @@
 import           GI.Gtk.Declarative
 import           GI.Gtk.Declarative.State
 
-testView :: [Int] -> Widget ()
+testView :: Vector Int -> Widget ()
 testView ns = bin Window [] $ container Box [] $ ns <&> \n ->
   BoxChild defaultBoxChildProperties { expand  = True
                                      , fill    = True
@@ -37,7 +39,7 @@
 main :: IO ()
 main = do
   _ <- Gtk.init Nothing
-  let initialView = testView [1 .. 100]
+  let initialView = testView (Vector.enumFromN 1 100)
   initialState <- create initialView
   #showAll =<< someStateWidget initialState
   _ <- forkOS $ do
@@ -49,7 +51,7 @@
             void $ testPatch s1 initialView initialView
           , bench "Modify (diff)" . whnfIO . replicateM_ 10 $ do
             s1 <- testPatch initialState initialView initialView
-            void $ testPatch s1 initialView (testView [2 .. 101])
+            void $ testPatch s1 initialView (testView (Vector.enumFromN 2 101))
           ]
       ]
     Gtk.mainQuit
diff --git a/gi-gtk-declarative.cabal b/gi-gtk-declarative.cabal
--- a/gi-gtk-declarative.cabal
+++ b/gi-gtk-declarative.cabal
@@ -1,5 +1,5 @@
 name:                 gi-gtk-declarative
-version:              0.3.0
+version:              0.4.0
 synopsis:             Declarative GTK+ programming in Haskell
 description:          A declarative programming model for GTK+ user
                       interfaces, implementing support for various widgets
@@ -8,14 +8,14 @@
                       a reusable library for multiple application architectures
                       and styles.
 
-                      See [the project README](https://github.com/owickstrom/gi-gtk-declarative#readme)
-                      for more information.
+                      See [the project website](https://owickstrom.github.io/gi-gtk-declarative/)
+                      for user guides and more information.
 license:              MPL-2.0
 license-file:         LICENSE
 author:               Oskar Wickström
 maintainer:           oskar.wickstrom@gmail.com
 copyright:            Oskar Wickström
-homepage:             https://github.com/owickstrom/gi-gtk-declarative
+homepage:             https://owickstrom.github.io/gi-gtk-declarative/
 bug-reports:          https://github.com/owickstrom/gi-gtk-declarative/issues
 category:             Graphics
 build-type:           Simple
@@ -77,5 +77,6 @@
                    , gi-gtk-declarative
                    , random
                    , text
+                   , vector
   ghc-options:       -Wall -O2 -rtsopts -with-rtsopts=-N -threaded
   default-language:  Haskell2010
diff --git a/src/GI/Gtk/Declarative/Container.hs b/src/GI/Gtk/Declarative/Container.hs
--- a/src/GI/Gtk/Declarative/Container.hs
+++ b/src/GI/Gtk/Declarative/Container.hs
@@ -1,17 +1,16 @@
 {-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}
-{-# LANGUAGE DataKinds              #-}
-{-# LANGUAGE DefaultSignatures      #-}
-{-# LANGUAGE DeriveFunctor          #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE GADTs                  #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE OverloadedLabels       #-}
-{-# LANGUAGE ScopedTypeVariables    #-}
-{-# LANGUAGE TypeApplications       #-}
-{-# LANGUAGE TypeFamilies           #-}
-{-# LANGUAGE TypeOperators          #-}
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE DefaultSignatures     #-}
+{-# LANGUAGE DeriveFunctor         #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE GADTs                 #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedLabels      #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE TypeOperators         #-}
 
 -- | Implementations for common "Gtk.Container".
 
diff --git a/src/GI/Gtk/Declarative/Container/Box.hs b/src/GI/Gtk/Declarative/Container/Box.hs
--- a/src/GI/Gtk/Declarative/Container/Box.hs
+++ b/src/GI/Gtk/Declarative/Container/Box.hs
@@ -19,6 +19,7 @@
   )
 where
 
+import           Data.Vector                        (Vector)
 import           Data.Word                          (Word32)
 import qualified GI.Gtk                             as Gtk
 
@@ -54,4 +55,4 @@
 instance EventSource BoxChild where
   subscribe BoxChild{..} = subscribe child
 
-instance ToChildren Gtk.Box [] BoxChild
+instance ToChildren Gtk.Box Vector BoxChild
diff --git a/src/GI/Gtk/Declarative/Container/Class.hs b/src/GI/Gtk/Declarative/Container/Class.hs
--- a/src/GI/Gtk/Declarative/Container/Class.hs
+++ b/src/GI/Gtk/Declarative/Container/Class.hs
@@ -1,15 +1,15 @@
-{-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE DefaultSignatures      #-}
 {-# LANGUAGE DeriveFunctor          #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
 {-# LANGUAGE TypeFamilies           #-}
 
 -- | Shared interfaces for containers.
 module GI.Gtk.Declarative.Container.Class where
 
-import qualified GI.Gtk                           as Gtk
-import           Data.Vector                             (Vector)
-import qualified Data.Vector                             as Vector
-import           Data.Int                         (Int32)
+import           Data.Int    (Int32)
+import           Data.Vector (Vector)
+import qualified GI.Gtk      as Gtk
 
 -- | Describes supported GTK+ containers and their specialized APIs for
 -- appending and replacing child widgets.
@@ -37,5 +37,5 @@
 class ToChildren widget parent child | widget -> parent, widget -> child where
   toChildren :: (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event
 
-  default toChildren :: parent ~ [] => (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event
-  toChildren _ = Children . Vector.fromList
+  default toChildren :: parent ~ Vector => (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event
+  toChildren _ = Children
diff --git a/src/GI/Gtk/Declarative/Container/ListBox.hs b/src/GI/Gtk/Declarative/Container/ListBox.hs
--- a/src/GI/Gtk/Declarative/Container/ListBox.hs
+++ b/src/GI/Gtk/Declarative/Container/ListBox.hs
@@ -5,10 +5,11 @@
 
 module GI.Gtk.Declarative.Container.ListBox where
 
+import           Data.Vector                        (Vector)
 import qualified GI.Gtk                             as Gtk
 
 import           GI.Gtk.Declarative.Bin
 import           GI.Gtk.Declarative.Container.Class
 import           GI.Gtk.Declarative.Widget
 
-instance ToChildren Gtk.ListBox [] (Bin Gtk.ListBoxRow Widget)
+instance ToChildren Gtk.ListBox Vector (Bin Gtk.ListBoxRow Widget)
diff --git a/src/GI/Gtk/Declarative/Container/MenuItem.hs b/src/GI/Gtk/Declarative/Container/MenuItem.hs
--- a/src/GI/Gtk/Declarative/Container/MenuItem.hs
+++ b/src/GI/Gtk/Declarative/Container/MenuItem.hs
@@ -46,11 +46,11 @@
 
 instance Functor MenuItem where
   fmap f (MenuItem item)          = MenuItem (fmap f item)
-  fmap f (SubMenu label subMenu')=SubMenu label (fmap f subMenu')
+  fmap f (SubMenu label subMenu') = SubMenu label (fmap f subMenu')
 
-instance ToChildren Gtk.Menu [] MenuItem
+instance ToChildren Gtk.Menu Vector MenuItem
 
-instance ToChildren Gtk.MenuBar [] MenuItem
+instance ToChildren Gtk.MenuBar Vector MenuItem
 
 -- | Construct a single menu item for a 'Gtk.Menu'.
 menuItem
@@ -73,7 +73,7 @@
 subMenu
   :: (Typeable event)
   => Text
-  -> [MenuItem event]
+  -> Vector (MenuItem event)
   -> MenuItem event
 subMenu label = SubMenu label . container Gtk.Menu mempty
 
