当需要废弃原微信小程序A,用目标微信小程序B承接服务时,微信小程序账号迁移可以高效率、低成本地将微信小程序A的用户迁移至微信小程序B中。完成账号迁移后,微信小程序A等同于注销,不能继续运营或提供相关功能及服务;用户通过任何方式访问微信小程序A时,会自动打开微信小程序B。
注意,微信小程序账号迁移和微信小程序主体变更为两种不同的能力,开发者可根据自己的实际诉求灵活选用这两种能力,具体区别如下:
- 微信小程序账号迁移:是在两个账号间进行的,微信小程序appid发生改变,主体可能相同也可为绑定在同一开放平台账号下的关联主体,迁移完成后,原微信小程序将会被系统注销,无法恢复或使用;
- 微信小程序主体变更:是在同一个账号里面进行的,微信小程序appid不变,运营权限、主体信息将发生变化,微信小程序不会被注销
申请流程
开发者可以在MP平台 中的「设置 -> 基本设置 -> 账号信息 -> 原始ID -> 账号迁移」中发起微信小程序账号迁移申请。
准入条件
微信小程序账号为封号状态,海外主体账号,小游戏等暂不支持准入。
迁移限制
- 一个目标微信小程序最多能被5个微信小程序迁移,已完成迁移的目标微信小程序,6个月内暂不支持再次发起账号迁移;
- 原微信小程序和目标微信小程序主体必须为绑定在同一开放平台账号下的相同主体或关联主体。
申请迁移流程
同意“微信小程序账号迁移协议” -> 选择目标微信小程序 -> 当前微信小程序管理员确认 -> 目标微信小程序管理员确认 -> 账号迁移冻结期(7天) -> 账号迁移完成 注意:在账号迁移冻结期内,开发者可撤销账号迁移流程;若未撤销流程,账号迁移一经完成,则不可撤销。
能力表现

用户无感知场景
相关场景值
扫码相关: 一维码(1025、1032)、二维码(1011、1013)、微信小程序码(1047、1049)、一物一码(1124、1126)
外跳相关: scheme/URL Link(1065、1194)、openSDK(1069)
C端表现
无迁移提示,直接拉起微信小程序B
用户有感知场景
相关场景值
除用户无感知场景值外的所有场景值
C端表现
- 微信小程序A未被添加至「我的微信小程序」 从客户端8.0.32版本开始,用户打开微信小程序A,将直接拉起微信小程序B,并展示迁移半屏提示,用户点击「我知道了」后,后续该用户访问微信小程序A将自动拉起微信小程序B,不再出现提示,且微信小程序A的「最近使用」记录会被删除。
- 微信小程序A已被添加至「我的微信小程序」 从客户端8.0.32版本开始,用户打开微信小程序A,将直接拉起微信小程序B,并展示迁移半屏提示,用户点击「我知道了」后,将「我的微信小程序」中的微信小程序A替换为微信小程序B;同时,后续该用户访问微信小程序A将自动拉起微信小程序B,不再出现提示,且微信小程序A的「最近使用」记录会被删除。
低版本客户端
低于8.0.32的客户端版本,不区分用户有感知和用户无感知场景,在任意场景下,用户打开微信小程序A,都将拉起H5页面展示迁移提示,用户点击「前往打开」后,将跳转打开微信小程序B。 若微信小程序A被添加至「我的微信小程序」,则打开微信小程序B后,页面出现Toast提示“已将当前微信小程序替换到「我的微信小程序」”。
调试流程
通过微信小程序账号迁移的方式打开的微信小程序,场景值均为1248。微信小程序发生账号迁移后,平台将默认拉起微信小程序B的首页,开发者若有打开特定页面的诉求,可根据启动参数自行调试。
启动参数继承
微信小程序B可以通过以下2种方式,继承微信小程序A的appid、path、query和scene,对应字段分别为migrateSourceAppId、migrateSourcePath、migrateSourceQuery和migrateSourceScene
- 调用App.onLaunch读取
res.query参数 - 调用wx.getLaunchOptionsSync读取
query参数
除appid、path、query和scene外的其他全部启动参数(extraData等)均会以原有方式继承
其他注意事项
- 当用户第一次命中微信小程序迁移时,若网络环境较差,客户端无法拿到迁移信息或微信小程序B无法正常Launch,此时会拉起微信小程序A。若业务有较大调整,建议开发者在微信小程序A中做好兼容逻辑;
- 微信小程序账号迁移仅针对正式版微信小程序生效,对于体验版和开发版不生效;
- 暂不支持将原微信小程序的管理员、项目成员和体验成员自动迁移至目标微信小程序,如有需要,开发者需自行添加。