diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE QuasiQuotes #-}
+
 module Main (main) where
 
 import Control.Exception (SomeException, catch)
@@ -8,7 +10,7 @@
 import Data.Sequence qualified as Seq
 import Data.Text (Text, intercalate, pack, unpack)
 import Data.Word (Word32)
-import Desktop.Portal (AddNotificationOptions (..), Client, GetUserInformationOptions (..), GetUserInformationResults (..), NotificationButton (..), NotificationIcon (..), NotificationPriority (..), OpenFileResults (..), Request, addNotificationOptions)
+import Desktop.Portal (AddNotificationOptions (..), Client, GetUserInformationOptions (..), GetUserInformationResults (..), NotificationButton (..), NotificationIcon (..), NotificationPriority (..), OpenFileResults (..), Request, addNotificationOptions, openURIOptions)
 import Desktop.Portal qualified as Portal
 import Desktop.Portal.Settings (ReadAllOptions (..), ReadAllResults)
 import Desktop.Portal.Settings qualified as Settings
@@ -17,6 +19,7 @@
 import Paths_monomer_flatpak_example (getDataFileName)
 import System.Directory (getCurrentDirectory, getHomeDirectory, listDirectory)
 import System.Environment (getEnvironment)
+import Text.URI.QQ (uri)
 import Prelude hiding (unwords)
 
 data AppModel = AppModel
@@ -55,6 +58,7 @@
   | AddNotification
   | ReadSettings
   | ReadSettingsFinish ReadAllResults
+  | OpenURI
   | RequestFailed Text
   | CancelRequest
   | CloseAlert
@@ -103,7 +107,8 @@
                   button "Get User Information" GetUserInformation,
                   button "Open File" OpenFile,
                   button "Add Notification" AddNotification,
-                  button "Read Settings" ReadSettings
+                  button "Read Settings" ReadSettings,
+                  button "Open URI" OpenURI
                 ]
                 `styleBasic` [padding 5],
               hagrid
@@ -263,6 +268,11 @@
     ]
   ReadSettingsFinish results ->
     [Model model {alertContents = AlertSettings results}]
+  OpenURI ->
+    [ Producer $ \emit ->
+        catchRequestErrors emit $ do
+          void (Portal.openURI model.portalClient (openURIOptions [uri|https://www.bbc.com/weather|]))
+    ]
   CancelRequest ->
     let cancel = case model.alertContents of
           AlertRequestingOpenFile res ->
diff --git a/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml b/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
--- a/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
+++ b/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
@@ -23,6 +23,7 @@
   </screenshots>
 
   <releases>
+    <release version="0.0.9.0" date="2023-06-03"/>
     <release version="0.0.8.0" date="2023-05-26"/>
     <release version="0.0.7.0" date="2023-05-03"/>
     <release version="0.0.6.0" date="2023-04-22"/>
diff --git a/monomer-flatpak-example.cabal b/monomer-flatpak-example.cabal
--- a/monomer-flatpak-example.cabal
+++ b/monomer-flatpak-example.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.12
 name:          monomer-flatpak-example
-version:       0.0.8.0
+version:       0.0.9.0
 license:       MIT
 license-file:  LICENSE
 maintainer:    garethdanielsmith@gmail.com
@@ -47,6 +47,7 @@
         dbus <1.3,
         desktop-portal <0.3,
         directory <1.4,
+        modern-uri <0.4,
         monomer <1.6,
         monomer-hagrid <0.4,
         random <1.3,
