Mark a function as a render function — markRenderFunction

v1.8.1|Source: R/shinywrappers.R


[Superseded] Please use createRenderFunction() to support async execution. (Shiny 1.1.0)

  outputArgs = list(),
  cacheHint = "auto",
  cacheWriteHook = NULL,
  cacheReadHook = NULL



A function that renders Shiny UI. Must take a single argument: an output ID.


A function that is suitable for assigning to a Shiny output slot.


A list of arguments to pass to the uiFunc. Render functions should include outputArgs = list() in their own parameter list, and pass through the value to markRenderFunction, to allow app authors to customize outputs. (Currently, this is only supported for dynamically generated UIs, such as those created by Shiny code snippets embedded in R Markdown documents).


One of "auto", FALSE, or some other information to identify this instance for caching using bindCache(). If "auto", it will try to automatically infer caching information. If FALSE, do not allow caching for the object. Some render functions (such as renderPlot) contain internal state that makes them unsuitable for caching.


Used if the render function is passed to bindCache(). This is an optional callback function to invoke before saving the value from the render function to the cache. This function must accept one argument, the value returned from renderFunc, and should return the value to store in the cache.


Used if the render function is passed to bindCache(). This is an optional callback function to invoke after reading a value from the cache (if there is a cache hit). The function will be passed one argument, the value retrieved from the cache. This can be useful when some side effect needs to occur for a render function to behave correctly. For example, some render functions call createWebDependency() so that Shiny is able to serve JS and CSS resources.


The renderFunc function, with annotations.


Should be called by implementers of renderXXX functions in order to mark their return values as Shiny render functions, and to provide a hint to Shiny regarding what UI function is most commonly used with this type of render function. This can be used in R Markdown documents to create complete output widgets out of just the render function.

Note that it is generally preferable to use createRenderFunction() instead of markRenderFunction(). It essentially wraps up the user-provided expression in the transform function passed to it, then passes the resulting function to markRenderFunction(). It also provides a simpler calling interface. There may be cases where markRenderFunction() must be used instead of createRenderFunction() -- for example, when the transform parameter of createRenderFunction() is not flexible enough for your needs.

See also