Skip to content

Guard against browser-API regressions and slow fix propagation #55

@djscruggs

Description

@djscruggs

Summary

Following #51 / #52 (navigator.credentials is non-configurable on WebKit, so the Object.defineProperty() call added in 3.2.1 threw and loadOnce() rejected on all iOS browsers and desktop Safari), two gaps remain that let the regression both ship and linger in dependents:

  1. No browser test exercised load(). CI runs lint only — there was no automated assertion that load() succeeds in any browser, so the WebKit breakage shipped undetected from 3.2.1 onward.

  2. No signal pushed the fix downstream. Consumers pin ^4.0.x and would resolve the patched version on a fresh install, but lockfiles stayed pinned to the broken version and nothing prompted a bump + redeploy.

This issue proposes monitoring/guardrails across three layers. It is a proposal for discussion — the open questions at the bottom should be resolved before implementation.

Layer 1 — Browser-API regression detection

1a. Cross-browser smoke test in CI (highest leverage).

1b. External browser-release feed (optional second layer).

  • Watch WebKit/Chromium release notes and web-platform-tests deltas for Credential Management API / navigator.credentials changes, to flag upcoming behavior changes before they reach stable. Noisier; does not prove our code breaks (1a does).

Layer 2 — Downstream propagation

2a. Dependabot.

  • Add .github/dependabot.yml (npm) so a new release auto-opens a lockfile-bump PR in this repo and in dependents.

2b. Staleness check.

  • A small script reporting, per consumer: pinned range, resolved (lockfile) version, and latest published — flagging anyone behind. Runnable on demand or on a schedule.

Layer 3 — External consumers

  • Publish release notes / advisory for the fix.

  • Consider npm deprecate on the affected version range with a message pointing at the WebKit breakage, so installers see a warning.

Open questions

  1. WebKit in CI: Playwright's bundled WebKit (Linux, fast) vs. real Safari on a macOS runner (accurate, costlier)? Bundled WebKit already exhibits the non-configurable navigator.credentials behavior.

  2. Layer 1b: build now, or defer until 1a is proven?

  3. Dependabot rollout: this repo only, or this repo plus direct consumers?

  4. Ownership of any scheduled check (1b / 2b): scheduled GitHub Action vs. run-on-demand?

  5. npm deprecate: acceptable to deprecate the affected range, given some pinned consumers would then warn on install?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions