react-native-code-push icon indicating copy to clipboard operation
react-native-code-push copied to clipboard

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

Open gogul-ct opened this issue 2 years ago • 5 comments

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

  • react-native-code-push version: ^7.0.4
  • react-native version: 0.67.2
  • iOS/Android/Windows version: All Android & iOS versions

We are also uploading sentry maps.

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

gogul-ct avatar Sep 06 '22 12:09 gogul-ct

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.

ricardobeat avatar Sep 07 '22 14:09 ricardobeat

Are you guys experiencing extremely slow bundle downloads?

witalobenicio avatar Sep 12 '22 13:09 witalobenicio

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

saransh-malik avatar Oct 06 '22 15:10 saransh-malik

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.

cmocanu avatar Oct 09 '22 12:10 cmocanu

@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

witalobenicio avatar Oct 09 '22 12:10 witalobenicio

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 avatar Dec 08 '22 13:12 ghost

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.

ghost avatar Dec 23 '22 18:12 ghost

any updates?

hardik-flyfin avatar Oct 30 '23 06:10 hardik-flyfin

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

vasteez avatar Dec 21 '23 16:12 vasteez