sync: TRAC-1236 sync integrations/b2b-makeswift with integrations/makeswift@1.5.0 - #3143
Merged
chanceaclark merged 80 commits intoJul 29, 2026
Merged
Conversation
When the sort option is changed in the product filter, the before/after pagination query params are now removed. This prevents stale pagination cursors from being used with the new sort order, which could lead to incorrect results or empty pages. Changes: - Updated Sorting component to use useQueryStates instead of useQueryState - Now manages sort, before, and after params together - Clears before and after params when sort value changes Co-authored-by: Claude <noreply@anthropic.com>
* fix(core): delete duplicate select component * fix: remove console.log
…tion form tooltip (#2814)
* fix(core): persist checkbox modifier in PDP * fix: handle default value for checkbox * fix: revert form changes but keep track of options in params * fix: update changset
…able based on selection (#2818)
* feat(core): add required prop to Label component and update form elements - Introduced a `required` prop to the Label component to indicate mandatory fields. - Updated Input, Textarea, NumberInput, Select, Checkbox, RadioGroup, and other form components to utilize the new `required` prop for better accessibility and user experience. * refactor(core): format required indicator in Label component for improved readability * display optional text for form fields instead of required asterisk * fix linting * add internationalization and translated messages for optional text * remove formatting from da.json file * removed formatting from language files * removed formatting from language files * added changeset * remove 'optional' field from multiple language files * ensure required prop is passed down in form input components * pass required prop to RadioGroupPrimitive.Root * fix linting * removed optional text from checkbox * Pass field.required to CheckboxGroup and Checkbox so that optional text can be displayed
…it, fix e2e tests (#2820)
* Add preventDefault to login form to prevent resetting of form on failed login attempt * added changeset * remove passing of action to form since actions is called manually in onSubmit handler
* chore(ci): BIGCOMMERCE_STORE_HASH secret is now var * chore(ci): BIGCOMMERCE_CHANNEL_ID secret is now var
* refactor: decouple fields from state in DynamicForms * fix: remove options from fields * fix: pass passwordComplexity as an arg * fix: remove fields from return state in contact form * chore: add changeset
* feat(other): LOCAL-1444 delivery translation * chore(core): create translations patch --------- Co-authored-by: bc-svc-local <bc-svc-local@users.noreply.github.com>
* fix(core): remove decorative price element from accessibility tree * fix: update to include accessibility best practices * fix: update changeset * fix: add price label component
* Updated gift certificate balance placeholder * remove placeholders from gift certificates form * add placeholders for coupon code and gift certificate on cart page * added changelog * remove placeholder for coupon code
* chore(catalyst): CATALYST-1297 Run E2E tests on PRs * fix(catalyst): Fix required prop missing on cart shipping form * chore(catalyst): CATALYST-1297 Use test matrix
* chore(ci): pass channel-specific env vars to vercel deploy * chore(ci): harden deploy workflow security replace eval with bash arrays, add timeouts, improve secret handling * chore(ci): add b2b env vars to deploy workflow
* feat(other): LOCAL-1444 delivery translation * chore(core): create translations patch --------- Co-authored-by: bc-svc-local <bc-svc-local@users.noreply.github.com>
* fix(core): preview deployments now use correct metadataBase * fix: lint issue * fix: use URL.canParse * chore: update changeset
* feat(ci): enable unlighthouse performance audits for vercel Re-enable the performance category in Unlighthouse with mitigations for hardware throttling: maxConcurrency=1 and samples=5 (median smoothing absorbs cold start outliers across all discovered pages without needing an explicit warm-up step). Rename artifacts with a "vercel" label for future cross-platform comparison. CATALYST-1768 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: revert samples to 3 * chore: add concurrency to speed tests * fix: target specific PLP and PDP pages to prevent wasted runtime * fix: change PLP category to bath * fix: expand report * chore: test concurrency and all routes * fix: fixed paths, multiple samples, with concurrency * fix: run all pages, concurrency enabled, 1 sample size * fix: add sample size of 3 * feat: add dynamic sampling * fix: split brands and categories * fix: update excluded routes * fix: excluded paths * fix: exclude other sites * fix: disable throttling * chore: update dynamic sampling * fix: remove brands from custom sampling since it should be picked up automatically * chore: limit concurrency * chore: remove concurrency limit, no visible change --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(core): conditionally include optional SEO metadata * fix: remove new line in product meta description
* feat(other): LOCAL-1444 delivery translation * chore(core): create translations patch --------- Co-authored-by: bc-svc-local <bc-svc-local@users.noreply.github.com>
* feat: report bundle size delta * fix: add missing env vars * fix: update reporting to hide no changes and visibly show updates * feat: update bundle baseline when merged to canary * fix: include integrations/makeswift * chore: add comments * fix: use parseArgs, split script from workflow * chore: remove indicators * feat: compare reports of live canary/makeswift branch instead of baseline * fix: add --dir arg to use the script file in the PR to generate reports * fix: split workflows to run in parallel * fix: filter out 0% delta changes * fix: use .at(0) and update resolve * fix: add tests for scripts * fix: use typescript and change PR comment report
…amount_display (#2901) The form change handler only checked for inputs named 'amount', but the select element for predefined gift certificate amounts uses the name 'amount_display'. This caused the GiftCertificateCard preview to not update when selecting a new amount from the dropdown.
…age poisoning (#2905) Replace static imports of next/headers, next/navigation, and next-intl/server with dynamic import() calls inside the hooks that use them. Static imports cause these modules to be evaluated during module graph resolution when next.config.ts imports this file, poisoning the process-wide AsyncLocalStorage context. Dynamic imports defer module loading to call time, after Next.js has fully initialized.
* chore(core): bump next.js to 16 and align peer deps Upgrade next, @next/bundle-analyzer, eslint-config-next to ^16.1.0 and @next/eslint-plugin-next to ^16.1.0. React 19.1.5 is already compatible. * refactor(core): replace unstable_expireTag with revalidateTag * refactor(core): replace unstable_expirePath with revalidatePath * chore(core): update tsconfig for next.js 16 Change jsx from "preserve" to "react-jsx" and add .next/dev/types to the include array for generated dev types. * fix(core): resolve Next.js 16 deprecation lint errors Replace `NextMiddleware` with `NextProxy` and `priority` with `preload` on Image components per Next.js 16 API changes. * chore(core): add changeset for Next.js 16 upgrade
* chore: compare unlighthouse reports preview vs production * fix: update labels and show scores from 0 to 100 * chore: add tests
Resolve inflated visitor counts caused by three issues: - Visit cookie used a fixed TTL instead of a sliding window, creating new visits for users browsing longer than 30 minutes. Now refreshes the cookie TTL on every request. - Prefetch and RSC requests triggered new visit and product view events. Now guards against Next-Router-Prefetch and RSC headers so only real navigations fire analytics mutations. - Locale redirects from withIntl bypassed analytics entirely. Reorder middleware so withAnalyticsCookies runs before withIntl, ensuring cookies survive redirect responses. Fixes CATALYST-1532 Co-authored-by: Claude <noreply@anthropic.com>
Next.js 16 deprecates middleware.ts in favor of proxy.ts. This renames the entry point, export, composition utilities, and directory to align with the new convention. Also enforces Node 24 via engines field in package.json, since proxy runs on the Node.js runtime (not Edge).
# Conflicts: # core/proxies/with-intl.ts # core/proxies/with-makeswift.ts # core/proxy.ts # pnpm-lock.yaml
fix(core): fix layout shift on makeswift page navigation
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ons-b2b-makeswift @bigcommerce/catalyst-makeswift@1.5.0 # Conflicts: # core/app/[locale]/(default)/(auth)/register/_actions/register-customer.ts # core/app/[locale]/(default)/(auth)/register/page-data.ts # core/app/[locale]/(default)/(auth)/register/page.tsx # core/data-transformers/product-options-transformer.ts # core/package.json # core/proxies/with-b2b.ts # core/proxy.ts # package.json # pnpm-lock.yaml
🦋 Changeset detectedLatest commit: ce07ea7 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Bundle Size ReportComparing against baseline from
Per-Route First Load JS
|
chanceaclark
force-pushed
the
sync-integrations-b2b-makeswift
branch
from
July 28, 2026 21:46
b150a8f to
ce07ea7
Compare
parthshahp
approved these changes
Jul 29, 2026
chanceaclark
merged commit Jul 29, 2026
ce07ea7
into
integrations/b2b-makeswift
23 of 29 checks passed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Jira: TRAC-1236
What/Why?
Rung 4 of 9 in the makeswift catch-up climb (LTRAC-1297):
1.4.0 → 1.5.0(79 commits).Structural change: upstream renamed
core/middlewares/*→core/proxies/*(middleware.ts→proxy.ts,composeMiddlewares→composeProxies,MiddlewareFactory→ProxyFactory). b2b's ownmiddlewares/with-b2b.tsmoved along with it (git relocated the file automatically); updated its stale imports (./compose-middlewares→./compose-proxies,MiddlewareFactory→ProxyFactory) and re-wired thewithB2Bimport into the newcore/proxy.ts. The actualcomposeProxies(...)call already hadwithB2Bcorrectly positioned (auto-merged), only the import block needed fixing. Confirmed no other stalemiddlewares//compose-middlewaresreferences remain anywhere.core/data-transformers/product-options-transformer.ts— not actually a b2b customization, adopted upstream wholesale: b2b'spersist: option.isVariantOption+id: option.entityIdon every option type turned out to just be b2b running makeswift's older (1.4.0-era) convention, not a deliberate B2B override — confirmed makeswift@1.4.0 had the exact same code. Upstream's 1.5.0 changed this to a static per-field-typepersist(truefor selectable types,falsefor free-text types) and dropped theidfield. Checked that nothing downstream (especially B2B code) readsfield.idfrom product options (only the unrelated address-form transformer usesfield.id), so took upstream's version wholesale — confirmed via diff that only these exact fields differed, nothing else was lost.Register page: same pattern as rungs 2–3, makeswift's edit to the old
page.tsxis moot since b2b'sregister/route.tsredirect is untouched and still live. Kept the deletion.Same
package.json/CHANGELOG.mdsilent auto-merges, caught again: top-levelversionclobbered to raw1.5.0(reverted to b2b's actual1.4.0);CHANGELOG.mdhad makeswift's own historical entries pasted in (reverted to ours). Kept newereslint-config-next15.5.10. Picked up upstream's newengines: { node: ">=24.0.0" }incore/package.jsoncleanly.Root
package.json: additive conflict, kept b2b'schangeset:versionscript alongside upstream's newtest:scripts.Release-wiring guardrail: not conflicted this rung (nothing upstream touched those files this time), confirmed unchanged and correct.
Switched local verification to the repo's actual pinned Node version (
24.18.0via mise/.nvmrc, which this rung bumpedenginesto require) instead of the Node 20 I'd been using — no engine warnings, typecheck/lint both clean.Added
.changeset/sync-makeswift-1-5-0.mdfor this rung's own bump.Rollout/Rollback
Internal upgrade branch, no runtime/customer impact until eventually released and adopted. Rollback = revert the merge commit.
Do not squash or rebase-and-merge this PR. Use a true merge commit to preserve the merge base between
integrations/makeswiftandintegrations/b2b-makeswift.Testing
pnpm install --no-frozen-lockfileclean (Node 24).pnpm --filter @bigcommerce/catalyst-b2b-makeswift typecheck— clean (0 errors).pnpm --filter @bigcommerce/catalyst-b2b-makeswift lint— clean (0 errors, 0 warnings).