← Back to all sparks
H

httpuv

DEVOPS
Velocity0.0

Low-level HTTP and WebSocket server for R built on libuv

httpuv ships almost nothing, which is what you want from the web server under Shiny

web-serverwebsocketsshinymaintenancetoolchain
Current state
httpuv is the C++ HTTP and WebSocket server that Shiny runs on. Across this window it added exactly one user-facing function - runStaticServer() for serving a directory - and spent every other release on race conditions, compiler and linker changes, CRAN check warnings, and mime type table updates.
Where it's heading
There is no direction here in the usual sense, and that is the honest read: the package is a stable foundation whose releases are triggered by the toolchain moving, by R-devel warnings, or by a threading bug surfacing under load. The one recurring theme with substance is connection reliability - WebSocket keepalive pings, race conditions in the I/O thread - which is what actually breaks Shiny apps in production.
Prediction
Expect continued small releases tracking Rtools, R-devel and mime data, with any substantive change most likely coming from a threading or WebSocket issue reported by Shiny users rather than from planned work.

Recent moves

  1. 1y ago

    Serves .wasm as application/wasm; mime table refreshed

    A mime type entry for WebAssembly files and a refresh of the lookup table from the mime package. Small, though it is what lets a Shiny or static server host wasm assets without extra configuration.

    View source ↗
  2. 2y ago

    runStaticServer() survives a failed browser launch

    Serving no longer fails outright when the requested browser cannot be opened, plus more accurate port-availability testing on FreeBSD. Cleanup on the function added in 1.6.12.

    View source ↗
  3. 2y ago

    Rtools build file update and macOS zlib linking fix

    Build-system only: an updated Makevars for an upcoming Rtools release and a zlib linking fix on macOS. A release that exists because the toolchain moved.

    View source ↗
  4. 2y ago

    Fixes an R CMD check warning on error format strings

    A single fix for an R-devel check warning about error format strings. Typical of how often this package ships purely to stay compliant.

    View source ↗
  5. 2y ago

    runStaticServer() serves a directory of static files

    The only new capability in this entire window: a direct interface for serving a directory of static files, without constructing an app object. It also drops a compatibility workaround for Shiny versions older than 1.0.6.

    View source ↗
  6. 3y ago

    Fixes a race condition introduced in 1.6.10

    A four-day turnaround on a race condition introduced by the previous release's WebSocket keepalive work, plus CRAN-requested hygiene. Threading bugs are the one category here that reaches users.

    View source ↗