{"id":28429728,"url":"https://github.com/appsilon/shiny.emptystate","last_synced_at":"2026-03-27T04:30:24.231Z","repository":{"id":77567390,"uuid":"531468267","full_name":"Appsilon/shiny.emptystate","owner":"Appsilon","description":"Empty state components for Shiny","archived":false,"fork":false,"pushed_at":"2024-05-21T20:06:01.000Z","size":2476,"stargazers_count":28,"open_issues_count":6,"forks_count":2,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-02-22T13:57:44.384Z","etag":null,"topics":["empty-state","r","r-shiny","rhinoverse"],"latest_commit_sha":null,"homepage":"https://appsilon.github.io/shiny.emptystate/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Appsilon.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-01T10:24:48.000Z","updated_at":"2025-11-10T20:19:22.000Z","dependencies_parsed_at":"2024-02-19T18:39:14.568Z","dependency_job_id":"9f1fce6a-f95d-47b1-b066-c4a0bdf9c2db","html_url":"https://github.com/Appsilon/shiny.emptystate","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Appsilon/shiny.emptystate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Appsilon%2Fshiny.emptystate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Appsilon%2Fshiny.emptystate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Appsilon%2Fshiny.emptystate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Appsilon%2Fshiny.emptystate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Appsilon","download_url":"https://codeload.github.com/Appsilon/shiny.emptystate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Appsilon%2Fshiny.emptystate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31019237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T03:51:26.850Z","status":"ssl_error","status_checked_at":"2026-03-27T03:51:09.693Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["empty-state","r","r-shiny","rhinoverse"],"created_at":"2025-06-05T13:39:01.322Z","updated_at":"2026-03-27T04:30:24.207Z","avatar_url":"https://github.com/Appsilon.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shiny.emptystate \u003ca href=\"https://appsilon.github.io/shiny.emptystate/\"\u003e\u003cimg src=\"man/figures/logo.png\" align=\"right\" alt=\"shiny.emptystate logo\" style=\"height: 140px;\"\u003e\u003c/a\u003e\n\n\u003e _Empty state components for Shiny._\n\n\u003c!-- badges: start --\u003e\n[![CRAN status](https://www.r-pkg.org/badges/version/shiny.emptystate)](https://cran.r-project.org/package=shiny.emptystate)\n![R-CMD-check](https://github.com/Appsilon/shiny.emptystate/workflows/R-CMD-check/badge.svg)\n[![codecov](https://codecov.io/gh/Appsilon/shiny.emptystate/branch/main/graph/badge.svg)](https://app.codecov.io/gh/Appsilon/shiny.emptystate/)\n\u003c!-- badges: end --\u003e\n\n\n[Empty states](https://www.nngroup.com/articles/empty-state-interface-design/) are situations where there is no data to display to the user. A good example is an empty shopping cart on an e-commerce site.\n\nIn the context of dashboards you can encounter empty states when:\n\n1. Before displaying any charts a user needs to upload a file containing the required data\n2. Users apply different filters to a dataset and there is no row matching the configured filters\n\n![](./man/figures/file_upload_empty_state_example.gif)\n\nThe goal of this package is to make it easy to handle empty states in your shiny applications.\n\n## How to install?\n\nStable version:\n\n```r\ninstall.packages(\"shiny.emptystate\")\n```\n\nDevelopment version:\n\n```r\nremotes::install_github(\"Appsilon/shiny.emptystate\")\n```\n\n## How to use it?\n\nTo start using `shiny.emptystate`, you need to:\n\n1. Include `use_empty_state()` in your UI definition\n2. Define the content you want to display as an empty state (e.g. a message)\n3. Create an instance of the `EmptyStateManager` class where you define by the `id` which element of your app should be covered with the empty state content\n4. Use its `show` and `hide` methods to show or hide the empty state content depending on your custom logic (e.g. `nrow(data_to_display) \u003e 0`)\n\n```r\nlibrary(shiny)\nlibrary(shiny.emptystate)\nlibrary(reactable)\n\nui \u003c- fluidPage(\n  use_empty_state(),\n  actionButton(\"show\", \"Show empty state!\"),\n  actionButton(\"hide\", \"Hide empty state!\"),\n  reactableOutput(\"my_table\")\n)\n\nserver \u003c- function(input, output, session) {\n  empty_state_content \u003c- div(\n    \"This is  example empty state content\"\n  )\n\n  empty_state_manager \u003c- EmptyStateManager$new(\n    id = \"my_table\",\n    html_content = empty_state_content\n  )\n\n  observeEvent(input$show, {\n    empty_state_manager$show()\n  })\n\n  observeEvent(input$hide, {\n    empty_state_manager$hide()\n  })\n\n  output$my_table \u003c- reactable::renderReactable({\n    reactable(iris)\n  })\n}\n\nshinyApp(ui, server)\n```\n\nFor more examples of empty state components, please see this [demo](https://connect.appsilon.com/shiny-emptystate-demo/).\n\n## How to contribute?\n\nIf you want to contribute to this project please submit a regular PR, once you're done with new feature or bug fix.\n\nReporting a bug is also helpful - please use [GitHub issues](https://github.com/Appsilon/shiny.emptystate/issues) and describe your problem as detailed as possible.\n\n## Appsilon\n\n\u003cimg src=\"https://avatars0.githubusercontent.com/u/6096772\" align=\"right\" alt=\"\" width=\"6%\" /\u003e\n\nAppsilon is a **Posit (formerly RStudio) Full Service Certified Partner**.\u003cbr/\u003e\nLearn more at [appsilon.com](https://appsilon.com).\n\nGet in touch [opensource@appsilon.com](mailto:opensource@appsilon.com)\n\nExplore the [Rhinoverse](https://rhinoverse.dev) - a family of R packages built around [Rhino](https://appsilon.github.io/rhino/)!\n\n\u003ca href = \"https://appsilon.com/careers/\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Appsilon/website-cdn/gh-pages/WeAreHiring1.png\" alt=\"We are hiring!\"/\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsilon%2Fshiny.emptystate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappsilon%2Fshiny.emptystate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsilon%2Fshiny.emptystate/lists"}