WordPress 7.1 updates bundled jQuery UI to 1.14.2. Plugins and themes that depend on sortable behavior, old event timing, helper dimensions, touch adapters, nested containers, or custom CSS can show a drag preview while saving the wrong order or offering no keyboard alternative.
Use this for menu-like builders, widget panels, dashboard cards, form fields, product options, galleries, table rows, page-builder controls, nested lists, and admin screens that store order through AJAX.
Quick answer
Inventory every screen that initializes sortable, its handle, axis, containment, connectWith, helper, placeholder, cancel selector, event callbacks, persistence request, nonce, role check, and accessible alternative. Freeze a starting order with stable item IDs. Test mouse, trackpad, touch or supported adapter, 200 percent zoom, RTL, nested moves, cancelled moves, rapid moves, failed AJAX, stale nonce, browser Back, and reload. Compare visual order, serialized request, stored order, API response, reload order, and screen-reader path.
Test scenarios to run
Run the same controlled fixture across these branches. Write down the expected result before testing so a surprising response is easy to identify.
| Scenario | Fixture | Expected result |
| Mouse | Move item 3 to 1 | Stored order matches reload |
| Touch | Scroll then drag | No accidental page lock |
| Keyboard | Move control | Equivalent saved result |
| Failed save | 500 after drag | Rollback or reconcile |
Diagnostic table
Use this table to connect the observed behavior to evidence and a verification step.
| Action | Evidence | Verification |
| Inventory sortable owners | Record WordPress, jQuery, jQuery UI, plugin, browser, device, touch adapter, locale, zoom, reduced motion, role, screen, options, callbacks, and save endpoint. | Mouse, touch, zoom, RTL, nested, and connected-list fixtures behave as designed. |
| Freeze stable order fixtures | Capture initial item IDs and parent relationships, then trace start, sort, change, receive, remove, update, stop, serialization, request, database write, success, error, and rollback. | A keyboard-accessible path produces the same stored order. |
| Test every input mode | Test pointer movement, touch when supported, keyboard or button-based alternatives, nested and connected lists, scrolling, zoom, RTL, cancelled selectors, disabled items, and duplicate labels. | Timeout, denial, server error, stale nonce, and concurrent edits recover clearly. |
| Inject persistence failures | Inject timeout, 403, 500, stale nonce, concurrent tab, and lost response while checking whether the UI rolls back or reconciles the saved authoritative order. | Reload and API reads match the final approved order. |
What to check first
- Record WordPress, jQuery, jQuery UI, plugin, browser, device, touch adapter, locale, zoom, reduced motion, role, screen, options, callbacks, and save endpoint.
- Capture initial item IDs and parent relationships, then trace start, sort, change, receive, remove, update, stop, serialization, request, database write, success, error, and rollback.
- Test pointer movement, touch when supported, keyboard or button-based alternatives, nested and connected lists, scrolling, zoom, RTL, cancelled selectors, disabled items, and duplicate labels.
- Inject timeout, 403, 500, stale nonce, concurrent tab, and lost response while checking whether the UI rolls back or reconciles the saved authoritative order.
- Repair event assumptions or CSS narrowly, provide an accessible move control when drag is not keyboard operable, and add saved-order fixtures to release testing.
Field notes
- Write the pass condition before changing anything and keep one repeatable synthetic fixture for the full test window.
- Record exact versions and UTC timestamps because deployments, caches, retries, scheduled actions, and background jobs can change the evidence.
- Test the public path and the stored server-side result, not only an admin preview, isolated command, or API response.
- Repeat verification after the relevant cache, queue, cron, webhook, and observation window has completed.
Useful command or data shape
Adapt paths, IDs, and privacy handling to the site before running commands or storing data on production.
screen,mode,start_order,request_order,stored_order,reload_order,result
builder,mouse,1-2-3,3-1-2,3-1-2,3-1-2,pass
builder,keyboard,1-2-3,3-1-2,3-1-2,3-1-2,pass
Why this usually happens
- A plugin relies on undocumented event ordering or helper dimensions.
- A touch adapter duplicates pointer handling after the library update.
- The interface updates visually before a failed persistence request returns.
- A drag-only control has no keyboard-accessible equivalent.
Decision rule
Approve the WordPress 7.1 update only when visual, serialized, stored, and reloaded order agree for supported inputs, and failed saves produce a clear reversible state.
Production verification checklist
- Mouse, touch, zoom, RTL, nested, and connected-list fixtures behave as designed.
- A keyboard-accessible path produces the same stored order.
- Timeout, denial, server error, stale nonce, and concurrent edits recover clearly.
- Reload and API reads match the final approved order.
Safe fix order
Use a sequence that makes each result easy to prove. Stop when new evidence changes the scope or owner of the problem.
- Inventory sortable owners
- Freeze stable order fixtures
- Test every input mode
- Inject persistence failures
- Add accessible equivalent controls
Mistakes to avoid
- Changing production before recording exact versions, UTC timestamps, a stable fixture, the expected result, and a tested rollback point.
- Treating one successful screen as proof while stored records, logs, queues, caches, emails, APIs, and downstream systems remain unchecked.
- Testing only as an administrator instead of using the role, device, locale, cache state, and failure branch that real users reach.
- Leaving temporary exclusions, debug output, helper accounts, broad permissions, or one-off repair code active after verification.
Questions teams ask during testing
Can I run this directly in production?
Begin with read-only evidence and use staging for package, code, database, form, or permission changes. If a production canary is necessary, make it identifiable, reversible, monitored, and unable to expose personal data or charge a customer.
How do I avoid a false positive?
Repeat the same fixture with the same versions, role, URL, locale, cache state, and downstream integrations. Compare browser, stored, and log evidence instead of relying on one screen.
What should the evidence packet contain?
Keep UTC time, exact versions, synthetic record ID, expected result, actual result, relevant log lines, change made, rollback point, owner, and final verification. Redact secrets and personal data.
When is the test complete?
Close the work when the primary path passes, failure branches are understood, stored and downstream records reconcile, temporary changes are removed, and monitoring covers the next update.
What to tell the client or owner
Give the owner a concise packet with the affected workflow, exact versions, UTC test time, fixture ID, expected result, actual result, key logs, change made, rollback point, final result, unresolved risks, owner, and next review date. Remove credentials and personal data before sharing it.
When HandL WP should help
Bring in help when this affects leads, checkout, search visibility, security, paid media reporting, or a client production site. HandL WP can trace the issue through WordPress, hosting, cache, tracking, and Search Console, then verify the workflow after the technical fix.
If this is active on a production site, have HandL WP test WordPress 7.1 compatibility.
Related HandL WP guides
Use these related guides when the same issue touches tracking, security, checkout, or crawler visibility.
Helpful references