Follow-up from #1401, Android twin of synonymdev/bitkit-ios#868. With the shared Paykit runtime on paykit rc62, contact-payment actions complete but are slow against the staging homeserver. The author's trace points at the SDK queue and the per-transaction homeserver lock (background private-list preparation holding the queue 33–36 s, a full refresh holding the repository mutex 79 s); pubky/paykit-rs#171 targets the lock cost. This issue tracks pinning a paykit release that contains #171, re-measuring, and adding progress feedback to the bell Pay tap.
Measured on staging at #1401 head 0eaae43 (two emulators, fresh linked pair). Nothing failed: no crash, lease expired, RequestUnavailable or timeout lines.
| Action |
0eaae43 |
| First link after both sides save the contact |
3 min 36 s – 4 min 10 s; Request or Pay within 5 min 39 s |
| Send Request → "Payment requested" |
≤ 62 s one way, 152–177 s the other |
| Bell Pay tap → confirm screen |
121 s, Home shows no spinner or progress |
| Swipe → broadcast |
82.7 s |
| Contact payments off |
278–341 s |
| Contact payments on |
≤ 54 s |
| Cold launch, nothing pending → session restored |
35–40 s |
| Relaunch right after a sharing change → session restored |
137 s and 436 s, four Failed to initialize paykit (concurrent_update / shared_state_busy) each |
| Relaunch → Request or Pay offered |
2 min 39 s and 9 min 13 s |
| Delete a linked contact |
45 s |
Own-key Resolving homeserver log lines at idle, pair linked |
154–163/min (cache hits included; master logs 0) |
Done when, on staging, Send Request reaches "Payment requested" within ~10 s, the bell Pay tap shows the confirm screen within 3 s or shows progress while it prepares, contact payments off completes within ~30 s, and Request or Pay is offered within one maintenance round (~60 s) of a cold launch.
Journey to reproduce
<journey name="Contact Payment Latency">
<description>
Measures how long contact-payment actions take against the staging homeserver. Requires two Bitkit instances saved as each other's contacts and linked as identities, with contact payments on, both on the staging homeserver. Same journey as bitkit-ios issue 868, with the bell Pay and relaunch steps added.
</description>
<actions>
<action>Force-quit Bitkit on device A, launch it, and note the launch time</action>
<action>Every 2 minutes, open the contact for device B from Contacts and tap Pay (id "ContactPay"); record the first time the Request or Pay sheet (id "RequestOrPaySheet") appears instead of the amount screen, and verify it is within 60 seconds of launch</action>
<action>Tap Request, enter 1,000 sats, tap Send Request and record the time until "Payment requested" (id "PaymentRequestSent") appears; verify it is within 10 seconds</action>
<action>On device B, idle on Home, record when the payment requests bell (id "PaymentRequestsBell") appears; tap it, tap Pay on the request row, and record the time until the Payment Request confirmation screen (id "PaymentRequestConfirm") appears; verify it is within 3 seconds or that progress is shown while it prepares</action>
<action>On device A, open Settings, General, turn off Enable payments with contacts (id "ContactPaymentsToggle") and record the time until the switch is enabled again showing off; verify it is within 30 seconds and no error toast appears</action>
<action>Turn Enable payments with contacts back on and record the time until it settles on</action>
<action>Force-quit Bitkit on device A as soon as the switch settles, launch it, and record the time until the contact for device B offers the Request or Pay sheet; verify it is within 60 seconds and that no "Failed to initialize paykit" line is logged</action>
</actions>
</journey>
Follow-up from #1401, Android twin of synonymdev/bitkit-ios#868. With the shared Paykit runtime on paykit rc62, contact-payment actions complete but are slow against the staging homeserver. The author's trace points at the SDK queue and the per-transaction homeserver lock (background private-list preparation holding the queue 33–36 s, a full refresh holding the repository mutex 79 s); pubky/paykit-rs#171 targets the lock cost. This issue tracks pinning a paykit release that contains #171, re-measuring, and adding progress feedback to the bell Pay tap.
Measured on staging at #1401 head 0eaae43 (two emulators, fresh linked pair). Nothing failed: no crash,
lease expired,RequestUnavailableor timeout lines.Failed to initialize paykit(concurrent_update/shared_state_busy) eachResolving homeserverlog lines at idle, pair linkedDone when, on staging, Send Request reaches "Payment requested" within ~10 s, the bell Pay tap shows the confirm screen within 3 s or shows progress while it prepares, contact payments off completes within ~30 s, and Request or Pay is offered within one maintenance round (~60 s) of a cold launch.
Journey to reproduce