microsoft / react-native-code-push

React Native module for CodePush
http://appcenter.ms
Other
8.91k stars 1.45k forks source link

Diff Update not working for subsequent codepushes. Entire bundle is always downloaded #2332

Closed gogul-ct closed 1 year ago

gogul-ct commented 1 year ago

Steps to Reproduce

  1. Code push a fix v1
  2. Code push another fix v2 on to same binary version

Expected Behavior

Diff must happen and only changed files should be downloaded

Actual Behavior

Entire bundle is always getting dowloaded

Environment

We are also uploading sentry maps.

Should any naming convention or file structures to be followed for diffing to work?

ricardobeat commented 1 year ago

Also seeing this in an existing app.

We monitor totalBytes on codepush sync, and starting on August 15, every update is now a full download.

witalobenicio commented 1 year ago

Are you guys experiencing extremely slow bundle downloads?

saransh-malik commented 1 year ago

Yes, facing both full download issue as well as very slow download speeds.

cmocanu commented 1 year ago

Hello,

I am working on an app with a lot of users in Latin America where internet is slow and expensive, and we are facing this issue as well. I've been reading all I can about this, github issues, blogs, documentation, even the server code related to this.

https://github.com/microsoft/react-native-code-push/blob/9947037a985a04927c64624318e4ce64d43d2049/windows-legacy/CodePush.Shared/CodePushConstants.cs#L11

A file called hotcodepush.json seems to be necessary for the diffing logic?

https://github.com/microsoft/react-native-code-push/blob/9947037a985a04927c64624318e4ce64d43d2049/windows-legacy/CodePush/UpdateManager.cs#L61

And the server seems to look for it in the main dir. I downloaded our current staging version from appcenter and unzipped the contents, and I'm not seeing any hotcodepush.json file. Here's what I have:

AndroidManifest.xml                             firebase-encoders-json.properties               play-services-basement.properties
DebugProbesKt.bin                               firebase-encoders.properties                    play-services-cloud-messaging.properties
META-INF                                        firebase-iid-interop.properties                 play-services-iid.properties
assets                                          firebase-installations-interop.properties       play-services-mlkit-barcode-scanning.properties
classes.dex                                     firebase-installations.properties               play-services-mlkit-face-detection.properties
classes2.dex                                    firebase-measurement-connector.properties       play-services-mlkit-text-recognition.properties
classes3.dex                                    firebase-messaging.properties                   play-services-stats.properties
classes4.dex                                    image.properties                                play-services-tasks.properties
classes5.dex                                    kotlin                                          res
classes6.dex                                    lib                                             resources.arsc
com                                             okhttp3                                         transport-api.properties
common.properties                               org                                             transport-backend-cct.properties
firebase-annotations.properties                 play-services-auth-api-phone.properties         transport-runtime.properties
firebase-common.properties                      play-services-auth-base.properties              vision-common.properties
firebase-components.properties                  play-services-auth.properties
firebase-datatransport.properties               play-services-base.properties

➜  app-staging-release find . | grep hotcodepush
➜  app-staging-release

This is how we release the update:

    command = 'yarn appcenter codepush release-react '
    command += "--token #{token} "
    # here's the force cache flush:
    command += '--extra-bundler-option="--reset-cache" '
    command += "--app #{APPCENTER_ORG_NAME}/#{app_name} "
    command += "--deployment-name #{APPCENTER_DEP_NAME} "
    command += "--target-binary-version '#{target}' "
    # explicitly tell where to output build and sourcemaps
    command += '--output-dir ./build '
    command += '--sourcemap-output-dir ./build '
    command += "--description #{description} "
    command += '--mandatory '
    command += '--disable-telemetry '
    command += '--disable-duplicate-release-error'

I would really appreciate any help in debugging this. Let me know if there's any more info I can provide.

witalobenicio commented 1 year ago

@cmocanu I thin they just don't care about codePush. Its a free product, so they just don't care. Here the problem seems to be in some networks. Some work, some doesn't

ghost commented 1 year ago

This issue has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs within 15 days of this comment.

ghost commented 1 year ago

This issue will now be closed because it hasn't had any activity for 15 days after stale. Please feel free to open a new issue if you still have a question/issue or suggestion.

hardik-flyfin commented 10 months ago

any updates?

vasteez commented 8 months ago

Same question here. Differential logic seems to depend on hotcodepush.json but this is not generated and no info on how to generate it. I am running the react-native bundle command