Skip to content

Authorization callback reload can discard the first social account #1111

Description

@pirate-bot

Summary

After a user completes social-network authorization, the dashboard can reload before the new account finishes saving. The connected account is expected to appear in Revive Social after authorization, but the user can instead return to the dashboard with no account connected. This blocks initial setup and prevents the plugin from being used for sharing.

Customer context

  • Product / area: Revive Social account connection
  • Version: 9.4.0
  • Environment: WordPress environment and browser not provided
  • Integration / third party: Social network not identified
  • Reported error / symptom: Login completed, but the first account was not connected in the plugin
  • Impact: Initial setup failed; the plugin was deactivated after 13 minutes

Reproduction notes

Reported sequence:

  1. Install or activate Revive Social 9.4.0 with no connected accounts.
  2. Start the connection flow for the first social account.
  3. Complete login in the authorization window.
  4. Return to the plugin and observe that no account was connected.

Repository-confirmed trigger: the 9.4.0 callback can reload while the add-account REST request remains in flight. Runtime reproduction was not performed, and the affected social network and timing conditions are unknown.

Diagnosis

Conclusion

The account-connection callback in the v9.4.0 source starts the add-account REST request but does not return or await that request before reloading the dashboard. A browser may cancel the in-flight request, leaving no persisted account. Post-release commit 53b2d9a5c39a9f2361a59417bffde52cd63ef6f5 explicitly describes this data-loss race and introduces completion tracking before reload, providing strong repository evidence for the reported symptom.

Where this likely occurs

  • vue/src/vue-elements/sign-in-btn.vue — SignInBtn::addAccountFB(), addAccountTW(), addAccountLI(), addAccountTumblr(), addAccountGmb(), and addAccountVk() approx. lines 738–864: each dispatches account persistence without returning its promise to the callback.
  • vue/src/vue-elements/sign-in-btn.vue — SignInBtn::getChildWindowMessage() lines 889–928: dispatches the relevant add-account method, performs tracking, and reloads without confirming persistence completed.
  • vue/src/models/rop_store.js — Vuex fetchAJAXPromise() lines 320–353: the REST request is asynchronous; request failure branches in the inspected version also do not reject the wrapping promise.
  • Git history: v9.4.0 (2026feb4) contains the vulnerable flow. Commit 53b2d9a5 on origin/bugfix/1099 states that reload can abort the request and lose the account; no release tag contains that commit in the inspected repository.

Engineering notes

The inspected callback handles Facebook/Instagram, X/Twitter, LinkedIn, Tumblr, Google Business Profile, and VK through the same asynchronous dispatch pattern, but the uninstall report does not identify which network failed. Valid first-account payloads are activated and persisted by the service/model path, so the strongest evidence points to the handoff between the authorization callback and REST persistence rather than first-account model logic. The external authorization application is outside the available repository and was not inspected.

Test coverage status

tests/e2e/specs/dashboard/accounts.spec.js lines 6–23 only checks that social-account buttons are visible. tests/test-accounts.php lines 28–51 covers seeded model state, and lines 66–102 covers service construction and sign-in URL generation. No relevant coverage was found during inspection for authorization-window messages, waiting for an add-account REST request, dashboard reload timing, or persistence of a first real social account.

What to verify or explore next

  • Reproduce a first account connection on v9.4.0 with network throttling and confirm whether reload cancels the add_account_* request.
  • Verify the callback flow separately for each supported popup-based social network because the report does not identify one.
  • Run the dashboard Playwright suite in tests/e2e/specs/dashboard/accounts.spec.js and inspect whether an authorization-message seam can exercise persistence completion before navigation.
  • Compare the behavior with origin/bugfix/1099 at commit 53b2d9a5 to confirm the reported failure no longer occurs under the same timing.

Unknowns / follow-up

The social network, browser, WordPress/PHP versions, callback payload, console output, and failed request details were not provided. The exact customer incident was not reproduced at runtime.

Confidence

Confidence: 92/100

The 9.4.0 tagged callback starts account persistence asynchronously and reloads the dashboard without waiting for completion; post-release commit 53b2d9a5 explicitly identifies that race as allowing the request to be canceled and the account to be lost. This directly matches the reported completed login followed by no connected account, although the specific network and browser timing are unknown.


Source: automated uninstall feedback — tweet-old-post, 2026-08-21
Generated by bug-report-triage (ID: bug-report-triage_6a892d06cd91e4.14376476)

Activity

  1. added theissue type on Aug 22, 2026
  2. girishpanchal30 commented on Sep 9, 2026

    @girishpanchal30
    Contributor

    I am unable to reproduce the issue with the current version. If anyone is able to reproduce it, please provide detailed steps or instance details so I can investigate further. As I review the codebase, the issue is handled and released in v9.4.2

  3. poonam279 commented on Sep 10, 2026

    @poonam279

    🤖 Automated QA Repro Steps

    Connecting the very first social account can silently fail: the user finishes logging in in the authorization popup, the Revive Social dashboard reloads — and no account is there. This is a timing race between the reload and the request that saves the account, so it cannot be triggered reliably by clicking through the flow at normal speed; it needs the save request to still be in flight when the page reloads. The fix already shipped in 9.4.2, so the useful pass here is a regression check on the whole connect flow.

    Requires: a real social account to authorize with (the flow goes through app.revive.social), and a throttled connection if you want to attempt the original race.

    Reproduce on Revive Social 9.4.0 or 9.4.1 (best effort), then regression-check on 9.4.2:

    1. On a site with no accounts connected, go to Revive Social → Accounts.
    2. Throttle the browser's network to a slow profile, then start the sign-in for one network and complete the login in the popup.
    3. Watch what the dashboard shows after the popup closes and the page reloads.
    • Bug (9.4.0/9.4.1): the dashboard comes back with no account connected and no error message — the save request was cancelled by the reload and the account is simply gone. Repeating the sign-in usually works, which is what makes it look intermittent.
    • Fixed (9.4.2): the dashboard waits for the save to finish before reloading, so the account is listed after the first attempt. If the save genuinely fails, the failure is logged rather than swallowed, and the account list is not left half-populated.
    Edge cases
    • Repeat on each popup-based network available to the account (Facebook/Instagram, X, LinkedIn, Tumblr, Google Business Profile, VK) — first account connects on the first attempt in each.
    • Connecting a second account when one is already present — the existing account is still there afterwards.
    • Cancel/close the authorization popup before finishing login — dashboard returns unchanged, no phantom account row, no stuck spinner.
    • Accounts → Reset all accounts, then connect a first account again — connects normally.
    • Load the Revive Social dashboard with the site briefly offline — the page still renders and recovers on reload instead of hanging on a spinner.

    Assumption: the reporter did not name the network or browser, so the steps use whichever network is easiest to authorize; the race is the same for all of them.

    Fix: #1105 (merged — in release 9.4.2)

  4. rodica-andronache commented on Sep 11, 2026

    @rodica-andronache

    I tried this, and I'm also not able to replicate the issue

  5. pirate-bot commented on Sep 30, 2026

    @pirate-bot
    ContributorAuthor

    🎉 This issue has been resolved in version 9.4.3 🎉

    The release is available on GitHub release

    Your semantic-release bot 📦🚀

  6. added
    releasedIndicate that an issue has been resolved and released in a particular version of the product.
    on Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bug-reportbug-report-triagereleasedIndicate that an issue has been resolved and released in a particular version of the product.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions