Here at Appsilon, while developing projects for our clients, we frequently encounter recurrent challenges. This pushes us to create solutions that simplify the development process – making our day-to-day work more efficient. Those usually start as internal tools, but we don’t want to keep those great packages just to ourselves! That is why we share them with the community – so everyone can benefit.
We use R Shiny a lot and we love it. That’s why our Open Source revolves mostly around improving the experience with Shiny, which is a great tool, although just by itself sometimes lacks some functionalities – that’s where we come in.
I want to introduce you to our open source by giving an overview of the packages along with resources for exploring them in more detail. This way you can quickly decide if there is something useful to you among them (and I bet there surely is).
To benefit from packages described in this article you should have some working knowledge of Shiny package for R. If you don’t know Shiny, you can refer to this page to see what it is about.
Now, let’s dive in!
Are you bored with the visual style of your apps created with Shiny? Our package allows you to transform your boring standard Shiny app into a modern looking app with fresh and interactive design.
So what is shiny.semantic?
In short, It’s a library that makes it easy to wrap Shiny with Semantic UI components. It attaches all semantic external files which are stored on our CDN for improved loading speeds. The package has many popular components wrapped by default, but it is not hard to extend it even more by creating specific custom components that you may need. For that purpose, it has a universal input binding method for your custom user interfaces which enables you to create various types of inputs.
Ready to explore? Get the latest stable version from CRAN with
If you install from GitHub, you can also try the latest features present on the develop branch.
Need more details? Read the shiny.semantic blog post or visit the package site on GitHub.
Semantic.dashboard is our package for quickly creating beautiful and customizable dashboards. It is also easy to use. The syntax is compatible with the ‘shinydashboard’ package, if you have used it in your app, changing to our semantic.dashboard is a no-brainer.
Why do I need a dashboard?
If you haven’t used a dashboard as a base for your app before, give it a try. It allows you to easily structure your app, making it more user-friendly. You divide your UI between 3 sections – header, a sidebar for navigation, and a dashboard body for displaying main content. With our package, you can also easily test out different Semantic-UI themes with a line of code. You can find some of those on semantic forest. If you need more flexibility in styling you can also customize it to your liking with CSS.
For more information visit: https://appsilon.com/create-outstanding-dashboards-with-the-new-semantic-dashboard-package/
Shiny.router is a tool that will help you introduce URL routing to your Shiny app.
What can it do?
This package provides a routing mechanism that can separate different UI views in your app and let you navigate them with URL addresses. It will also enable you to write cleaner code by separating it into smaller chunks of code. What’s more, you can even create separate server callbacks for each of them. With that, views fed with the same data can display different results in each tab. This gives you a huge amount of flexibility. Moreover, you pass parameters to your app along with the URL address which makes it possible to share a link that redirects to a specific state within the app.
That’s not all!
Besides using the address bar in your browser to navigate, it also makes it possible to operate routing from the server side of your app with a set of functions like route_link, change_page, get_page or is_page. All of this together makes it a really powerful tool for improving your shiny app development. It will take your app to the next level.
Need more examples and instructions to get you going? I recommend reading this great shiny.router post by Krystian.
Shiny.i18n is a library that allows you to easily create multi-language apps. It can make the process of implementing translations of your app to any language a breeze.
In-app translations – the easy way
i18n supports translations in JSON or CSV format. You can have all your languages and translations in one file, but if it is needed, languages can be separated between different files for each language. This allows you to spread the translation process which may be crucial if you are going to translate into multiple languages.
When you have your translations, using the package is very easy. You just have to read them into your app with the shiny.i18n interface and surround your expressions which are to be translated with a translator tag.
Get it from CRAN
For more details, you can also refer to Dominik’s shiny.i18n blogpost.
This is the latest package that we introduced to the Shiny family that should prove useful for developers working with Shiny apps.
Useful info just around the corner 😉
shiny.info introduces boxes with simple diagnostic information for developers that show up in the corner of your Shiny app. You can display things like:
- Loader that shows up during long computation – busy()
- App version from global variable VERSION – version()
- Box with branding – powered_by(“Company”, “#Link”)
- Git information – git_info()
- Custom message or anything else to help with your development – display(“Some diagnostic information”)
Note that this package is still in its infancy, so you may encounter issues.
What will be possible with shiny.info in the future?
We are planning to add more features like:
- More UI styles, e.g. adjusted to Shiny Server Pro with an authentication box.
- Inspect feature for easy debugging and checking app state at any given time.
- An easy way for custom styling of the box and its content.
- Option for infobox to be hidden by default and displayed on key press.
- Possibility to use multiple displays at once.
If you want to read some more about this package refer to Dominik’s recent blog post
Do you have anything in mind that would make the package even better? Consider requesting features on the shiny.info GitHub page.
I hope that you can leverage our packages to take your Shiny development to a new level and create better and more beautiful apps faster.
If you would like to be notified when we update or launch new packages, sign up for our list or follow us on Twitter @appsilonds.