This book is under active development and intended for a 2021 Q4 release in the R Series by Chapman & Hall.
If you fulfill the above prerequisites, you should read this book if you already happened to ask one of the following questions:
- Do you want to know how to develop shiny apps with a more professional look and feel?
- Have you ever wondered how to design new input widgets to unleash interactivity?
- Do you want to better handle JS and CSS in your apps?
- How may I develop a mobile friendly template for Shiny?
- How may I include React in my shiny apps?
- Are you simply curious about what happens under the hood?
This book will help you to:
- Understand how Shiny deals with the classic web development standards and what are the main differences.
- Manipulate HTML tags from R to create custom layouts.
- Discover the steps to import and convert existing web frameworks like Bootstrap 4, framework7.
- Learn how Shiny internally deals with inputs.
- Learn more about less documented Shiny mechanisms (websockets, sessions, …).
This book is organized into seven parts:
Part 2 focuses on cascading stylesheet (CSS) and Sass (Syntactically Awesome Style Sheets). We provide the reader with basic CSS knowledge to get the most out of Sass, a powerful tool to seamlessly alter Shiny apps style, in a more reproducible manner. All along this part, we showcase examples from the R community like fresh (Perrier and Meyer 2020b) and bslib (Sievert and Cheng 2021), to significantly beautify apps with only few lines of code.
renderUIpatterns that may speed up Shiny apps. This part contains many hidden gems to significantly and quickly enhance apps.
Part 4 focuses on the development of a new template for Shiny by demonstrating examples from the tablerDash (Granjon 2020) package. These, and more may be explored further as part of the RinteRface project. This case study mobilizes all knowledge acquired in the previous parts.
Part 6 dives into mobile web development through a practical study involving a rework of shinyMobile (Granjon, Perrier, and Rudolf 2021). We give a brief introduction to the progressive web application world with some patterns to get started like service workers, web manifests, offline pages.
By the end of that book, the reader should be able to entirely customize Shiny in a reasonable amount of time.
This book has a side package containing all the necessary material to run the code without having to reload each previous snippet.
The RinteRface project is an initiative aiming to provide one of the most famous HTML templates to Shiny. Everything started by the collaboration of John Coene and David Granjon early 2018 on shinybulma (Coene and Granjon 2021) to officially release RinteRface November 2018 with shinydashboardPlus (Granjon 2021d), bs4Dash (Granjon 2021a) as line-up packages.
RinteRface work has been awarded several times at the 2 latest shiny contests (2019 and 2020), through contributions like:
- A virtual lab for teaching physiology (2019), the Apps.Physiol plateform, fuelled by bs4Dash and hosted in
RinteRface is very grateful to the R community and this book is a sort of acknowledgment!
- I’d like to warmly thanks all CRC reviewers: Emily Riederer, Barret Schloerke and … for their valuable comments and help.
- Howard Baek for accepting to test almost all chapters. Howard was the perfect book target with good knowledge in Shiny and beginner level in web development.
- Many thanks to Hadley Wickham for his general thoughts about the book organization. This was really helpful to reorder the content.
- I am very grateful to Douglas Robinson for proof reading the first book manuscript and fixing many typos it contained.
- A special thanks to my friends John and Victor for contributing to RinteRface.
- Thanks to the ThinkR team for providing material support during most of the RinteRface workshops.
- RinteRface and this book won’t exist without the amazing R community. Thanks for their valuable feedback.
This book was built with R version 3.6.1 (2019-07-05) and the following packages:
|apexcharter||0.1.8||CRAN (R 3.6.2)|
|blogdown||1.1||CRAN (R 3.6.2)|
|bslib||0.2.4||CRAN (R 3.6.1)|
|dplyr||1.0.3||CRAN (R 3.6.2)|
|fresh||0.2.0||CRAN (R 3.6.2)|
|ggplot2||3.3.3||CRAN (R 3.6.2)|
|golem||0.3.1||CRAN (R 3.6.2)|
|httpuv||1.5.5||CRAN (R 3.6.2)|
|httr||1.4.2||CRAN (R 3.6.2)|
|jsonlite||1.7.2||CRAN (R 3.6.2)|
|magrittr||2.0.1||CRAN (R 3.6.2)|
|purrr||0.3.4||CRAN (R 3.6.2)|
|reactR||0.4.4||CRAN (R 3.6.1)|
|sass||0.3.1||CRAN (R 3.6.1)|
|scales||1.1.1||CRAN (R 3.6.2)|
|shiny||1.6.0||CRAN (R 3.6.2)|
|shiny.router||0.2.2||CRAN (R 3.6.2)|
|shinydashboard||0.7.1||CRAN (R 3.6.0)|
|shinyjs||2.0.0||CRAN (R 3.6.1)|
|shinylogs||0.1.7||CRAN (R 3.6.0)|
|shinyWidgets||0.5.7||CRAN (R 3.6.2)|
|testthat||3.0.2||CRAN (R 3.6.2)|
|thematic||0.1.2||CRAN (R 3.6.2)|
|websocket||1.3.1||CRAN (R 3.6.2)|