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.

NotePreview feature

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.

  1. 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.

  2. Migrate each application. Every application goes through two steps:

    1. 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.

    2. 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.

Migrate an Application

  1. 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).
  2. 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.

NoteStarting over

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.
Important

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.

Note

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.

Note

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 with install.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.