Shiny Bslib
Build modern Shiny dashboards and applications using bslib (Bootstrap 5).
Install
npx skills add posit-dev/skills --skill shiny-bslib -g -a claude-code -y- Repository
- posit-dev/skills551
- Category
- Engineering
- Updated
- 7d ago
- License
- MIT
- Context cost
- Mediumabout 2,346 tokens
- Runs scripts
- No, instructions only
What it does
Build modern Shiny dashboards and applications using bslib (Bootstrap 5). Use when creating new Shiny apps, modernizing legacy apps (fluidPage, fluidRow/column, tabsetPanel, wellPanel, shinythemes), or working with bslib page layouts, grid systems, cards, value boxes, navigation, sidebars, filling layouts, theming, accordions, tooltips, popovers, toasts, or bslib inputs. Assumes familiarity with basic Shiny.
Modern Shiny Apps with bslib
Build professional Shiny dashboards using bslib's Bootstrap 5 components and layouts. This skill focuses on modern UI/UX patterns that replace legacy Shiny approaches.
Quick Start
Single-page dashboard:
library(shiny)
library(bslib)
ui <- page_sidebar(
title = "My Dashboard",
theme = bs_theme(version = 5), # "shiny" preset by default
sidebar = sidebar(
selectInput("variable", "Variable", choices = names(mtcars))
),
layout_column_wrap(
width = 1/3,
fill = FALSE,
value_box(title = "Users", value = "1,234", theme = "primary"),
value_box(title = "Revenue", value = "$56K", theme = "success"),
value_box(title = "Growth", value = "+18%", theme = "info")
),
card(
full_screen = TRUE,
card_header("Plot"),
plotOutput("plot")
)
)
server <- function(input, output, session) {
output$plot <- renderPlot({
hist(mtcars[[input$variable]], main = input$variable)
})
}
shinyApp(ui, server)
Multi-page dashboard:
ui <- page_navbar(
title = "Analytics Platform",
theme = bs_theme(version = 5),
nav_panel("Overview", overview_ui),
nav_panel("Analysis", analysis_ui),
nav_panel("Reports", reports_ui)
)
Core Concepts
Page Layouts
page_sidebar()-- Single-page dashboard with sidebar (most common)page_navbar()-- Multi-page app with top navigation barpage_fillable()-- Viewport-filling layout for custom arrangementspage_fluid()-- Scrolling layout for long-form content
See page-layouts.md for detailed guidance.
Grid Systems
layout_column_wrap()-- Uniform grid with auto-wrapping (recommended for most cases)layout_columns()-- 12-column Bootstrap grid with precise control
See grid-layouts.md for detailed guidance.
