You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Establishes an enforceable browser-compatibility contract for the Web package.
Declares the initial supported browser floor: Chrome, Android Chrome, Edge, Firefox, and Android Firefox 111+, plus Safari and iOS Safari 16.4+.
Derives Vite/esbuild build targets from that policy.
Adds an ESLint compatibility check over runtime Web source, so unsupported browser APIs fail linting.
Documents the supported-browser policy in the Web README.
Updates the checkout E2E selector for the Contact field.
This is an intentionally modern initial baseline. It remains higher than a broader compatibility baseline used by other checkout surfaces, while turning our existing Safari/iOS 16.4+ commitment into a concrete, enforceable cross-browser policy.
No runtime compatibility regression was found in the before/after build comparison: the PR base and head produce byte-for-byte identical dist/index.js. The new checks enforce the declared policy during linting and compilation; they add no runtime browser-version gate. This verifies unchanged shipped JavaScript, rather than claiming exhaustive testing of every legacy browser.
We evaluated a lower native-feature-based floor. It added about 7.4 kB raw / 1.5 kB gzip to the bundle, largely from downleveling private class fields to WeakMap/WeakSet state and lowering other modern syntax. A follow-up can revisit broader support and differential delivery if there is a product requirement for it.
Validation
dev web lint
dev web test
dev web build
Before/after bundle comparison: base f245de7 vs head a781034; both builds passed and dist/index.js is byte-for-byte identical (34,073 bytes, matching SHA-256).
Measured from the PR base SHA and PR head SHA. The file breakdown shows uncompressed sizes within each package artifact, so individual files do not sum to the compressed artifact total. This comment reports package artifact sizes only; it is not a final app binary-size report.
Follow-up discussion: browser support and delivery
This PR establishes a deliberately modern npm baseline and does not introduce multiple browser artifacts.
A lower browser floor is feasible, but makes the single shipped bundle about 1.5 kB gzip larger because of syntax transforms, particularly private class fields. A future CDN path could instead use a stable public loader that selects a modern or baseline implementation artifact at runtime, so modern browsers avoid that cost.
Questions for follow-up:
Is the initial 111 / Safari-iOS 16.4 floor the right npm support contract?
Do we have a product requirement for broader browser support?
If so, should CDN delivery eventually provide modern/baseline artifacts while npm remains one modern self-contained ESM package?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Establishes an enforceable browser-compatibility contract for the Web package.
This is an intentionally modern initial baseline. It remains higher than a broader compatibility baseline used by other checkout surfaces, while turning our existing Safari/iOS 16.4+ commitment into a concrete, enforceable cross-browser policy.
No runtime compatibility regression was found in the before/after build comparison: the PR base and head produce byte-for-byte identical
dist/index.js. The new checks enforce the declared policy during linting and compilation; they add no runtime browser-version gate. This verifies unchanged shipped JavaScript, rather than claiming exhaustive testing of every legacy browser.We evaluated a lower native-feature-based floor. It added about 7.4 kB raw / 1.5 kB gzip to the bundle, largely from downleveling private class fields to
WeakMap/WeakSetstate and lowering other modern syntax. A follow-up can revisit broader support and differential delivery if there is a product requirement for it.Validation
dev web lintdev web testdev web buildf245de7vs heada781034; both builds passed anddist/index.jsis byte-for-byte identical (34,073 bytes, matching SHA-256).