We've done it with WAB; mainly for integrating newer widgets (two customs) without updating the stack.
Since we're currently migrating to 3.0.2 and updating R to 4.2 at the same time we're investigating this functionality soon for Dashboards. The general consensus is to try updating the widgets and dump them in the server-dashboard widget folders.
You could also look at using Pro to create an R service that you could host on your portal, then use JS (probably? maybe Python API) to hit it for R work (kinda like the geoprocessing service) - https://github.com/RetailScientifics/Esri-R-Integration#creating-a-blank-web-appbuilder-app