Migrating from shinyapps.io
Connect Cloud includes a built-in tool for moving your applications from shinyapps.io to Connect Cloud. You link your shinyapps.io account, migrate applications one at a time, and test each migrated copy on Connect Cloud before making the switch permanent. Until you finalize a migration, your original application on shinyapps.io keeps running exactly as before.
The shinyapps.io migration tool is currently in Preview. You can use it any time before automatic migration begins for your shinyapps.io plan.
After that date, we’ll migrate any applications you haven’t already moved yourself. Automatic migration runs the whole process, including Finalize: each application’s shinyapps.io URL redirects to Connect Cloud and the original application is archived. Finalizing cannot be undone, so migrate your applications yourself beforehand if you want to test them on Connect Cloud before the switch.
| shinyapps.io plan | Automatic migration begins |
|---|---|
| Free | January 28, 2027 |
| Starter, Basic | March 31, 2027 |
| Standard, Professional | June 30, 2027 |
How Migration Works
Linking is a one-time setup step. After that, you migrate applications individually.
Link your shinyapps.io account. This grants Connect Cloud access to see that account’s applications, and it grants your Connect Cloud account a plan equivalent to the shinyapps.io subscription. You only do this once per shinyapps.io account, and it does not migrate any applications.
Migrate each application. Every application goes through two steps:
Migrate — Connect Cloud copies the currently deployed version of the application and publishes it as new content on your account. The application enters a Preview state where both the original and the migrated copy are live, so you can test the Connect Cloud version at its new URL.
Finalize — Connect Cloud sets up a permanent redirect from the old shinyapps.io URL to the new Connect Cloud URL and archives the original application. This step cannot be undone.
Prerequisites
- You must be able to administer the Connect Cloud account receiving the applications. On an individual account, that’s the account creator. On an organization account, you must have the Admin or Owner role.
- You must be the owner of the shinyapps.io account you want to migrate from. Only the account owner can link a shinyapps.io account.
- The shinyapps.io account must have successfully published at least one application.
- You sign in with your regular shinyapps.io credentials during linking. No API tokens or secrets are required.
Supported Applications
The migration tool supports all content types hosted on shinyapps.io:
- Shiny for R applications
- Shiny for Python applications
- R Markdown documents, including Shiny R Markdown
- Quarto documents that use Shiny (
server: shiny)
Only applications that are currently Running or Sleeping on shinyapps.io appear in the migration list; applications in an error state or without a successful deployment cannot be migrated.
Link Your shinyapps.io Account
- Navigate to Admin → shinyapps.io from your Connect Cloud navigation bar.
- Click the + Link shinyapps.io account button. You are shown the shinyapps.io accounts you own. If you want to sign in as someone else, click Log in as a different user.
- Select the accounts you want to link, then click Link.
Linking an account grants access to its applications and updates your Connect Cloud plan (see below). It does not migrate any applications.
Only shinyapps.io accounts that you own and that have successfully published at least one application appear in the list.
You can link several shinyapps.io accounts to a single Connect Cloud account, but each shinyapps.io account can be linked to only one Connect Cloud account. An account showing Linked to other account has already been linked elsewhere. If you don’t see the account you expect, use Log in as a different user to sign in with the shinyapps.io user that owns it.
When you link a shinyapps.io account with a paid subscription, your Connect Cloud account is granted an equivalent Connect Cloud plan at no additional charge:
| shinyapps.io plan | Connect Cloud plan |
|---|---|
| Free | Free |
| Starter | Basic |
| Basic | Enhanced |
| Standard, Professional | Advanced |
Migrate an Application
- On the Admin → shinyapps.io page, find the application you want to migrate. You can search by name, switch between linked shinyapps.io accounts, and filter by migration status (All, In Progress, Failed, Preview, Complete).
- Click Migrate next to the application.
The migration runs in the background and could take a few minutes. The status column updates automatically as the application moves from Queued to In Progress to Preview.
You can expand any row to see the source application’s App ID, status, and URL, along with any migration warnings.
If a migration fails, the status shows Failed with a See Logs link to the publish logs for the migrated content. After addressing the problem, click Try again.
There is no Undo button for a migration. To back out of a migration you haven’t finalized yet, delete the migrated content on Connect Cloud. Your original application on shinyapps.io is untouched and keeps running.
Test the Preview
When an application reaches the Preview state, the migrated copy is published and running on Connect Cloud. Click the status link to open the new content and verify it works as expected.
At this stage:
- Your original application on shinyapps.io is still running and unchanged.
- Visitors continue to use the original shinyapps.io URL.
- The Connect Cloud copy is live at its own URL, and you can manage it like any other content: adjust its settings, update access, or republish it.
Finalize the Migration
When you’re satisfied with the preview, click Finalize to make the switch permanent. Finalizing:
- Sets up a permanent (308) redirect from the application’s shinyapps.io URL to its new Connect Cloud URL, so existing links and bookmarks continue to work.
- Archives the original application on shinyapps.io.
- Marks the migration Complete.
Finalizing cannot be undone. Test the preview thoroughly before you finalize.
Once a migration is finalized, the archived shinyapps.io application cannot be restored. Leave it in place. If you delete it on shinyapps.io, the redirect to Connect Cloud is deleted along with it, and any custom domain pointed at that application stops serving your content.
Custom Domains
A custom domain you set up on shinyapps.io is not redirected to Connect Cloud. Instead, shinyapps.io keeps serving that domain and returns a page that embeds your migrated Connect Cloud application in an iframe.
This is how shinyapps.io already serves custom domains, so migrating doesn’t change what your visitors see. The only difference is that the framed application now runs on Connect Cloud. The address bar keeps showing your custom domain, as it did before, so use the content’s Connect Cloud URL when you want to share a direct link.
Because shinyapps.io serves this page, keep the archived application in place after finalizing. Deleting it on shinyapps.io also removes the custom domain’s route to your Connect Cloud content.
To serve the application from your own domain on Connect Cloud directly, configure a custom domain on Connect Cloud.
Update Your rsconnect Deployment Records
If you deploy this application with the rsconnect package — from the R console, a terminal, or the RStudio IDE Publish button — migrating on Connect Cloud does not change what those tools target. Your project keeps a local deployment record pointing at shinyapps.io, so your next rsconnect::deployApp() or click of Publish would still go there.
migrateToConnectCloud() is not in the CRAN release of rsconnect yet. Install the development version from GitHub:
install.packages("remotes")
remotes::install_github("rstudio/rsconnect")As soon as the migrated content exists on Connect Cloud (from the Preview state onward), point your local deployment record at it with rsconnect::migrateToConnectCloud():
rsconnect::migrateToConnectCloud(
appPath = "path/to/your/app",
contentId = "abc123"
)contentId is the ID from the migrated content’s Connect Cloud URL: https://connect.posit.cloud/{account}/content/{contentId}. This rewrites the record for appPath without touching the content itself, so your next deploy from that project targets Connect Cloud instead of shinyapps.io.
If you haven’t connected a Connect Cloud account to rsconnect yet, migrateToConnectCloud() walks you through it interactively, or you can run rsconnect::connectCloudUser() first.
If appPath has deployment records for more than one app or server, pass appName, account, or server to identify which one to migrate:
rsconnect::migrateToConnectCloud(
appPath = "path/to/your/app",
contentId = "abc123",
# Pass only the argument(s) needed to single out the record;
# often appName alone is enough.
appName = "my-dashboard",
account = "my-shinyapps-account",
server = "shinyapps.io"
)If the local record is missing entirely — for example, on a fresh checkout — migrateToConnectCloud() rebuilds it from contentId, naming the record after appName if you pass one, or the Connect Cloud content’s title otherwise.
What’s Migrated
Each migration copies:
- Application code: the source bundle from the application’s most recent successful deployment.
- Name: the shinyapps.io application name becomes the content title, and Connect Cloud attempts to reserve a matching custom URL name.
- Visibility: public applications become public content; everything else becomes private content.
- Viewer access: for private content, users who were granted access to the application on shinyapps.io are invited as viewers on Connect Cloud.
- Compute resources: memory and CPU are mapped from the application’s shinyapps.io instance size to the closest available Connect Cloud size.
The following are not migrated:
- Runtime settings: worker process and timeout settings are reset to Connect Cloud defaults. Instance scaling has no Connect Cloud equivalent, because Connect Cloud runs each piece of content on a single instance.
- Deployment history, logs, and usage metrics: only the currently deployed version is copied.
- Custom domains: your shinyapps.io custom domain is not transferred to Connect Cloud. See Custom Domains for how those URLs continue to work.
Migration Warnings
Some applications can be migrated but will run differently on Connect Cloud. These cases are flagged as warnings in the expanded application row. Warnings are advisory and don’t block migration, but you should review the preview carefully when they appear.
| Warning | What it means |
|---|---|
| Unsupported operating system | The application runs on an operating system Connect Cloud does not support. It will run on Ubuntu Jammy (22.04) instead. |
| Unsupported R version | The application uses an R version older than Connect Cloud supports. It will run on R 4.0.5. |
| Unsupported Python version | The application uses a Python version older than Connect Cloud supports. It will run on Python 3.9. |
| Multiple instances | The application runs on multiple instances on shinyapps.io. Connect Cloud runs all applications on a single instance. |
| Non-default runtime settings | The application uses customized runtime settings on shinyapps.io. The migrated content uses Connect Cloud’s default runtime settings, so review the content’s settings after migrating. |
Coming Soon
We’re still working on the migration experience. These changes are on the way:
- rsconnect on CRAN: the release including
migrateToConnectCloud()is headed to CRAN, so you’ll be able to install rsconnect withinstall.packages("rsconnect")instead of from GitHub. - Connect Cloud support in rsconnect-python: an updated rsconnect-python will be able to publish to Connect Cloud and update deployment records after a migration, the same way rsconnect does for R.
- Viewer email in your application: Connect Cloud will pass the signed-in viewer’s email address to your application, as shinyapps.io does.
Frequently Asked Questions
Does migrating an application affect the original on shinyapps.io?
No. Migration creates an independent copy on Connect Cloud. The original is only affected when you finalize, which redirects its URL and archives it.
What happens to my application’s URL after finalizing?
The shinyapps.io URL permanently redirects to the new Connect Cloud URL, so existing links keep working. The redirect points at the migrated content’s custom URL name, so changing that name or deleting the content on Connect Cloud breaks the redirect.
I updated my application on shinyapps.io after migrating it. Is the Connect Cloud copy updated too?
No. Migration copies the version that was deployed at the time you clicked Migrate. Changes published to shinyapps.io afterward are not synced to Connect Cloud.
I deploy from RStudio using the Publish button. Will it deploy to Connect Cloud automatically after I migrate?
No. RStudio’s Publish button and rsconnect::deployApp() use a local deployment record that still points at shinyapps.io until you update it. See Update Your rsconnect Deployment Records above.
Can I migrate multiple applications at once?
There is no bulk action. You start each migration individually from the migration page. You don’t have to wait for one to finish, though: you can start another migration while a previous one is still in progress.