Visual Studio App Center: Fix Migration Issues & Retire Safely

Microsoft Fix Intermediate 14 min read Official Docs Grounded Updated April 20, 2026

Why This Is Happening

I've talked to dozens of mobile developers over the past year who all had the same look on their face when they first heard the news: Visual Studio App Center is gone. Or rather , most of it is. If you're landing here because something in your CI/CD pipeline, distribution workflow, or analytics dashboard suddenly stopped working, I want you to take a breath, because this is fixable. What's happening isn't a bug or a misconfiguration on your end. Microsoft officially retired Visual Studio App Center on March 31, 2025.

Here's what that actually means in practice. After March 31, 2025, you can no longer sign in to your App Center account, and API calls to the platform will fail. If your automated builds, distribution pipelines, or crash reporting integrations are still pointing at App Center endpoints, they're going to break , or they already have. The error messages you might see range from silent failures in your CI logs to outright 401 Unauthorized or 404 Not Found responses from App Center's REST API. None of these errors tell you "hey, the product you depend on was retired." They just… fail.

There is one important exception. Microsoft heard loud feedback from the developer community and partnered with the Azure Monitor team to extend support for the Analytics & Diagnostics features specifically. Those features are still live and fully supported until June 30, 2026. So if your crash reports and session analytics are still flowing, that's why, and you have time, though not unlimited time, to plan your move to Azure Monitor or one of the Azure Native ISV services. Everything else, Build, Test, Distribution, CodePush, those are fully retired.

The reason Microsoft retired App Center isn't a mystery. The mobile DevOps landscape matured significantly since App Center launched, and the platform struggled to keep pace with first-party tools like Azure Pipelines, plus the growth of platform-native solutions like Apple's TestFlight and Google Play Console. Rather than keep a fragmented product alive, Microsoft chose to consolidate. That makes sense from a product strategy perspective. It doesn't make it any less painful if you built your entire release pipeline on top of App Center.

Who's feeling this most? Teams that relied on the Build service for automated Android and iOS compilation, teams that used CodePush for over-the-air JavaScript bundle updates in React Native apps, and any organization that had App Center as their crash reporting backbone. These are the scenarios where the retirement is most disruptive, and this guide walks through each one specifically.

Browse all Microsoft fix guides →

The Quick Fix, Try This First

Before you start migrating anything, you need to know exactly what App Center features your project was actually using. I've seen teams waste an entire day migrating the Build service when it turns out they weren't using it, their builds were already on GitHub Actions. So the real first step is a 10-minute audit.

Log in to the App Center portal at appcenter.ms, if your account still has access before the full wind-down completes, do this now. Inside each app, check the left navigation for: Build, Test, Distribute, Analytics, and Diagnostics. Note which ones have any active configuration or data. If you can't log in at all, that's confirmation that your account hit the March 31, 2025 retirement wall.

Once you know what you were using, here's the fast-action map based on official Microsoft guidance:

  • Build was failing? Your target is Azure Pipelines. Microsoft specifically recommends using the Export App Center Build feature before the shutdown completed, if you missed that, you'll need to recreate pipelines manually, but Azure Pipelines YAML templates for Android and iOS are well-documented.
  • Distribution broke? For iOS production: Apple App Store. For iOS testing: TestFlight. For Android: Google Play and Google Play Console. Azure Pipelines has built-in tasks for pushing to both AppStore/TestFlight and Google Play automatically.
  • CodePush stopped working? Microsoft prepared a self-hosted CodePush server you can run independently. The full source code and deployment docs are available on GitHub. This is a real standalone server, not a wrapper, and it's production-ready.
  • Analytics or crash reporting quiet? You're in the extended window until June 30, 2026. Start evaluating Datadog, Dynatrace, or New Relic as your replacement, all three are Azure Native ISV services with official Microsoft migration guidance.

For most small teams, just identifying which of the four buckets above applies to you and starting with that one migration will get your pipeline green again within a day.

Pro Tip
If you're migrating CodePush, do not remove the existing App Center SDK from your app until your self-hosted CodePush server is fully deployed and tested end-to-end. Running both temporarily isn't clean, but shipping an app that silently fails on update checks is much worse for your users.
1
Audit Your App Center Apps and Export Configuration

The absolute first thing to do, before touching any pipeline or SDK, is document what you had. If you still have portal access, go to appcenter.ms, open each app, and screenshot or copy down every configuration: build branch settings, environment variables, signing certificate names, distribution group compositions, and any webhook URLs you had configured. You cannot re-import what you don't have on record.

For the Build service specifically, Microsoft built an Export feature before shutdown. If you used it while the portal was live, it would have produced a ZIP archive containing your build definitions and variable references. If you didn't do this in time, you'll need to recreate from memory or from your app's own repository, but the good news is Azure Pipelines uses YAML that you store directly in source control, so you won't lose it again.

For Analytics data, pull any historical reports you want to keep. The extended window to June 30, 2026 applies to ongoing data collection, but once that window closes, historical data in App Center's servers is gone. Export CSVs from the Analytics Overview page while you still can. Navigate to your app, click Analytics in the left rail, then look for the export option on each metrics view.

For Distribution, note every distribution group name and the email addresses in those groups. Recreating tester groups in TestFlight or Google Play Console is manual work, and if you have 50 or 200 external testers, you'll be glad you have that list.

If your portal login is already dead, you get a blank screen or an auth error, reach out to support@appcenter.ms before assuming the data is unrecoverable. Microsoft's support team was still handling data export requests for a transition period after retirement.

2
Migrate App Center Build to Azure Pipelines

Azure Pipelines is the official recommended replacement for App Center Build, and honestly, it's more capable. The migration itself isn't a one-click job, but it's straightforward if you work through it methodically.

Start by creating an Azure DevOps organization at dev.azure.com if you don't already have one. Then create a new project. Link your GitHub, Azure Repos, Bitbucket, or other source repository under Project Settings > Service Connections. Once the connection is live, go to Pipelines > New Pipeline and select your repository. Azure DevOps will offer to auto-detect your project type and scaffold a starter YAML file.

For an iOS build that matches what App Center was doing, your pipeline YAML will look something like this:

trigger:
  - main

pool:
  vmImage: 'macos-latest'

steps:
  - task: InstallAppleCertificate@2
    inputs:
      certSecureFile: 'YourDistributionCert.p12'
      certPwd: '$(P12Password)'

  - task: InstallAppleProvisioningProfile@1
    inputs:
      provisioningProfileLocation: 'secureFiles'
      provProfileSecureFile: 'YourProfile.mobileprovision'

  - task: Xcode@5
    inputs:
      actions: 'build'
      scheme: 'YourSchemeName'
      sdk: 'iphoneos'
      configuration: 'Release'
      xcodeVersion: 'default'
      signingOption: 'manual'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

Your signing certificates and provisioning profiles go into Azure Pipelines' Secure Files library under Pipelines > Library > Secure Files. Upload them there and reference them by filename in the YAML above. Once the pipeline runs green, confirm your IPA or APK artifact is being published correctly under the pipeline run's Artifacts section.

3
Fix App Distribution, TestFlight, Google Play, and Store Routes

App Center's Distribute service had a tidy unified interface. Replacing it is a bit more fragmented because the replacement is platform-native, Apple for iOS, Google for Android, but each platform's native tooling is actually more powerful for what it's designed for.

For iOS production releases, your target is the Apple App Store via App Store Connect. For iOS test distribution, use TestFlight, which is built directly into App Store Connect. You can add internal testers (up to 100 from your Apple Developer team) and external testers (up to 10,000), no more hunting for a distribution group size limit. Navigate to appstoreconnect.apple.com, select your app, and use the TestFlight tab to create testing groups and add testers by email.

To automate TestFlight uploads from Azure Pipelines, use the AppStoreRelease@1 task:

- task: AppStoreRelease@1
  inputs:
    serviceEndpoint: 'AppleAppStoreConnection'
    appIdentifier: 'com.yourcompany.yourapp'
    appType: 'iOS'
    ipaPath: '$(Build.ArtifactStagingDirectory)/**/*.ipa'
    releaseTrack: 'TestFlight'
    shouldSkipWaitingForProcessing: true

For Android production and beta, use Google Play and Google Play Console respectively. Azure Pipelines has a GooglePlayRelease@4 task that handles the upload. You'll need a Google Play service account JSON key, which you generate under your Play Console's Setup > API access section.

For Windows / Microsoft Store apps, the recommendation is Partner Center's Package Flights feature for test distribution, it mirrors the beta testing concept from App Center. Microsoft Store developers also get access to analytics and diagnostics data directly through the Partner Center Dashboard, which is worth setting up before the App Center Analytics window closes.

4
Self-Host CodePush to Fix Over-the-Air Update Failures

This is the one that I've seen cause the most panic in React Native teams. If your app's over-the-air updates stopped working after March 31, 2025, CodePush is almost certainly the reason. Your app is still making update check requests to App Center's CodePush endpoint, and getting nothing back.

The fix is Microsoft's standalone CodePush server, which they specifically prepared for exactly this situation. The source code and full deployment documentation live on GitHub, search for "microsoft/code-push-server" to find the official repository. This isn't a community fork; Microsoft built and published this specifically as the migration path. Read the README carefully because it outlines both a Docker-based deployment and a manual Node.js deployment option.

At a high level, the migration process is:

  1. Deploy the self-hosted CodePush server to your own infrastructure (Azure App Service works great here, and the setup docs reference it directly).
  2. Update your React Native app's CodePush SDK configuration to point to your new server URL instead of the App Center endpoint.
  3. Re-publish your JavaScript bundles to the new server using the CodePush CLI, pointing it at your server.
  4. Release the updated app binary to your users through TestFlight or Google Play.

The SDK change in your React Native code is minimal, it's a server URL override in the CodePush configuration object. But step 4 is non-negotiable: until your users are on the binary that points to your new server, they cannot receive updates. So run both servers in parallel during the transition and don't decommission the old setup assumptions until your analytics confirm most users have updated.

One thing I want to call out: test your self-hosted server's update delivery on a real device on a cellular connection, not just Wi-Fi on a simulator. Network timeout and certificate errors show up in production that never appear in development.

5
Migrate Analytics & Diagnostics Before June 30, 2026

You have until June 30, 2026 for this one, but "you have time" doesn't mean "you can ignore it." Every week you wait is another week of data going into a system you're about to lose. Start the migration now so you have overlapping data collection before you cut over, that overlap period is your safety net for validating that your new setup is capturing everything correctly.

Microsoft recommends three Azure Native ISV services for Analytics and Diagnostics replacement: Datadog, Dynatrace, and New Relic. All three have mobile SDKs that cover session tracking, event logging, crash reporting, and user metrics. The advantage of going through Azure Native ISV is that these tools integrate directly into your Azure subscription and can monitor your backend infrastructure alongside your mobile app, something App Center never did.

Additionally, Microsoft and the Azure Monitor team are actively building native mobile analytics support directly in Azure Monitor. The formal announcement for that will come separately, but the infrastructure work is happening in parallel with the extended App Center Analytics window. If you want to stay entirely within Microsoft's ecosystem, waiting to evaluate Azure Monitor's mobile support is a reasonable option, just don't wait past mid-2026 or you'll be doing an emergency migration.

To remove the App Center SDK from your app once you've switched, you'll reverse the SDK installation steps for your platform. For React Native:

# Remove App Center packages
npm uninstall appcenter appcenter-analytics appcenter-crashes

# Then remove the native linking artifacts
# iOS: remove AppCenter pods from Podfile, then pod install
# Android: remove AppCenter gradle dependencies and AppCenter.start() call

Verify your new analytics SDK is firing events correctly before removing App Center entirely. Check your new dashboard for the first 24 hours after adding the new SDK to confirm session starts, custom events, and crash reports are all appearing. Only then should you remove App Center's SDK in a subsequent release.

Advanced Troubleshooting

Some teams are running into issues that go beyond just "migrate this service." Here are the scenarios I've seen come up in enterprise and domain-joined environments specifically.

Azure AD Conditional Access Blocking App Center Portal

If your organization had Azure Active Directory Conditional Access policies applied to the App Center portal URL, those policies may now be generating access errors even for authorized users trying to do final data exports. If you see a Conditional Access block screen when trying to reach appcenter.ms, your IT admin needs to either add an exemption for the App Center domain or temporarily disable the policy for the relevant user group. The App Center documentation explicitly covered how to connect App Center organizations to Azure AD, and those configurations can linger and cause login failures even after the product sunset.

API Calls Returning 401 or 404

Automated scripts or CI systems that call the App Center REST API will now get back 401 Unauthorized or 404 Not Found responses. This is expected, the API is retired. The fix is to find every script, workflow, and integration that references api.appcenter.ms and either remove it or replace it with the appropriate Azure DevOps API, App Store Connect API, or Google Play Developer API call. Search your repositories for the string appcenter.ms to find all the spots:

# Find all references to App Center API in your codebase
grep -r "appcenter.ms" . --include="*.yml" --include="*.yaml" --include="*.sh" --include="*.json"

Visual Studio App Center SDK Still in Production Build

If you have App Center SDK calls in your production app and the Analytics/Diagnostics extended window ends, those SDK calls won't crash your app, they'll just fail silently or return empty responses. That's actually a hidden problem because your crash reporting will stop working and you won't know it. Put a calendar reminder for Q1 2026 to audit your mobile app for App Center SDK references and plan a release that swaps in your replacement analytics SDK before the June 30, 2026 deadline.

Test Service Migration Issues

For the App Center Test service specifically, device testing on real physical hardware, Microsoft's official recommendation is BrowserStack App Automate. BrowserStack gives access to 20,000+ real iOS and Android devices and has a dedicated Device Testing CLI specifically built to support migration from App Center. If your Appium or Espresso tests were running in App Center Test, BrowserStack can run the same test scripts with minimal changes. The migration guide from BrowserStack covers the specific CLI commands and configuration changes required.

When to Call Microsoft Support
If you're hitting issues with data recovery from App Center, you had crash logs, analytics data, or distribution records you need but can no longer access, escalate directly to Microsoft rather than trying to work around it yourself. Send an email to support@appcenter.ms with your organization name, app identifiers, and a specific description of what data you're trying to recover. Microsoft Premier Support customers can also file at the Microsoft Premier Support Request Portal. For general migration questions, Microsoft Support can also route you to the right team. Don't assume data is permanently gone without asking.

Prevention & Best Practices

I know it feels a bit odd to talk about "preventing" a product retirement, but what I mean here is: how do you avoid being caught flat-footed when a third-party service, Microsoft-owned or otherwise, pulls the plug on something your pipeline depends on? The App Center retirement is a painful but good lesson in CI/CD resilience.

The biggest structural lesson is this: don't let your release pipeline have a single critical dependency on any SaaS platform without a clear exit strategy. App Center was convenient precisely because it was a one-stop shop, build, test, distribute, monitor, all in one place. That convenience also meant a single point of failure. Azure Pipelines with its YAML-in-repo approach is inherently more portable because your pipeline definition lives in source control. If Azure Pipelines retired tomorrow, your YAML is still there and you could run it on GitHub Actions or Bitbucket Pipelines with minimal changes.

For analytics and crash reporting specifically, running dual instrumentation during a migration, your old SDK and your new one, for at least two full release cycles gives you confidence that the new system is capturing everything before you cut over. This costs a few kilobytes of app binary size temporarily, but it's worth it to avoid a blind spot in your crash data.

On the SDK side: pin your SDK versions in your dependency files and review release notes before upgrading. The App Center SDK had deprecation notices in its changelog months before the retirement announcement, teams that were paying attention had earlier warning than those just auto-accepting updates.

Quick Wins
  • Store all CI/CD pipeline definitions as YAML in your source repository, never rely on a dashboard-only configuration that can disappear.
  • Set a recurring quarterly calendar reminder to audit external service dependencies in your mobile build pipeline and check each vendor's roadmap and retirement notices.
  • Export your tester distribution lists, analytics data, and crash logs on a regular schedule to cloud storage you own, this is your insurance policy against any platform shutdown.
  • If you're using CodePush for React Native OTA updates, move to the self-hosted server now and treat it like first-party infrastructure, monitor its uptime and include it in your on-call rotation.

Frequently Asked Questions

Can I still log in to Visual Studio App Center after March 31, 2025?

No, after March 31, 2025, it is no longer possible to sign in to your App Center account or make API calls to the platform. The one exception is that App Center Analytics and Diagnostics data collection remains active until June 30, 2026, based on Microsoft's extension announcement. But portal access for Build, Test, Distribution, and CodePush is gone. If you need to recover data, email support@appcenter.ms directly.

How do I get support if I'm having trouble migrating off App Center?

The primary support channel is email at support@appcenter.ms. When App Center was live, you could also reach the support team from directly inside the portal by clicking the question mark icon in the upper-right corner and selecting "Contact support." That in-portal help menu is no longer accessible after the retirement, so email is your path now. Microsoft Premier Support customers can file through the Premier Support Request Portal for escalated assistance.

Will App Center Analytics and Diagnostics really keep working until June 2026?

Yes, Microsoft confirmed the extension to June 30, 2026 in their March 2025 update, specifically in response to substantial customer feedback. This applies only to the Analytics and Diagnostics features, crash reporting, session data, event metrics. All other App Center features (Build, Test, Distribution, CodePush) were retired on March 31, 2025 as originally planned. Use this window to migrate to Azure Monitor, Datadog, Dynatrace, or New Relic before the deadline.

What's the best replacement for App Center's Build service?

Microsoft's official recommendation is Azure Pipelines, and it's the right call for most teams already in the Microsoft ecosystem. Azure Pipelines supports Android, iOS, React Native, Xamarin, and Unity builds with dedicated pipeline tasks for each platform. The pipeline definition lives as YAML in your repository, which is actually better than App Center's approach because your build config is version-controlled. If you're already on GitHub, GitHub Actions is also a strong option with similar capabilities.

My React Native app uses CodePush, what happens to over-the-air updates now?

OTA updates via the App Center-hosted CodePush server will fail because the server is retired. Your app is making requests to an endpoint that no longer responds. The fix is to deploy the self-hosted CodePush server from Microsoft's GitHub repository, it's a standalone server Microsoft specifically prepared for this migration. Once deployed, you update your app's CodePush SDK configuration to point to your new server URL, re-publish your JS bundles there, and release an updated binary to your users. Until users install the updated binary, they won't receive any updates.

What should I use for device testing instead of App Center Test?

Microsoft recommends BrowserStack App Automate as the direct replacement. BrowserStack gives you access to over 20,000 real iOS and Android devices, significantly more than what App Center Test offered, and it supports Appium, Espresso, XCUITest, and other frameworks. The key thing to know is that BrowserStack built a dedicated Device Testing CLI specifically to support migrations from App Center, so your existing test scripts can often be adapted with relatively small configuration changes rather than a full rewrite.

Related Microsoft Fix Guides

H
Sai Kiran Pandrala
Our team includes certified Microsoft engineers, Azure architects, and system administrators with 10+ years of enterprise IT experience. Every guide is written from hands-on troubleshooting, not guesswork. We test every fix before publishing.