Conversation
dmurphy5
added this pull request to stack #44
September 24, 2026 21:41
This was referenced Sep 24, 2026
dmurphy5
marked this pull request as ready for review
September 25, 2026 15:57
elliottkember
approved these changes
Sep 27, 2026
The example app is the device test harness. It is rewritten on the v10
API: definitions at module scope (JSON POST, multipart, chunked with
chunkPlan, bodiless DELETE, no-vars GET), configure() with a headers
provider, a queue list from getRequests() and the state and progress
feeds, an attempt log, and controls for every step of the two device
scripts: cancel, pause, resume, wifiOnly, updateHeaders with a typed
value, same-id resume and replace, a short expiresAt, and a section of
outcomes journaled before this launch for the kill-and-relaunch check.
The local Express server answers by path segment (401, 404, 409, 503,
slow, oversize) and writes chunked parts at their offsets. The stale
Podfile.lock is regenerated for RN 0.84.1, the AppDelegate wires the
background completion handler, and the Android manifest declares and
requests POST_NOTIFICATIONS. The example README carries the device
script in UI terms.
Library: createUploadClient({ native }) accepts a fake TurboModule, and
react-native-background-upload/src/testing exports createFakeNative(),
an in-memory Spec with settle(), seeded rows, recorded calls, and ack
tracking, so a consumer tests definitions and handlers against the real
registry and delivery. CI gains a macOS job that runs swift test.
Docs: CHANGELOG 10.0.0 covers all slices; README gets an "Upgrading from
v9" section, iOS platform notes, a "Testing your definitions" section,
and a corrected AppDelegate snippet (@import for .m, header search path
for .mm). Version 10.0.0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
dmurphy5
force-pushed
the
dylan/v10-5-hardening
branch
from
September 28, 2026 17:11
a11bc39 to
b678007
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR prepares v10 for release. It has no new upload behavior. It adds the tools that the release needs: a test app for device runs, a way for an app to test its own upload code without a device, CI for the iOS tests, and the final docs and version number.
1. The example app is now the device test script
The example app in
example/RNBGUExampleuses the v10 API. Every step of the device test (send a JSON request, upload a photo, upload a large file in parts, pause, resume, cancel, refresh a token, kill the app and relaunch, turn on Wi-Fi only) has a button. A small local server answers each test case (401, 404, 409, slow, oversize) so a tester does not need a backend. The app README lists the steps for both platforms.2. Apps can test their upload code without native code
flowchart LR subgraph App tests T[Test] --> D[Your definitions and handlers] end D --> L[Real library logic] L --> F[Fake native queue] F -- "settle(id, outcome)" --> L L --> DcreateUploadClient({ native })accepts a fake in place of the native module, andcreateFakeNative()supplies one. A test defines a request, callsmutate(), asks the fake to "settle" it with a success or error, and checks that the handler did the right thing. The real registry and delivery code run in between, so the test proves the same path that runs on a device. Diana's Jest suite will use this.3. CI runs the iOS tests
A macOS job runs
swift test. Until now only the Android unit tests ran in CI.4. Docs and version
package.json.What to look at
example/RNBGUExample/README.md, "Device test script": is each step clear enough to run?Test Plan
The macOS CI job runs for the first time on this PR.
Compatibility
Checklist
README.md🤖 Generated with Claude Code