Page MenuHomePhabricator

Engineering Spike: technical feasibility of proposed Logged-Out Warning Message UX
Open, HighPublic5 Estimated Story PointsSpike

Assigned To
Authored By
KStoller-WMF
Dec 5 2025, 5:27 PM
Referenced Files
F71539343: Screen Recording 2026-01-16 at 15.40.42.mp4
Fri, Jan 16, 12:47 PM
F71146945: image.png
Dec 19 2025, 5:02 PM
F71146037: image.png
Dec 19 2025, 4:50 PM
F71146712: image.png
Dec 19 2025, 4:50 PM
F71145124: CleanShot 2025-12-19 at 09.37.51@2x.png
Dec 19 2025, 3:42 PM
F71145159: CleanShot 2025-12-19 at 09.39.12@2x.png
Dec 19 2025, 3:42 PM
F70872553: image.png
Dec 5 2025, 5:27 PM
F70872704: Dialog (3).png
Dec 5 2025, 5:27 PM

Description

User Story:

As a logged-out user who tries to edit an article, I want to be gently guided toward account creation, with clear benefits and a friendlier message that makes editing feel approachable and rewarding.

Asana hypothesis tracking: WE1.1.15 Logged-out editing UX

User Problem

When users attempt to edit while logged out, they encounter a jarring warning message that emphasizes editing as an IP or temporary account. This interface can feel abrupt and discouraging, and it frames logged-out editing as the primary path rather than encouraging users to create an account.

Screenshot 2025-12-05 at 9.10.49 AM.png (782×998 px, 101 KB)

Opportunity

There is an opportunity to soften the logged-out warning message and guide users toward account creation in a more supportive, motivating way. By improving the tone and visual hierarchy, we can better communicate the benefits of creating an account and make the overall experience less intimidating.

Design

Scope: this task is scoped to Mobile only, but includes VisualEditor and Source Editor.

Logged Out Warning Figma designs

Dialog (3).png (468×375 px, 50 KB)

image.png (2×2 px, 773 KB)

Known questions & edge cases to consider:
  • Will the popup pre-save be shown before or after the pre-save edit checks?
  • When you log in things should update so that they look like they would have if you were logged in when the page loaded. For instance: your username, your logged in settings (dark mode, text size, menus), the status of your notifications, (on mobile) advanced-mobile-contributions settings. There’s more complicated things — the state of various mw.config variables, any userscripts or CSS that the user has enabled, their gadget settings. The state of the edit-notices, which can vary based on whether you’re logged in. Mobile-specifically is fairly well positioned to be easier because its editor experience hides away all the normal page-chrome, so you could special-case that you can’t just back out of the editor and instead require a full page-reload. (This doesn’t apply to DiscussionTools on mobile). Potential options:
    • Literally just have it be “log in for purposes of saving”, don’t fix up anything apart from whatever mw.config is absolutely required for the save to be attributed correctly, and just have the page look correct after the save is done.
    • Rely on some not-necessarily-there-yet autosave code: after logging in trigger a page reload with some special URL parameter that’ll open the editor, fill it with the user’s changed text, and immediately go to the save dialog. (I’m fairly sure that specifically the wikitext editor on mobile is lacking this, currently.)
    • Go all-out and transition the page-state into a logged in version. For most users this won’t actually be too hard, but there’s going to be plenty of edge cases around skins and users with more complicated preferences.
  • Which editors are we targeting here exactly? VE, and the VE source editor? The 2017 Wikitext editor? The 2010 Wikitext Editor?
Acceptance Criteria:
  • Investigate the technical feasibility of the proposed UX and document the edge cases, open UX questions, and technical decisions we will need to consider.
  • Discuss findings with Product and Design so that follow-up engineering tasks can be created

[Extra Credit] If there aren't any serious technical blockers: create a basic patch demo to allow for early testing using the designs from Logged Out Warning Figma designs.

Event Timeline

Restricted Application changed the subtype of this task from "Task" to "Spike". · View Herald TranscriptDec 5 2025, 5:27 PM
KStoller-WMF moved this task from Inbox to Current Quarter Backlog on the Growth-Team board.
KStoller-WMF set the point value for this task to 5.Dec 15 2025, 5:13 PM

Timebox: 5 days

Will the popup pre-save be shown before or after the pre-save edit checks?

after chatting with @nayoub and @bmartinezcalvo we suggest to display the pre-save dialog at the very last stage, so after pre-save edit checks. the goal is to have a stronger separation of concerns between the editing activity (and addressing editing-related checks) and publishing (either with a temp account or via a permanent account).

Will the popup pre-save be shown before or after the pre-save edit checks?

after chatting with @nayoub and @bmartinezcalvo we suggest to display the pre-save dialog at the very last stage, so after pre-save edit checks. the goal is to have a stronger separation of concerns between the editing activity (and addressing editing-related checks) and publishing (either with a temp account or via a permanent account).

Could someone clarify or give examples of what checks are we talking about here. One thing that adds complexity on this decision is that my guess is the ideal UX here entails also to preserve the edit summary if any to make use of it at the time of submitting the editing without having to re-prompt the user. Can you confirm this @AAlhazwani-WMF ?

An unrelated/related nitpick in the designs is that I'm missing a "success screen" at the end of the workflow. I'm assuming we'd want to land in the article page, read mode, with some success toast. And also things need to look as if you were logged in.

Could someone clarify or give examples of what checks are we talking about here.

Currently you'd see various potential edit checks. If you added sufficient uncited content, you'll see the reference check. If you're in the right a/b test and you added questionably-toned content, you'll see tone check. If you're in the right a/b test and you pasted some content (and didn't answer our immediate questions), you'll see paste check. More to come.

An unrelated/related nitpick in the designs is that I'm missing a "success screen" at the end of the workflow. I'm assuming we'd want to land in the article page, read mode, with some success toast. And also things need to look as if you were logged in.

There's already a success toast after you save, so absent a specified change I'd assume this is still what you'd see:

logged in
CleanShot 2025-12-19 at 09.39.12@2x.png (1×784 px, 231 KB)
logged out
CleanShot 2025-12-19 at 09.37.51@2x.png (1×788 px, 252 KB)

Will the popup pre-save be shown before or after the pre-save edit checks?

after chatting with @nayoub and @bmartinezcalvo we suggest to display the pre-save dialog at the very last stage, so after pre-save edit checks. the goal is to have a stronger separation of concerns between the editing activity (and addressing editing-related checks) and publishing (either with a temp account or via a permanent account).

Could someone clarify or give examples of what checks are we talking about here.

here's an example

image.png (784×2 px, 689 KB)

when editors click the first publish button (blue background, right-pointing arrow), they're prompted with edit checks if there are issues in the article. the publish button becomes inactive until they resolve the edit check(s). once resolved, the button is active again - and clicking it takes them to the pre-save dialog. is this helpful?

One thing that adds complexity on this decision is that my guess is the ideal UX here entails also to preserve the edit summary if any to make use of it at the time of submitting the editing without having to re-prompt the user. Can you confirm this @AAlhazwani-WMF ?

in our proposal the edit summary is the very last step (after account creation/log in), so i don't think we need to preserve the summary because it wasn't entered, or am i missing something here?

image.png (694×2 px, 681 KB)

An unrelated/related nitpick in the designs is that I'm missing a "success screen" at the end of the workflow. I'm assuming we'd want to land in the article page, read mode, with some success toast. And also things need to look as if you were logged in.

yeah correct, what happens after publishing is exactly as in production: article in read mode and success message.

a-ha, thanks @DLynch! i didn't refresh the page hence didn't see your answer!


looking at the other questions under the task description..

Which editors are we targeting here exactly? VE, and the VE source editor? The 2017 Wikitext editor? The 2010 Wikitext Editor?

given that we're focusing on mobile i'd target only the editors fully supported on mobile.. so VE, and the VE source editor.

image.png (1×1 px, 432 KB)


another thing that i don't see in the task description that might be worth mentioning is that if someone is already a temp account, we shouldn't display the logged-out reminder - given that there's already the temp account banner present, nor the pre-save dialog (thou it might be an interesting idea to be explored in the future).

when editors click the first publish button (blue background, right-pointing arrow), they're prompted with edit checks if there are issues in the article. the publish button becomes inactive until they resolve the edit check(s). once resolved, the button is active again - and clicking it takes them to the pre-save dialog. is this helpful?

Just to note, this isn't *necessarily* the edit check flow. You only have to click "publish" again if you were kicked back to editing the article. Right now that will only happen with tone check, because you have to go actually edit some text. Adding a reference can be done entirely through the edit check tools, and so won't send you back like that.

Change #1220625 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/MobileFrontend@master] [DNM] VisualEditorOverlay: experimental post edit anon warning

https://gerrit.wikimedia.org/r/1220625

Change #1220627 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/GrowthExperiments@master] [DNM] PoC: new logged out warning for VE on mobile

https://gerrit.wikimedia.org/r/1220627

Test wiki created on Patch demo by SGimeno (WMF) using patch(es) linked to this task:
https://64beace24e.catalyst.wmcloud.org/w/

I tried a PoC for the VE flow to get familiar with the problem space and even with the autosave functionality working as expected there are some areas to work out. The main changes I did:

  1. Stop showing the current anon warning on the editor overlay (VisualEditorOverlay: experimental post edit anon warning). This is pretty straightforward, although I wonder, who/what component should be responsible of this warning as it's currently coming from different places in desktop and mobile.
  2. Add a dedicated LoggedOutMobileArticleTarget which intercepts the showSaveDialog call to show the new anon warning dialog.
  3. Add a dialog for the three options, I made it with Vue/codex but I'm not sure it is the best choice. On the one hand this would allow to use the same dialog for visual and source modes and use the latest MW front-end standard, on the other hand the communication between Vue and vanilla JS or VE is cumbersome. I had to use mw.hook events although I know there should be some more elegant ways.
  4. On the dialog Special:UserLogin and Special:CreateAccount urls I appended a query parameter geloggedoutguidance=1 as a way to flag the initiated flow to be able to display the publishing form on top of the recovered changes. This is not working as expected, for some reason I can't yet tell VE is not calling the addPlugin callbacks right after login. The idea is that the custom article target would override the initAutosave method with a version that recovers the changes and shows the dialog right away.
  5. For the create account flow I'm observing instances of the issue T397193 in patchdemo, although I think it may be a no-scenario since the CA/SUL3 auth flow is not enabled there.

I would appreciate directions from @DLynch specially on points (2) and the issue with registering an article target (4). I will continue the investigation for the source mode in the following days and post updates.

I wanted to reverse engineer the "mid edit" workflow on desktop with VE to take inspiration from and I'm observing different issues while performing it in testwiki and another prod wikis like enwiki. In testwiki I'm observing again the regression from T397193 which was apparently solved, so we may be experiencing a different instance of issue. In enwiki the WS is not shown and the user is properly redirected to the editing page, however the changes are not recovered into the editor.

  1. Making an entire different Target wouldn't be the pattern we'd normally use here. The existing targets already do plenty of "is this an anon?" checking inside themselves. What you probably actually want to do is have something add to the target's preSaveProcess, which would let you show the warning dialog there as part of the showSaveDialog flow. (You'd need to affirmatively decide how this is supposed to be interacting with the pre-save edit checks, which also use that process.)
  1. Particularly if you're wanting to drop this into the middle of the VE save flow, an OOUI dialog is going to be significantly easier to integrate.
  1. Making an entire different Target wouldn't be the pattern we'd normally use here. The existing targets already do plenty of "is this an anon?" checking inside themselves. What you probably actually want to do is have something add to the target's preSaveProcess, which would let you show the warning dialog there as part of the showSaveDialog flow. (You'd need to affirmatively decide how this is supposed to be interacting with the pre-save edit checks, which also use that process.)

Do you mean something similar to the pattern in editcheck/controller.js?

  1. Particularly if you're wanting to drop this into the middle of the VE save flow, an OOUI dialog is going to be significantly easier to integrate.

Agreed, I will refactor the dialog to be OOUI.

Do you mean something similar to the pattern in editcheck/controller.js?

Yes -- that's doing fundamentally the same thing as you want to, by inserting itself into the space between "the user presses the save button" and "the save dialog is shown".

Mobile VE visual mode

I was able to put together a PoC (thanks to DLynch's directions) in 64beace24e. It's a MVP that only works articles without sections, if the edit is in an article section the recovering after authenticating will fail. It needs quite some polishing but the approach seems doable. Some of the learnings and areas to work further are:

  • Manually testing this flow is very time consuming, building some Cypress test for it could be convenient. It could be used for easing local development and also as a secondary CI. It could be used to test against a matrix of auth setups. Also because currently it is not possible to test GE in conjunction with CA.
  • The PoC changes the ownership of the Logged out warning on mobile from MobileFronted to GrowthExperiments, while on desktop the warning continues to appear in the VE toolbar. Not sure which component is responsible for it. It would be good if the logged out warning has a clear place to sit and owner.
  • In the PoC, after the user logs in or creates an account and it is redirected to the article, there's a deliberate delay of 800ms between the article target creation and showing the edit summary dialog to let the autosave toast "Changes recovered" show. This needs a more refined approach, we need to decide if we want to show the toast at all or skip it, and that may require some changes in VE's autosave cc @DLynch . A more challenging optimization would be to avoid having to load the full editor to recover the changes and show the summary.

Mobile VE source mode

I haven't explored in depth David's suggestions in the description but from a UX pov the autosave approach seems the most consistent with the visual experience. I'm happy to explore this option with some extra time but building the autosave seems the most time consuming from it. We should also keep in mind that the experience described in this task is not the same as for desktop, in neither of the modes. It would be interesting to find the common parts, if any, of both experiences in order to scatter the less the logic across components.

I have noticed that the login dialog that's shown on desktop has a height that cuts off the bottom button and forces the person to scroll. You may have also noticed this when you were testing locally and chosen to fix it later as well since this is a PoC.

The PoC was and this task in general was scoped to mobile platform. I didn't check any desktop flow. The PoC does not check for the platform when loading the module that makes the intervention. I can be easily fixed and it's a fair reminder when we want to turn the PoC into production ready code. Specifically I used HelpPanelHooks#onBeforePageDisplay because these already load in the main article namespace, but it was a makeshift shortcut just for the PoC. Making the logged out warning depend on the help panel is probably not a good idea and this module should be loaded separatedly in the real implementation. cc @DMburugu

@AAlhazwani-WMF did you have a chance to try the patchdemo? Your feedback is higly welcome. I had to adapt a bit the UI because we're using OOUI dialogs and building one from scratch was time consuming.