Remove the dead WordPress-to-Jetpack content migration subsystem - #23309
Conversation
The migration flow could not start in any shipped build: its feature config had no remote field and BuildConfig.JETPACK_MIGRATION_FLOW was false with no flavor override. The WordPress flavor still shipped an exported content provider vending the account access token, plus an exported receiver behind a custom permission whose only broadcaster was this dead code. Deletes the migration UI, local content migration helpers, shared login, user flags, blogging reminders sync and reader saved-posts sync packages with their tests, 7 feature configs, the AppPrefs keys, 29 Tracks constants, the FluxC JetpackMigrationStore, HelpActivity's migration-help branch, and the associated strings, layout, drawables, dimens and colors. LoadingState is moved to ui/compose/components since Blaze and site creation use it. showMainActivity's boolean now means selectPrimarySite.
- Drop the single-child ConstraintLayout wrapper in the Help layout - Reuse the shared LoadingState composable in QR-code auth - Fold getPackageInfo into util/PackageManagerWrapper and delete the now-empty util/publicdata package - Collapse a nested else/if in WPMainActivity and a braced single-statement when branch in AccountSettingsFragment - Inline a single-use local in DeepLinkingIntentReceiverActivity
Generated by 🚫 Danger |
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/wordpressRelease/base_manifest.txt 2026-09-09 10:52:11.072844842 +0000
+++ ./build/reports/diff_manifest/WordPress/wordpressRelease/head_manifest.txt 2026-09-09 10:52:14.583716036 +0000
@@ -8,11 +8,7 @@
<uses-sdk
android:minSdkVersion="26"
android:targetSdkVersion="36" />
-
- <permission
- android:name="org.wordpress.android.permission.DISABLE_NOTIFICATIONS"
- android:description="@string/notification_disable_broadcast_permission_desc"
- android:label="@string/notification_disable_broadcast_permission_label" /> <!-- Normal permissions, access automatically granted to app -->
+ <!-- Normal permissions, access automatically granted to app -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -134,19 +130,6 @@
android:supportsRtl="true"
android:theme="@style/WordPress"
android:usesCleartextTraffic="false" >
- <provider
- android:name="org.wordpress.android.localcontentmigration.LocalMigrationContentProvider"
- android:authorities="org.wordpress.android.LocalMigrationContentProvider"
- android:exported="true" />
-
- <receiver
- android:name="org.wordpress.android.ui.mysite.jetpackbadge.JetpackAppInstallReceiver"
- android:exported="true"
- android:permission="org.wordpress.android.permission.DISABLE_NOTIFICATIONS" >
- <intent-filter>
- <action android:name="org.wordpress.android.broadcast.DISABLE_NOTIFICATIONS" />
- </intent-filter>
- </receiver>
<receiver
android:name="org.wordpress.android.ui.deeplinks.JetpackAppUninstallReceiver"
android:exported="true" >
@@ -937,10 +920,6 @@
android:theme="@style/WordPress.NoActionBar" />
<activity
android:name="org.wordpress.android.ui.debug.cookies.DebugCookiesActivity"
- android:theme="@style/WordPress.NoActionBar" />
- <activity
- android:name="org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationActivity"
- android:label="@string/jp_migration_welcome_title"
android:theme="@style/WordPress.NoActionBar" /> <!-- Notifications activities -->
<activity
android:name="org.wordpress.android.ui.notifications.NotificationsDetailActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/28627/canvas?sid=01a085c9-5b29-4595-a6b3-045e239619d2, click on the |
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/jetpackRelease/base_manifest.txt 2026-09-09 10:52:05.678041777 +0000
+++ ./build/reports/diff_manifest/WordPress/jetpackRelease/head_manifest.txt 2026-09-09 10:52:09.102687852 +0000
@@ -8,8 +8,7 @@
<uses-sdk
android:minSdkVersion="26"
android:targetSdkVersion="36" />
-
- <uses-permission android:name="org.wordpress.android.permission.DISABLE_NOTIFICATIONS" /> <!-- Normal permissions, access automatically granted to app -->
+ <!-- Normal permissions, access automatically granted to app -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -962,10 +961,6 @@
android:theme="@style/WordPress.NoActionBar" />
<activity
android:name="org.wordpress.android.ui.debug.cookies.DebugCookiesActivity"
- android:theme="@style/WordPress.NoActionBar" />
- <activity
- android:name="org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationActivity"
- android:label="@string/jp_migration_welcome_title"
android:theme="@style/WordPress.NoActionBar" /> <!-- Notifications activities -->
<activity
android:name="org.wordpress.android.ui.notifications.NotificationsDetailActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/28627/canvas?sid=01a085c9-5b29-4437-8366-2fdffd1895f7, click on the |
|
|
|
|
🤖 Build Failure AnalysisThis build has failures. Claude has analyzed them - check the build annotations for details. |
Lint flagged white_translucent_80, ic_site_icon_placeholder_primary_24 and the pref_key_initial_screen string as unused; their only consumers were in the deleted migration code.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## trunk #23309 +/- ##
==========================================
- Coverage 38.00% 37.89% -0.12%
==========================================
Files 2350 2290 -60
Lines 128950 127771 -1179
Branches 17994 17845 -149
==========================================
- Hits 49008 48418 -590
+ Misses 75898 75333 -565
+ Partials 4044 4020 -24 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
- Drop the /mobile/migration endpoint spec now that its rest client is gone - Remove the unused initial-screen pref, its getters and MySiteTabType - Remove four section comments that headed empty resource sections - Note why the two remaining jp_migration_* dimens are kept
adalpari
left a comment
There was a problem hiding this comment.
Looks like a nice clean! 🚢 it!


TL;DR
This is (hopefully!) the last PR which deletes the remaining unused WordPress→Jetpack content migration code.
Description
JetpackMigrationFlowFeatureConfighas no remote field, so it resolves straight toBuildConfig.JETPACK_MIGRATION_FLOW, which isfalsewith no flavor override. The flow cannot be switched on from the server. Despite that, the WordPress flavor still shippedLocalMigrationContentProviderwithexported="true"(serving the access token, sites and posts) plus an exportedJetpackAppInstallReceiverbehind a self-declared permission whose only broadcaster was inside the dead flow.This PR removes:
buildConfigFields, 7AppPrefskeys, 29 Tracks constants, and the FluxCJetpackMigrationStore(only used by the migration-completed email)uses-permissionfrom the Jetpack manifestHelpActivity's migration-help branch,HelpViewModel(sign-out logic reachable only from that branch), and the Help layout views only that branch showedKept on purpose:
OpenWebLinksWithJetpackFlowandJetpackAppUninstallReceiver(live),JetpackPoweredBottomSheetFragment, and threejp_migration_*dimens and onejp_migration_*string that live screens still use.Two behaviour notes: the Help screen no longer shows the "Switch to the Jetpack app FAQ" row that migrated users saw, and
ActivityLauncher.showMainActivity(Context, boolean)now meansselectPrimarySite(the only remaining flag).Accepted risk: Jetpack 21.3 through 25.8 shipped with the migration flow hard-enabled and no remote kill switch. A signed-out user still on one of those builds who updates WordPress will see the generic migration error on Continue, then fall back to login. Nothing on the WordPress side can change that.
The second commit tidies what the deletion left behind (single-child layout wrapper, a duplicated
LoadingStatecomposable, a now-emptyutil/publicdatapackage).Testing instructions
Clean CI should be enough to approve this, but a more thorough check would be to build and run both the Jetpack and WordPress variations and ensure they load as expected.