Executive summary
- What: API version 2026-10 removes the static session.currentSession.staffMemberId field from the POS UI Extensions Session API.
- Why: The replacement, session.staffMember, is a reactive signal that updates when a different staff member pins into the terminal, so extensions stop acting on stale identity.
- Who: Any team shipping custom POS UI extensions. Extensions on 2026-07 and earlier are unaffected until they upgrade.
What changed
staffMemberId was deprecated in 2026-07 and is gone in 2026-10. Reads of session.currentSession.staffMemberId become session.staffMember.value?.id. The optional chaining matters, because the signal can legitimately hold no staff member and the old static read gave you no way to express that state.
To respond to a staff change while the extension is running, subscribe with session.staffMember.subscribe((staffMember) => { ... }). In a Preact component built on @shopify/ui-extensions/preact, reading .value during render is enough, since the component re-renders automatically when the signal changes.
One thing did not change. The BaseData session.staffMemberId available to receipt targets is a separate API and keeps working as before. If your only usage sits in a receipt target, this removal does not touch you.
Why it matters
A retail terminal is shared hardware. Across a shift, several staff members pin in and out of the same device, and the old static field captured identity once, at extension load. Anything built on it, including commission attribution, approval gates, and manager-only actions, could silently credit work to whoever happened to be signed in when the extension started. Moving to a signal makes identity follow the person actually at the counter.
The practical risk is not the migration, which is a one-line change in most codebases. It is finding the dependency late. Custom POS extensions tend to be built once and left alone, and the people who maintain the in-store POS setup are rarely the same people watching the developer changelog.
Role-specific impact
- Marketers: No direct impact, although staff-attributed promotions and clienteling flows depend on correct identity to report accurately.
- Developers: Search your POS extension code for currentSession.staffMemberId, migrate to the signal, and decide per call site whether a one-time read or a subscription is correct.
- Store admins: Nothing to configure. Confirm with whoever maintains your POS extensions that a plan exists before you move stores onto 2026-10.
Use-case example
Real-world scenario
A specialty retailer with 22 locations runs a POS extension that stamps each sale with the assisting associate for a monthly commission report. Associates share four terminals per store and pin in and out throughout the day. On the static field, any sale completed after a pin change inherited the previous associate's ID until the extension reloaded. A spot audit of one month found roughly 6 percent of line items misattributed. Subscribing to session.staffMember fixed attribution at the moment of sale and removed the manual correction pass that two store managers were running every period.
Implementation checklist
- Search every POS UI extension for session.currentSession.staffMemberId.
- Replace each read with session.staffMember.value?.id and handle the empty case explicitly.
- For logic that must react mid-session, subscribe to the signal rather than reading it once at load.
- In Preact extensions, import from @shopify/ui-extensions/preact so that reading .value triggers a re-render.
- Leave receipt-target code that uses the BaseData session.staffMemberId untouched.
- Test on a physical terminal with two staff members pinning in and out, not only in the simulator.
- Bump the extension to API version 2026-10 and deploy.
FAQ
Q: What happens if we target 2026-10 without migrating?
A: The field no longer exists, so the read returns undefined. Nothing fails loudly. Logic that depends on staff identity degrades quietly, which is why a code search beats waiting for a bug report.
Q: Do we need to move off 2026-07 right now?
A: No. Extensions on 2026-07 and earlier keep the deprecated field and behave exactly as they do today. Schedule the change for whenever you next raise the extension's API version.
Resources
POS UI Extensions Session API reference
Need guidance? Talk to Makro.