diff --git a/apple-touch-icon-120x120.png b/apple-touch-icon-120x120.png
index 23dd4f352..37763f158 100644
Binary files a/apple-touch-icon-120x120.png and b/apple-touch-icon-120x120.png differ
diff --git a/apple-touch-icon-152x152.png b/apple-touch-icon-152x152.png
index dc14b3f97..9dd015d22 100644
Binary files a/apple-touch-icon-152x152.png and b/apple-touch-icon-152x152.png differ
diff --git a/apple-touch-icon-180x180.png b/apple-touch-icon-180x180.png
index b5f609d1a..2cf0fc7d2 100644
Binary files a/apple-touch-icon-180x180.png and b/apple-touch-icon-180x180.png differ
diff --git a/apple-touch-icon-60x60.png b/apple-touch-icon-60x60.png
index 5ee5e90c6..56ce6398c 100644
Binary files a/apple-touch-icon-60x60.png and b/apple-touch-icon-60x60.png differ
diff --git a/apple-touch-icon-76x76.png b/apple-touch-icon-76x76.png
index 81136c75b..484033159 100644
Binary files a/apple-touch-icon-76x76.png and b/apple-touch-icon-76x76.png differ
diff --git a/apple-touch-icon.png b/apple-touch-icon.png
index a72a40afc..193f4fe57 100644
Binary files a/apple-touch-icon.png and b/apple-touch-icon.png differ
diff --git a/favicon-16x16.png b/favicon-16x16.png
index 65bbb654d..9d0199685 100644
Binary files a/favicon-16x16.png and b/favicon-16x16.png differ
diff --git a/favicon-32x32.png b/favicon-32x32.png
index a1afbfdbe..397a5c579 100644
Binary files a/favicon-32x32.png and b/favicon-32x32.png differ
diff --git a/news/index.html b/news/index.html
index 8cadc13e5..14e7580d2 100644
--- a/news/index.html
+++ b/news/index.html
@@ -57,6 +57,7 @@
New features and improvements
Added an console that shows some errors in the browser. Also provide better error messages for duplicate input and output bindings. (#3931)
Added a new ExtendedTask abstraction, for long-running asynchronous tasks that you don’t want to block the rest of the app, or even the rest of the session. Designed to be used with new bslib::input_task_button() and bslib::bind_task_button() functions that help give user feedback and prevent extra button clicks. (#3958)
+Added a shiny.error.unhandled option that can be set to a function that will be called when an unhandled error occurs in a Shiny app. Note that this handler doesn’t stop the error or prevent the session from closing, but it can be used to log the error or to clean up session-specific resources. (thanks @JohnCoene, #3989)
Bug fixes
diff --git a/pkgdown.yml b/pkgdown.yml
index a526a2d12..a1d1d6160 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -2,5 +2,5 @@ pandoc: 3.1.2
pkgdown: 2.0.7
pkgdown_sha: ~
articles: {}
-last_built: 2024-03-08T15:18Z
+last_built: 2024-03-08T19:39Z
diff --git a/reference/icon.html b/reference/icon.html
index 2556edb10..b23c1290b 100644
--- a/reference/icon.html
+++ b/reference/icon.html
@@ -119,21 +119,21 @@ and
#> <div class="navbar-header">
#> <span class="navbar-brand">App Title</span>
#> </div>
-#> <ul class="nav navbar-nav nav-underline" data-tabsetid="1335">
+#> <ul class="nav navbar-nav nav-underline" data-tabsetid="7686">
#> <li class="active">
-#> <a href="#tab-1335-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">
+#> <a href="#tab-7686-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">
#> <i aria-label="bar-chart-o icon" class="far fa-bar-chart-o fa-fw" role="presentation"></i>
#> Plot
#> </a>
#> </li>
#> <li>
-#> <a href="#tab-1335-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">
+#> <a href="#tab-7686-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">
#> <i aria-label="rectangle-list icon" class="far fa-rectangle-list fa-fw" role="presentation"></i>
#> Summary
#> </a>
#> </li>
#> <li>
-#> <a href="#tab-1335-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">
+#> <a href="#tab-7686-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">
#> <i aria-label="table icon" class="fas fa-table fa-fw" role="presentation"></i>
#> Table
#> </a>
@@ -142,10 +142,10 @@ and #> </div>
#> </nav>
#> <div class="container-fluid">
-#> <div class="tab-content" data-tabsetid="1335">
-#> <div class="tab-pane active" data-icon-class="far fa-bar-chart-o fa-fw" data-value="Plot" id="tab-1335-1"></div>
-#> <div class="tab-pane" data-value="Summary" data-icon-class="far fa-rectangle-list fa-fw" id="tab-1335-2"></div>
-#> <div class="tab-pane" data-value="Table" data-icon-class="fas fa-table fa-fw" id="tab-1335-3"></div>
+#> <div class="tab-content" data-tabsetid="7686">
+#> <div class="tab-pane active" data-icon-class="far fa-bar-chart-o fa-fw" data-value="Plot" id="tab-7686-1"></div>
+#> <div class="tab-pane" data-value="Summary" data-icon-class="far fa-rectangle-list fa-fw" id="tab-7686-2"></div>
+#> <div class="tab-pane" data-value="Table" data-icon-class="fas fa-table fa-fw" id="tab-7686-3"></div>
#> </div>
#> </div>
#> </body>
diff --git a/reference/navbarPage.html b/reference/navbarPage.html
index 70704db12..a5010875a 100644
--- a/reference/navbarPage.html
+++ b/reference/navbarPage.html
@@ -207,24 +207,24 @@ example below).
#> <div class="navbar-header">
#> <span class="navbar-brand">App Title</span>
#> </div>
-#> <ul class="nav navbar-nav nav-underline" data-tabsetid="8924">
+#> <ul class="nav navbar-nav nav-underline" data-tabsetid="3377">
#> <li class="active">
-#> <a href="#tab-8924-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
+#> <a href="#tab-3377-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
#> </li>
#> <li>
-#> <a href="#tab-8924-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
+#> <a href="#tab-3377-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
#> </li>
#> <li>
-#> <a href="#tab-8924-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
+#> <a href="#tab-3377-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
#> </li>
#> </ul>
#> </div>
#> </nav>
#> <div class="container-fluid">
-#> <div class="tab-content" data-tabsetid="8924">
-#> <div class="tab-pane active" data-value="Plot" id="tab-8924-1"></div>
-#> <div class="tab-pane" data-value="Summary" id="tab-8924-2"></div>
-#> <div class="tab-pane" data-value="Table" id="tab-8924-3"></div>
+#> <div class="tab-content" data-tabsetid="3377">
+#> <div class="tab-pane active" data-value="Plot" id="tab-3377-1"></div>
+#> <div class="tab-pane" data-value="Summary" id="tab-3377-2"></div>
+#> <div class="tab-pane" data-value="Table" id="tab-3377-3"></div>
#> </div>
#> </div>
#> </body>
@@ -244,23 +244,23 @@ example below).
#> <div class="navbar-header">
#> <span class="navbar-brand">App Title</span>
#> </div>
-#> <ul class="nav navbar-nav nav-underline" data-tabsetid="6166">
+#> <ul class="nav navbar-nav nav-underline" data-tabsetid="2814">
#> <li class="active">
-#> <a href="#tab-6166-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
+#> <a href="#tab-2814-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
#> </li>
#> <li class="dropdown">
#> <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-bs-toggle="dropdown" data-value="More">
#> More
#> <b class="caret"></b>
#> </a>
-#> <ul class="dropdown-menu" data-tabsetid="6253">
+#> <ul class="dropdown-menu" data-tabsetid="6171">
#> <li>
-#> <a href="#tab-6253-1" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
+#> <a href="#tab-6171-1" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
#> </li>
#> <li class="divider"></li>
#> <li class="dropdown-header">Section header</li>
#> <li>
-#> <a href="#tab-6253-4" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
+#> <a href="#tab-6171-4" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
#> </li>
#> </ul>
#> </li>
@@ -268,10 +268,10 @@ example below).
#> </div>
#> </nav>
#> <div class="container-fluid">
-#> <div class="tab-content" data-tabsetid="6166">
-#> <div class="tab-pane active" data-value="Plot" id="tab-6166-1"></div>
-#> <div class="tab-pane" data-value="Summary" id="tab-6253-1"></div>
-#> <div class="tab-pane" data-value="Table" id="tab-6253-4"></div>
+#> <div class="tab-content" data-tabsetid="2814">
+#> <div class="tab-pane active" data-value="Plot" id="tab-2814-1"></div>
+#> <div class="tab-pane" data-value="Summary" id="tab-6171-1"></div>
+#> <div class="tab-pane" data-value="Table" id="tab-6171-4"></div>
#> </div>
#> </div>
#> </body>
diff --git a/reference/navlistPanel.html b/reference/navlistPanel.html
index 33628e5ca..c7f5a466f 100644
--- a/reference/navlistPanel.html
+++ b/reference/navlistPanel.html
@@ -142,24 +142,24 @@ doesn't support separators.
#> <h2>Application Title</h2>
#> <div class="row">
#> <div class="col-sm-4 well">
-#> <ul class="nav nav-pills nav-stacked" data-tabsetid="6176">
+#> <ul class="nav nav-pills nav-stacked" data-tabsetid="2932">
#> <li class="navbar-brand">Header</li>
#> <li class="active">
-#> <a href="#tab-6176-2" data-toggle="tab" data-bs-toggle="tab" data-value="First">First</a>
+#> <a href="#tab-2932-2" data-toggle="tab" data-bs-toggle="tab" data-value="First">First</a>
#> </li>
#> <li>
-#> <a href="#tab-6176-3" data-toggle="tab" data-bs-toggle="tab" data-value="Second">Second</a>
+#> <a href="#tab-2932-3" data-toggle="tab" data-bs-toggle="tab" data-value="Second">Second</a>
#> </li>
#> <li>
-#> <a href="#tab-6176-4" data-toggle="tab" data-bs-toggle="tab" data-value="Third">Third</a>
+#> <a href="#tab-2932-4" data-toggle="tab" data-bs-toggle="tab" data-value="Third">Third</a>
#> </li>
#> </ul>
#> </div>
#> <div class="col-sm-8">
-#> <div class="tab-content" data-tabsetid="6176">
-#> <div class="tab-pane active" data-value="First" id="tab-6176-2"></div>
-#> <div class="tab-pane" data-value="Second" id="tab-6176-3"></div>
-#> <div class="tab-pane" data-value="Third" id="tab-6176-4"></div>
+#> <div class="tab-content" data-tabsetid="2932">
+#> <div class="tab-pane active" data-value="First" id="tab-2932-2"></div>
+#> <div class="tab-pane" data-value="Second" id="tab-2932-3"></div>
+#> <div class="tab-pane" data-value="Third" id="tab-2932-4"></div>
#> </div>
#> </div>
#> </div>
diff --git a/reference/reactive.html b/reference/reactive.html
index 39f3d73c5..e51eef521 100644
--- a/reference/reactive.html
+++ b/reference/reactive.html
@@ -145,7 +145,7 @@ more information about reactive expressions.
isolate(reactiveC())
#> <quosure>
#> expr: ^values$A + 2
-#> env: 0x56110f94d448
+#> env: 0x558e238be818
# Instead, the quosure should be `rlang::inject()`ed
reactiveD <- rlang::inject(reactive(!!myquo))
diff --git a/reference/reactivePoll.html b/reference/reactivePoll.html
index 906daa23a..3255b878c 100644
--- a/reference/reactivePoll.html
+++ b/reference/reactivePoll.html
@@ -160,7 +160,7 @@ values and reactive expressions.
#> data()
#> })
#> }
-#> <environment: 0x56110bcf29e8>
+#> <environment: 0x558e1f7f1d88>
diff --git a/reference/shinyOptions.html b/reference/shinyOptions.html
index 70544b4ad..e50f6df5d 100644
--- a/reference/shinyOptions.html
+++ b/reference/shinyOptions.html
@@ -126,6 +126,14 @@ deprecated functions in Shiny will be printed. See
occurs. For example, options(shiny.error=recover) will result a
the debugger prompt when an error occurs.
+shiny.error.unhandled (defaults to NULL)
+A function that will be
+called when an unhandled error that will stop the app session occurs. This
+function should take the error condition object as its first argument.
+Note that this function will not stop the error or prevent the session
+from ending, but it will provide you with an opportunity to log the error
+or clean up resources before the session is closed.
+
shiny.fullstacktrace (defaults to FALSE)
Controls whether "pretty" (FALSE) or full
stack traces (TRUE) are dumped to the console when errors occur during Shiny app execution.
diff --git a/reference/tabPanel.html b/reference/tabPanel.html
index 6d5868430..13c0af6c4 100644
--- a/reference/tabPanel.html
+++ b/reference/tabPanel.html
@@ -112,25 +112,25 @@ This function should be used within tabsetPanel(type = "hidden"). S
)
#> <div class="col-sm-8" role="main">
#> <div class="tabbable">
-#> <ul class="nav nav-tabs" data-tabsetid="8843">
+#> <ul class="nav nav-tabs" data-tabsetid="8082">
#> <li class="active">
-#> <a href="#tab-8843-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
+#> <a href="#tab-8082-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
#> </li>
#> <li>
-#> <a href="#tab-8843-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
+#> <a href="#tab-8082-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
#> </li>
#> <li>
-#> <a href="#tab-8843-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
+#> <a href="#tab-8082-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
#> </li>
#> </ul>
-#> <div class="tab-content" data-tabsetid="8843">
-#> <div class="tab-pane active" data-value="Plot" id="tab-8843-1">
+#> <div class="tab-content" data-tabsetid="8082">
+#> <div class="tab-pane active" data-value="Plot" id="tab-8082-1">
#> <div class="shiny-plot-output html-fill-item" id="plot" style="width:100%;height:400px;"></div>
#> </div>
-#> <div class="tab-pane" data-value="Summary" id="tab-8843-2">
+#> <div class="tab-pane" data-value="Summary" id="tab-8082-2">
#> <pre class="shiny-text-output noplaceholder" id="summary"></pre>
#> </div>
-#> <div class="tab-pane" data-value="Table" id="tab-8843-3">
+#> <div class="tab-pane" data-value="Table" id="tab-8082-3">
#> <div id="table" class="shiny-html-output"></div>
#> </div>
#> </div>
diff --git a/reference/tabsetPanel.html b/reference/tabsetPanel.html
index f62ef1979..dbd9f5d29 100644
--- a/reference/tabsetPanel.html
+++ b/reference/tabsetPanel.html
@@ -137,25 +137,25 @@ tabPanels
)
#> <div class="col-sm-8" role="main">
#> <div class="tabbable">
-#> <ul class="nav nav-tabs" data-tabsetid="4289">
+#> <ul class="nav nav-tabs" data-tabsetid="4381">
#> <li class="active">
-#> <a href="#tab-4289-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
+#> <a href="#tab-4381-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
#> </li>
#> <li>
-#> <a href="#tab-4289-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
+#> <a href="#tab-4381-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
#> </li>
#> <li>
-#> <a href="#tab-4289-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
+#> <a href="#tab-4381-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
#> </li>
#> </ul>
-#> <div class="tab-content" data-tabsetid="4289">
-#> <div class="tab-pane active" data-value="Plot" id="tab-4289-1">
+#> <div class="tab-content" data-tabsetid="4381">
+#> <div class="tab-pane active" data-value="Plot" id="tab-4381-1">
#> <div class="shiny-plot-output html-fill-item" id="plot" style="width:100%;height:400px;"></div>
#> </div>
-#> <div class="tab-pane" data-value="Summary" id="tab-4289-2">
+#> <div class="tab-pane" data-value="Summary" id="tab-4381-2">
#> <pre class="shiny-text-output noplaceholder" id="summary"></pre>
#> </div>
-#> <div class="tab-pane" data-value="Table" id="tab-4289-3">
+#> <div class="tab-pane" data-value="Table" id="tab-4381-3">
#> <div id="table" class="shiny-html-output"></div>
#> </div>
#> </div>