Skip to content

chore: version 2026 02 24 1124#3224

Merged
eduardoformiga merged 109 commits into
mainfrom
release/version-2026-02-24-1124
Feb 24, 2026
Merged

chore: version 2026 02 24 1124#3224
eduardoformiga merged 109 commits into
mainfrom
release/version-2026-02-24-1124

Conversation

@eduardoformiga

@eduardoformiga eduardoformiga commented Feb 24, 2026

Copy link
Copy Markdown
Member

What's the purpose of this pull request?

This PR aims to generate a new version from dev to main.

Summary by CodeRabbit

  • New Features

    • Order details now display budget information including available balance and allocations.
    • Added reorder button to quickly reorder from previous orders.
    • Experimental debug logging for third-party integrations (disabled by default).
  • Bug Fixes

    • Fixed duplicate page view event tracking.
    • Improved preview redirect handling.

lariciamota and others added 30 commits October 30, 2025 09:26
## What's the purpose of this pull request?

Build our default image loader.

## How it works?

- When the FastStore image component is used, the `faststoreLoader` is
used.
- When the Next image component is used directly, the
`customImageLoader` is used.
- Both have the same behavior when handling images from VTEX (from the
file manager/cms and product images) -- they add to the URL the info
regarding size, quality and aspect, since those VTEX services already
handles optimizations.
- The difference between those loaders is regarding external images --
the one used for Next images uses the Next optimizations, and the
FastStore one doesn't.

It won't be necessary to use a feature flag like
`enableVtexAssetsLoader`.

## How to test it?

<!--- Describe the steps with bullet points. Is there any external link
that can be used to better test it or an example? --->

### Starters Deploy Preview

PR: vtex-sites/faststoreqa.store#881

## References

- [Jira task](https://vtex-dev.atlassian.net/browse/SFS-2878)
- [Slack
thread](https://vtex.slack.com/archives/C03L3CRCDC4/p1761334946034969)
## What's the purpose of this pull request?

Atts.
## What's the purpose of this pull request?

This PR fixes a visual bug in the TextareaField component where long
text would appear underneath the floating label during scroll, making it
difficult to read. The issue was identified during the review of [PR
#2705](#2705 (review)).

Additionally, comprehensive Storybook documentation was added to
showcase all TextareaField variations and use cases.


https://github.com/user-attachments/assets/a86cd4df-e286-40f4-82b0-271a8bc66a26




## How it works?

**Bug Fix:**
- Added `--fs-textarea-field-label-background-color` CSS variable to
`packages/ui/src/components/molecules/TextareaField/styles.scss`
- Set default value to neutral-0 (white) to prevent text from showing
through the label
- When the textarea content is long and the user scrolls, the label now
has an opaque background, preventing text overlap

## How to test it?

**Test the scroll bug fix:**

From the project root:
```bash
pnpm --filter "@faststore/storybook" dev
```

Or navigate to the storybook package:
```bash
cd packages/storybook
pnpm dev
```

Then:
1. Open http://localhost:6006 in your browser
2. Navigate to **"TextareaField"** → **"LargeText"** story
3. Scroll inside the textarea content
4. Verify that the text no longer appears underneath the label

## References
- **Related Issue:** [PR #2705 - TextareaField label overlap issue
identified](#2705 (review))
- **Task:** [SFS-2385 ](https://vtex-dev.atlassian.net/browse/SFS-2385)
## What's the purpose of this pull request?

Revert changes from 
- #2988
since the approach to filter shopper changes to use text field instead
of selected filter in the drawer.

## details

remove purchaseAgentId filter and related components from
`MyAccountListOrders`.

This update removes the purchaseAgentId filter and its associated
components from the MyAccountListOrders section. The changes include:
- Deleting the MyAccountFilterFacetPlacedBy component and its styles.
- Adjusting the MyAccountListOrders and MyAccountSelectedTags components
to eliminate references to purchaseAgentId.
- Cleaning up related styles and imports to streamline the codebase.

These modifications aim to simplify the order filtering process and
improve overall maintainability.
## What's the purpose of this pull request?

From a current Next.js's known issue
([discussion#44013](vercel/next.js#44013)),
these changes aim to add an experimental custom hook to handle scroll
restoration when navigating back from PDPs to PLPs.


https://github.com/user-attachments/assets/9a452081-4c65-4a83-8c16-9775f97d226d

Along with this experimental hook, some adjustments needed to be made to
correct the behavior of related components, such as `Sentinel`.

While the Next.js experimental `scrollRestoration` flag is not working
as it should, we are proposing this FastStore's experimental scroll
restoration alternative.

## How it works?

While navigating through PLPs and loading more pages, when users
navigate to a PDP and navigate back the scroll should be restored to the
last position before the navigation.

### Starters Deploy Preview

vtex-sites/faststoreqa.store#878

## References

#2054
## What's the purpose of this pull request?

Merge the changes from main
## What's the purpose of this pull request?

By using the direction property users will be able to use RTL or LTR
layouts.
## What's the purpose of this pull request?

With these changes, if merchants remove the footer logo the entire
footer component will not be hid anymore, it will throw a console error
but the component should be displayed with no logo.
#3077)

## What's the purpose of this pull request?

This PR fixes the `border-radius` of the Slider thumb in Firefox. The
current CSS rule for Mozilla uses an inexistent variable, making the
browser render a square instead of a circle:

<img width="1028" height="181" alt="image"
src="https://github.com/user-attachments/assets/50c08d79-a6a9-4d31-b2e7-5ef9e287080f"
/>

## How it works?

The `--fs-slider-thumb-radius` variable is replaced by
`--fs-slider-thumb-border-radius`, the one that is defined in the
default thumb variables.

## How to test it?

- Use the `Local Install Instructions` from the [CodeSandbox
CI](https://ci.codesandbox.io/status/vtex/faststore/pr/3077) to add this
version in the `package.json` of a store.
- Import the `Slider` atom (and styles) in a component following the
docs: https://developers.vtex.com/docs/guides/faststore/atoms-slider
- Run the store in development mode and browse it in Mozilla Firefox.

### Starters Deploy Preview

I'm unable to generate a preview link but here's a screenshot from
localhost:

<img width="1287" height="617" alt="image"
src="https://github.com/user-attachments/assets/f0a5a5e9-d657-41db-9415-303b5d17fefd"
/>

## Checklist

**PR Title and Commit Messages**

- [x] PR title and commit messages follow the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification
- Available prefixes: `feat`, `fix`, `chore`, `docs`, `style`,
`refactor`, `ci` and `test`

**PR Description**

- [ ] Added a label according to the PR goal - `breaking change`, `bug`,
`contributing`, `performance`, `documentation`..
_(No permissions. It's a bug though.)_

**Dependencies**

- [N/A] Committed the `pnpm-lock.yaml` file when there were changes to
the packages

**Documentation**

- [x] PR description
- [N/A] For documentation changes, ping `@Mariana-Caetano` to review and
update (Or submit a doc request)
)

## What's the purpose of this pull request?

Adds a new "Pending Approval" filter to the MyAccount orders page,
allowing users to quickly filter orders that require their approval.

## How it works?

- New toggle filter: Added "Pending Approval" as the first filter option
in the orders filter slider
- Toggle switch: Users can turn on/off the filter to show only pending
approval orders
- URL integration: Filter state is reflected in the URL
(?pendingApproval=true)
- Selected tag: When active, shows "Pending my approval" tag below the
search bar

## How to test it?

- Go to /account/orders
- Open filter slider and verify "Pending Approval" is the first option
- Toggle the switch and click "Apply"
- Check URL - should include ?pendingApproval=true
- Verify tag appears - "Pending my approval" tag should show below
search bar
- Test removal - click "×" on tag or "Clear All" to remove filter
- Test direct URL - navigate to /account/orders?pendingApproval=true and
verify filter is active

## Starter deploy preview

vtex-sites/b2bfaststoredev.store#358

## References

[SFS-2618](https://vtex-dev.atlassian.net/browse/SFS-2618)

| List | Filter |
| - | - |
|
![image](https://github.com/user-attachments/assets/70a02298-4461-4b21-926d-8d6b754a78bc)
|
![image](https://github.com/user-attachments/assets/2d6afc76-7153-473a-b839-c141e4f0ca1f)
|

[SFS-2618]:

https://vtex-dev.atlassian.net/browse/SFS-2618?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[SFS-2618]:
https://vtex-dev.atlassian.net/browse/SFS-2618?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

---------

Co-authored-by: Artur Santiago <artur.santiago@cubos.io>
)

## What's the purpose of this pull request?

Fix a bug that occurs when regionalized and `isSessionReady` is sent in
the' validateSession' and' validateCart' mutations.

## How does it work?

It removes the `isSessionReady` from the session sent to the `setRegion`
method.

<img width="1909" height="916" alt="Screenshot 2025-11-11 at 16 22 55"
src="https://github.com/user-attachments/assets/468cc987-a2ee-432f-b306-399bfd32e891"
/>
## What's the purpose of this pull request?

This PR aims to fix the build in the dev branch.
## What's the purpose of this pull request?

With these changes, a loading skeleton will be displayed when product
price is still being validated, preventing product price flickering on
PDP.

## How to test it?

### Starters Deploy Preview
## What's the purpose of this pull request?

Allow svg files in public folder, avoid it getting deleted/overwritten
when generating .faststore

## How it works?

Add it to the allow list.

## How to test it?

Create a svg file or modify an existing svg file, it should be copied
correctly to the `/.faststore/public` when running the build command.
You can use this PR to test:
vtex-sites/faststoreqa.store#887, I've added a
new svg file and changed an existing one, before it was being
deleted/overwritten.
<img width="287" height="420" alt="Screenshot 2025-11-20 at 09 57 19"
src="https://github.com/user-attachments/assets/7b01d806-bdf9-4c3b-a385-32ea11ab2518"
/>

Nothing else should change.

### Starters Deploy Preview

- https://storeframework-cm652ufll028lmgv665a6xv0g-h0max2o2h.b.vtex.app/

## References
- [Jira task](https://vtex-dev.atlassian.net/browse/SO-559)
## What's the purpose of this pull request?

This PR considers the session when deducing the changes to the orderForm
done externally.

## What it aims to solve

The current FastStore shows a competing nature when dealing with the
same cart on two different devices (E.g. 2 browsers, Chrome and
Firefox).

### How to reproduce the problem

- Open your store in Chrome and Firefox
- Make note of the checkout.vtex.com cookie value of Chrome and view the
content of the orderForm using a client like Postman
- Paste the value of the cookie to the checkout cookie of Firefox
- Now you should have the same orderForm in Chrome, Firefox and Postman
- Add an item to the cart from Chrome
- Without going to Firefox, verify that the item is present in the
orderForm using Postman
- Now go to Firefox, but you will not see the item (Expected: the item
should be present in the cart, Actual: the browser cart in Firefox will
override the items of the real orderForm object)
- Open Postman, and you will notice that the item is not present in the
orderForm
- Now go back to Chrome, and it will add back the item to the orderForm
- Open Postman, and you will notice that the item is present in the
orderForm

## How it works?

We include the session ID to the MD5 hash, so that when the store is
used in a different browser with the same orderForm, the two hashes are
different. The two browsers should respect the changes performed by each
other.

## How to test it?

- First verify that the existing behavior of the mutation `validateCart`
is as expected.
- Follow the steps under **How to reproduce the problem**, and verify
that the expected behavior is observed.

### Starters Deploy Preview

<!--- Add a link to a deploy preview from `starter.store` with this
branch being used. --->

<!--- Tip: You can get an installable version of this branch from the
CodeSandbox generated when this PR is created. --->

## References

<!--- Spread the knowledge: is there any content you used to create this
PR that is worth sharing? --->

<!--- Extra tip: adding references to related issues or mentioning
people important to this PR may be good for the documentation and
reviewing process --->

## Checklist

<em>You may erase this after checking them all 😉</em>

**PR Title and Commit Messages**

- [ ] PR title and commit messages follow the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification
- Available prefixes: `feat`, `fix`, `chore`, `docs`, `style`,
`refactor`, `ci` and `test`

**PR Description**

- [ ] Added a label according to the PR goal - `breaking change`, `bug`,
`contributing`, `performance`, `documentation`..

**Dependencies**

- [ ] Committed the `pnpm-lock.yaml` file when there were changes to the
packages

**Documentation**

- [ ] PR description
- [ ] For documentation changes, ping `@Mariana-Caetano` to review and
update (Or submit a doc request)
## What's the purpose of this pull request?

This PR aims to fix the source code to show `undefined` `searchTerm`.
<img width="916" height="811" alt="Screenshot 2025-11-20 at 19 01 42"
src="https://github.com/user-attachments/assets/b07e44a4-9e37-45e3-9712-6ab19b1af758"
/>


## How it works?

1. The source code can't access the searchTerm from the build time;
thus, this page uses the default
<img width="1899" height="656" alt="Screenshot 2025-11-20 at 18 42 43"
src="https://github.com/user-attachments/assets/697d1b4a-e5cb-4325-a5a1-3ba5d429b7b3"
/>

2. The final code (runtime code after hydration, you can see the element
tab in the devtools), can access the dynamic search term and uses it.
<img width="1570" height="1049" alt="Screenshot 2025-11-20 at 18 42 05"
src="https://github.com/user-attachments/assets/04e0a613-950f-4416-9200-dcc239326b41"
/>

## How to test it?

You can run `pnpm build && pnpm serve` and view the source code
(right-click> Source Code). Additionally, you can view the final code
using the Element tab in the DevTools.
vtexgithubbot and others added 17 commits January 21, 2026 15:27
…t` meta tag (#3179)

## What's the purpose of this pull request?

With these changes, merchants will be able to choose the the minimum
price fraction digits to be used on SEO's product price meta tag,
preventing mismatch values between displayed product price and SEO's
`product:price:amount`.

## How to test it?

Check if the displayed price for any product matches with the SEO's
`product:price:amount` meta tag.

### Starters Deploy Preview

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Product price meta tags (used by search engines and social previews)
now support configurable decimal precision, producing consistently
formatted price values for improved SEO and display.
* When no precision is set, prices fall back to previous default
formatting to preserve existing behavior.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Lucas Feijó <lucas.portela@vtex.com>
## What's the purpose of this pull request?

Adds a CodeRabbit instruction so reviews encourage flat conditionals
(early returns / `&&`) instead of nested ifs across all packages.

## How it works?

New rule in `path_instructions` in `.coderabbit.yaml`, under the
`packages/**/*.ts` block: prefer flat conditionals over nested ifs.

### Starters Deploy Preview

N/A
## What's the purpose of this pull request?

This PR implements the "Reorder" button feature in the My Account order
details page, allowing customers to quickly add all items from a
previous order back to their cart with a single click. This improves the
shopping experience by reducing friction when customers want to
repurchase items they've bought before.

## How it works?

The feature consists of:

1. **Reorder Button Component** (`MyAccountReorderButton`): A dedicated
button component displayed in the order details header that triggers the
reorder action. The button is styled as outlined by default and filled
on hover, and is hidden on mobile devices.

2. **Reorder Hook** (`useReorder`): A custom hook that handles the
reorder logic:
   - Extracts all items from the order's delivery options
- Converts order items to the format required by the checkout API
(`IStoreOffer[]`)
   - Uses the `validateCart` GraphQL mutation to add items to the cart
- The mutation automatically handles cart synchronization (replacing
existing items with the reordered items)
   - Updates the local cart store with the validated cart response
- Redirects the user to the checkout page after successfully adding
items

3. **Integration Points**:
- The reorder button is displayed in the order details header alongside
other order actions
- A "Reorder" option is also available in the `MyAccountOrderActions`
dropdown menu
   - Both trigger the same `useReorder` hook

4. **Cart Synchronization**: When the user already has items in their
cart, the `validateCart` mutation handles the synchronization by
replacing all existing cart items with the reordered items from the
order.

5. **Redirect to Checkout**: After successfully adding items to the
cart, users are automatically redirected to the checkout page using the
`redirectToCheckout` utility function, which handles both development
and production environments.

## How to test it?

1. Navigate to My Account > Orders
2. Open any completed order details page
3. Verify that the "Reorder" button is visible in the order header
(desktop/tablet only)
4. Click the "Reorder" button
5. Verify that:
   - All items from the order are added to the cart
- If there were existing items in the cart, they are replaced by the
reordered items
   - The user is redirected to the checkout page
   - The cart displays the correct items and quantities
6. Test the "Reorder" option in the dropdown menu (three dots icon) - it
should work the same way
7. Test on mobile - the reorder button should be hidden, but the
dropdown option should still be available
8. Test with an empty cart and with a cart that already has items

### Starters Deploy Preview

<!--- Add a link to a deploy preview from `starter.store` with this
branch being used. --->

<!--- Tip: You can get an installable version of this branch from the
CodeSandbox generated when this PR is created. --->

## References

- **Figma Design**:
https://www.figma.com/design/Jyt5kWamjkdPC8xMfeuWfR/My-Account?node-id=5005-80468&p=f&t=lJwhSHXsKzeNhdUS-0
- **Task**: B2BTEAM-2988
- **Checkout API Documentation**: Used `validateCart` mutation to add
items to the cart
- Related components:
  - `MyAccountOrderDetails` - Main order details page
  - `MyAccountReorderButton` - Reorder button component
  - `MyAccountOrderActions` - Order actions dropdown
  - `useReorder` - Reorder functionality hook
  - `redirectToCheckout` - Checkout redirection utility

## Screenshots

<img width="993" height="324" alt="Screenshot 2025-12-11 at 17 55 48"
src="https://github.com/user-attachments/assets/033842ed-4769-4de1-8dbe-b8335d25bfc8"
/>

## Checklist

**PR Title and Commit Messages**

- [x] PR title and commit messages follow the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification
- Available prefixes: `feat`, `fix`, `chore`, `docs`, `style`,
`refactor`, `ci` and `test`

**PR Description**

- [x] Added a label according to the PR goal - `breaking change`, `bug`,
`contributing`, `performance`, `documentation`..

**Dependencies**

- [ ] Committed the `pnpm-lock.yaml` file when there were changes to the
packages

**Documentation**

- [x] PR description
- [ ] For documentation changes, ping `@Mariana-Caetano` to review and
update (Or submit a doc request)



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added reorder flow: a Reorder button in order details and a Reorder
item in the actions dropdown to quickly recreate previous orders and
proceed to checkout.
  * Reorder button shows loading/disabled state while processing.

* **Bug Fixes / Behavior**
* Order actions now render consistently; cancellation remains available
only when allowed.

* **Style**
* Updated styles and responsive behavior for order header actions and
the reorder button (hidden on smaller viewports).
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## What's the purpose of this pull request?

No contexto do B2B FastStore, clientes corporativos precisam visualizar
informações sobre os budgets alocados em seus pedidos para ter
transparência sobre como os orçamentos foram utilizados. Atualmente,
essas informações não estão disponíveis na página de detalhes do pedido
no My Account, dificultando o acompanhamento financeiro e a gestão de
budgets pelos compradores B2B.

Esta implementação adiciona a exibição dos budgets alocados diretamente
na página de detalhes do pedido, seguindo o mesmo padrão visual dos
outros cards informativos (Payment, Delivery, Summary, etc.),
proporcionando uma experiência consistente e completa para os usuários
B2B.

## How it works?

Esta feature adiciona um novo card `MyAccountBudgetsCard` na página de
detalhes do pedido (`/pvt/account/orders/[id]`) que exibe informações
sobre os budgets alocados ao pedido.

**Implementação técnica:**

1. **GraphQL Schema** (`packages/api/src/typeDefs/userOrder.graphql`):
- Adicionados novos tipos GraphQL para representar a estrutura de dados
de budgets:
     - `UserOrderBudgetData`: Container principal com lista de budgets
- `UserOrderBudget`: Informações do budget (id, name, unitId,
cycleConfiguration, balance, allocations)
- `UserOrderBudgetAllocation`: Informações de alocação específica
(linkedEntity, balance, reservations, ToBeSpent)
- `UserOrderBudgetBalance`: Valores financeiros (amount,
balanceAdjustment, remaining)
- `UserOrderBudgetCycleConfiguration`: Configuração do ciclo do budget
- Campo `budgetData` adicionado aos tipos `UserOrder` e
`UserOrderResult`

2. **API Layer** (`packages/api/src/platforms/vtex/resolvers/query.ts`):
- O resolver `userOrder` agora retorna o campo `budgetData` diretamente
da API VTEX OMS
- Os dados são obtidos através do endpoint
`/api/oms/user/orders/${orderId}` que já retorna essas informações

3. **Componente React**
(`packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/`):
- Novo componente `MyAccountBudgetsCard` criado seguindo o padrão dos
outros cards do My Account
   - Exibe uma tabela com as seguintes colunas:
- **Name**: Nome do budget (truncado se > 20 caracteres) e IDs das
allocations relacionadas
- **Available**: Valor disponível do budget (baseado na maior
allocation)
     - **To be spent**: Valor a ser gasto (balanceAdjustment)
     - **Remaining**: Valor restante após o gasto
- O componente processa múltiplos budgets e suas allocations,
selecionando a allocation com maior valor de balance para exibição
- Renderização condicional: o card só é exibido se `budgetData` existir
e contiver budgets com allocations válidas

4. **Integração**
(`packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderDetails.tsx`):
- O componente `MyAccountBudgetsCard` foi integrado na página de
detalhes do pedido
- Posicionado após o `MyAccountSummaryCard` e antes dos accordions de
delivery options
- Renderização condicional baseada na existência de `order.budgetData`

5. **Query GraphQL**
(`packages/core/src/pages/pvt/account/orders/[id].tsx`):
- Adicionado o fragment `budgetData` na query `ServerOrderDetailsQuery`
para buscar todas as informações necessárias dos budgets

**Comportamento:**
- O card só aparece quando há budgets alocados ao pedido
- Valores são formatados usando a moeda do pedido (`currencyCode`)
- Se não houver budgets ou allocations válidas, o card não é renderizado
(fail-safe)

<img width="1149" height="1231" alt="Screenshot 2025-12-10 at 10 14 45"
src="https://github.com/user-attachments/assets/ba562900-ea8b-428d-9475-025598e72738"
/>

## How to test it?

### Pré-requisitos:
- Ter acesso a uma conta VTEX B2B com budgets configurados
- Ter um pedido que utilize budgets alocados

### Passos para teste:

1. **Configurar ambiente de desenvolvimento:**
   ```bash
   pnpm install
   pnpm dev
   ```

2. **Acessar a página de detalhes do pedido:**
   - Fazer login no My Account
   - Navegar para `/pvt/account/orders`
   - Selecionar um pedido que tenha budgets alocados

3. **Verificar a exibição do card de budgets:**
   - O card "Budgets" deve aparecer após o card "Summary"
   - Verificar se os valores estão sendo exibidos corretamente:
     - Nome do budget truncado corretamente se > 20 caracteres
     - Valores formatados na moeda correta
     - IDs das allocations exibidos na linha secundária do nome
   - Verificar se os cálculos estão corretos:
     - Available: valor disponível
     - To be spent: valor do balanceAdjustment
     - Remaining: valor restante

4. **Testar casos edge:**
   - Pedido sem budgets: o card não deve aparecer
   - Budget sem allocations: o card não deve aparecer
   - Múltiplos budgets: todos devem ser exibidos na tabela

5. **Verificar responsividade:**
   - Testar em diferentes tamanhos de tela
   - Verificar se a tabela se adapta corretamente

### Starters Deploy Preview

<!--- Adicionar link do deploy preview quando disponível --->

## References

**Task relacionada:**
- [B2BTEAM-2726](https://vtex-dev.atlassian.net/browse/B2BTEAM-2726) -
Exibir budgets alocados no detalhe do pedido do myaccount

**Documentação:**
- [Documento de
produto](https://docs.google.com/document/d/1CG9RZ-lmD01-C4q3OwIdXaoMTAsUqHEse2yqH1cxskI/edit?tab=t.0#heading=h.tglo77yl0lf5)
- [FastStore My
Account](https://docs.google.com/document/d/17qlQerzx3cva2dupafbEaJhsu_aLLuxFf6IniVIwRBM/edit?pli=1&tab=t.0)
- [FastStore - My Account
Vision](https://docs.google.com/document/d/17Zjk_5mydxLuWiYAyQhucLXQ0Z5n4YNcZmuED8-ZG3I/edit?tab=t.0#heading=h.tglo77yl0lf5)
- [Building My
Account](https://developers.vtex.com/docs/guides/faststore/my-account-overview)
- [My Account - Extensibilidade de
páginas](https://docs.google.com/document/d/1qVc6PBv8s19HIvG-IwGVgKRM720mY46WEBURO9253Sg/edit?tab=t.0)
- [My Account - FastStore - Extensibilidade de
sections](https://docs.google.com/document/d/1iIUm8dO01YK5ssoUW0h5-Ygc1_YrbDFy1BjzuyZOpK4/edit?tab=t.0#heading=h.tglo77yl0lf5)

**Relacionado:**
- [B2BTEAM-2724](https://vtex-dev.atlassian.net/browse/B2BTEAM-2724) -
Task relacionada que serviu de referência para esta implementação

## Checklist

<em>You may erase this after checking them all 😉</em>

**PR Title and Commit Messages**

- [x] PR title and commit messages follow the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification
- Available prefixes: `feat`, `fix`, `chore`, `docs`, `style`,
`refactor`, `ci` and `test`

**PR Description**

- [x] Added a label according to the PR goal - `breaking change`, `bug`,
`contributing`, `performance`, `documentation`..

**Dependencies**

- [ ] Committed the `pnpm-lock.yaml` file when there were changes to the
packages

**Documentation**

- [x] PR description
- [ ] For documentation changes, ping `@Mariana-Caetano` to review and
update (Or submit a doc request)

---


[B2BTEAM-2726]:
https://vtex-dev.atlassian.net/browse/B2BTEAM-2726?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Order details pages now display comprehensive budget information
including allocated budgets with cycle dates and auto-reset options,
current balance amounts, reserved amounts across allocations, calculated
available funds, balance adjustments, and enhanced responsive table
layouts optimized for mobile and desktop viewing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eduardo Formiga <eduardo.formiga@gmail.com>
Co-authored-by: Larícia Mota <laricia.mota@vtex.com.br>
Co-authored-by: Matheus P. Silva <cout.matheusps@gmail.com>
Co-authored-by: Leandro Rodrigues <leandro.swf@gmail.com>
Co-authored-by: vtexgithubbot <vtexgithubbot@github.com>
Co-authored-by: Lucas Feijó <lucas.portela@vtex.com>
Co-authored-by: Luiz Falcão <39093175+llfalcao@users.noreply.github.com>
Co-authored-by: Artur Santiago <artur.santiago@cubos.io>
Co-authored-by: Sahan Jayawardana <sahan@clouda.io>
Co-authored-by: Mateus Pontes <mateuspo10@gmail.com>
Co-authored-by: Matheus Martins <mathews_2010@outlook.com>
Co-authored-by: renatomaurovtex <167437775+renatomaurovtex@users.noreply.github.com>
Co-authored-by: Leandro Rodrigues <leandro.rodrigues@vtex.com>
Co-authored-by: Fanny Chien <fanny.chien@vtex.com>
## Summary

- Replace hardcoded version references (`^3.97.0-dev.2`) with
`workspace:*` protocol for `@faststore/components` and `@faststore/ui`
in `packages/ui/package.json` and `packages/storybook/package.json`
- This ensures local packages are always resolved from the monorepo
workspace during development

## Motivation

Extracted from PR #3117 as requested in [code
review](#3117) by @lariciamota, so
we can identify possible problems easier by isolating this change.

## Changed files

- `packages/ui/package.json` — `@faststore/components` dependency and
peerDependency changed to `workspace:*`
- `packages/storybook/package.json` — `@faststore/components` and
`@faststore/ui` dependencies changed to `workspace:*`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Switched internal package references in Storybook and UI to
workspace-based declarations to improve build consistency.
* Aligned dependency declarations across the monorepo to reduce version
mismatch risks and streamline local development and local testing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Larícia Mota <laricia.mota@vtex.com.br>
## What's the purpose of this pull request?

When `redirectPath` contains a query string (e.g. /test?id=1), the
preview cookie's path attribute was being set to the full string
including the query. Since the HTTP Set-Cookie Path attribute only
supports URL paths, the query string portion was causing the cookie to
not be scoped correctly, breaking preview mode for those routes.

## How it works?

Removes the query string from `redirectPath` before assigning it to
`options.path` in `setPreviewAndRedirect`. This ensures the cookie Path
is always a clean URL path (e.g. /test instead of /test?p=1).
The query string is still preserved in the `res.redirect(redirectPath)`
call, so the user is redirected to the correct URL with all query
parameters intact — only the cookie scoping is affected.

## How to test it?

On `storeframework` hCMS I've created a draft for the search page:
<img height="250" alt="hCMS"
src="https://github.com/user-attachments/assets/20c3114b-d685-44e3-911a-1dae847dd4c8"
/>

To test it, run this branch's code or use the starters deploy preview
(https://sfj-2cf1e42--faststoreqa.preview.vtex.app) and:
- Call the preview API route, e.g.:

/api/preview?contentType=search&documentId=332345a3-2a79-421d-bce0-7400c82b47e6&versionId=169b9294-4bf1-4b52-a37d-e7811f158bf5
- Verify that the preview mode cookies (`__prerender_bypass` and
`__next_preview_data`) are set with Path without the query string
- Verify that the browser is redirected to the path with the query
string preserved as it is configured in the `previewRedirects` of the
store (for the `storeframework` account for example it's configured as
`search: "/s?q=headphone"`)
- Verify that preview mode works correctly on the target page

| With this change | Without this change |
| ----- | ----- |
| <img width="1608" height="1034" alt="with"
src="https://github.com/user-attachments/assets/8fc0cefc-3275-4e6b-b331-617db8b104f9"
/>
https://sfj-2cf1e42--faststoreqa.preview.vtex.app/api/preview?contentType=search&documentId=332345a3-2a79-421d-bce0-7400c82b47e6&versionId=169b9294-4bf1-4b52-a37d-e7811f158bf5
| <img width="1605" height="1034" alt="without"
src="https://github.com/user-attachments/assets/1b0d262c-076d-4ccf-8af4-fbbb088e235e"
/>
https://storeframework.vtex.app/api/preview?contentType=search&documentId=332345a3-2a79-421d-bce0-7400c82b47e6&versionId=169b9294-4bf1-4b52-a37d-e7811f158bf5
|
| Note that the cookies are being set with the path **without** the
query string and that the change in hCMS (text "Results Preview test")
is being shown | Note that the cookies are being set with the path
**with** the query string and that the change in hCMS is **not** being
shown |

### Starters Deploy Preview

https://sfj-2cf1e42--faststoreqa.preview.vtex.app/
([PR](vtex-sites/faststoreqa.store#894))

## References
- [Jira task](https://vtex-dev.atlassian.net/browse/SO-576)
- [Next.js docs — `setPreviewData`
options](https://nextjs.org/docs/pages/building-your-application/configuring/preview-mode#specify-the-preview-mode-duration)
@eduardoformiga eduardoformiga requested a review from a team as a code owner February 24, 2026 14:39
@eduardoformiga eduardoformiga requested review from emersonlaurentino and lemagnetic and removed request for a team February 24, 2026 14:39
@eduardoformiga eduardoformiga merged commit f45d73e into main Feb 24, 2026
5 of 7 checks passed
@eduardoformiga eduardoformiga deleted the release/version-2026-02-24-1124 branch February 24, 2026 14:40
@coderabbitai

coderabbitai Bot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Warning

Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories.

ℹ️ Recent review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 458401a and 25cd1ee.

⛔ Files ignored due to path filters (6)
  • .coderabbit.yaml is excluded by none and included by none
  • CHANGELOG.md is excluded by none and included by none
  • packages/api/src/__generated__/schema.ts is excluded by !**/__generated__/** and included by packages/**
  • packages/core/@generated/gql.ts is excluded by !**/@generated/**, !**/@generated/** and included by packages/**
  • packages/core/@generated/graphql.ts is excluded by !**/@generated/**, !**/@generated/** and included by packages/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml and included by none
📒 Files selected for processing (38)
  • packages/api/CHANGELOG.md
  • packages/api/src/platforms/vtex/resolvers/query.ts
  • packages/api/src/typeDefs/userOrder.graphql
  • packages/cli/CHANGELOG.md
  • packages/cli/README.md
  • packages/components/CHANGELOG.md
  • packages/core/CHANGELOG.md
  • packages/core/discovery.config.default.js
  • packages/core/src/Layout.tsx
  • packages/core/src/components/ThirdPartyScripts/GoogleTagManager.tsx
  • packages/core/src/components/ThirdPartyScripts/ThirdPartyScripts.tsx
  • packages/core/src/components/ThirdPartyScripts/vtex.tsx
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/MyAccountBudgetsCard.tsx
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/index.ts
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/styles.scss
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderActions/MyAccountOrderActions.tsx
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderActions/styles.scss
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderDetails.tsx
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountReorderButton/MyAccountReorderButton.tsx
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountReorderButton/index.ts
  • packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountReorderButton/styles.scss
  • packages/core/src/components/account/orders/MyAccountOrderDetails/section.module.scss
  • packages/core/src/constants.ts
  • packages/core/src/pages/_document.tsx
  • packages/core/src/pages/api/preview.ts
  • packages/core/src/pages/pvt/account/orders/[id].tsx
  • packages/core/src/sdk/account/useReorder.ts
  • packages/core/src/sdk/analytics/hooks/usePageViewEvent.ts
  • packages/core/src/sdk/analytics/platform/vtex/search.ts
  • packages/core/src/sdk/cart/redirectToCheckout.ts
  • packages/core/src/sdk/cart/useCheckoutButton.ts
  • packages/core/src/sdk/error/ReorderError/ReorderError.ts
  • packages/graphql-utils/CHANGELOG.md
  • packages/lighthouse/CHANGELOG.md
  • packages/sdk/CHANGELOG.md
  • packages/storybook/CHANGELOG.md
  • packages/ui/CHANGELOG.md
  • packages/ui/package.json

Walkthrough

Added budget data to order details with a new UI card displaying budget allocations and remaining balances. Introduced a reorder feature allowing customers to quickly repurchase previous orders. Enhanced third-party script integration with optional console logging for debugging GTM and VTEX events.

Changes

Cohort / File(s) Summary
Budget Feature - GraphQL Schema
packages/api/src/typeDefs/userOrder.graphql, packages/api/src/platforms/vtex/resolvers/query.ts
Added budgetData field to UserOrder and UserOrderResult types with nested structures for budgets, cycle configuration, balance, and allocations. Updated resolver to include budgetData in query response with fallback to empty budgets array.
Budget Feature - UI Component
packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/...
New MyAccountBudgetsCard component rendering a styled table of budgets with Available/To-be-spent/Remaining columns. Integrates budget data into order details with price formatting and allocation-based calculations. Includes SCSS styling for responsive grid layout.
Reorder Feature - Hook & Utilities
packages/core/src/sdk/account/useReorder.ts, packages/core/src/sdk/cart/redirectToCheckout.ts, packages/core/src/sdk/error/ReorderError/...
New useReorder hook handling order validation, item flattening, GraphQL mutation, cart update, and checkout redirect. Added redirectToCheckout utility abstracting dev/prod environment handling. Introduced ReorderError class for reorder-specific error handling.
Reorder Feature - UI Components
packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountReorderButton/..., packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderActions/..., packages/core/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderDetails.tsx
New MyAccountReorderButton component with loading state. Updated MyAccountOrderActions to accept order prop and render Reorder action. Integrated both components into order details header with responsive visibility rules and SCSS styling adjustments.
Order Details - Layout & Styling
packages/core/src/components/account/orders/MyAccountOrderDetails/section.module.scss
Extended grid layout to accommodate Budgets card and header actions section. Added responsive visibility rules, normalized media query syntax, and adjusted spacing. Imported new component styles.
Third-Party Scripts - Logging Infrastructure
packages/core/src/constants.ts, packages/core/discovery.config.default.js, packages/core/src/pages/_document.tsx
Added LOG_LABEL_STYLE constant for styled console output. Introduced experimental.enableScriptsLogs config flag. Enhanced document root with dynamic Partytown configuration and conditional forwarding logic for debug mode.
Third-Party Scripts - GTM & VTEX
packages/core/src/components/ThirdPartyScripts/GoogleTagManager.tsx, packages/core/src/components/ThirdPartyScripts/vtex.tsx, packages/core/src/components/ThirdPartyScripts/ThirdPartyScripts.tsx
Added conditional debug logging for GTM dataLayer.push and VTEX RC/AF events when enableScriptsLogs is enabled. Removed Partytown JSX integration. Updated VTEX RC URL endpoint from .com.br to .com.
Analytics & Routing
packages/core/src/sdk/analytics/platform/vtex/search.ts, packages/core/src/sdk/analytics/hooks/usePageViewEvent.ts, packages/core/src/sdk/cart/useCheckoutButton.ts, packages/core/src/pages/api/preview.ts
Enhanced search analytics with payload expansion (userAgent, anonymous, session) and conditional logging. Added path deduplication in page view events via ref tracking. Refactored checkout button to use extracted redirectToCheckout utility. Fixed preview redirect to strip query strings.
Layout & Component Updates
packages/core/src/Layout.tsx
Replaced useMemo + ReactElement typing with direct isValidElement check for children prop extraction, simplifying memoization logic.
GraphQL Query Extension
packages/core/src/pages/pvt/account/orders/[id].tsx
Extended userOrder query to fetch budgetData including budget balances, allocations, and linked entity references.
Documentation & Versioning
packages/api/CHANGELOG.md, packages/cli/CHANGELOG.md, packages/components/CHANGELOG.md, packages/core/CHANGELOG.md, packages/graphql-utils/CHANGELOG.md, packages/lighthouse/CHANGELOG.md, packages/sdk/CHANGELOG.md, packages/storybook/CHANGELOG.md, packages/ui/CHANGELOG.md, packages/cli/README.md
Added multiple dev version entries (3.97.0-dev.x) documenting budget and reorder features. Updated workspace dependency reference in UI package.json from 3.x to workspace:*.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant Button as MyAccountReorderButton
    participant Hook as useReorder Hook
    participant API as GraphQL API
    participant CartStore as Cart Store
    participant Checkout as Checkout

    User->>Button: Click Reorder
    Button->>Hook: reorder(order)
    Hook->>Hook: Validate order & flatten items
    Hook->>API: Execute ValidateCartMutation
    API->>Hook: Return validated orderNumber & cart
    Hook->>CartStore: Update cart with new ID & items
    Hook->>Checkout: redirectToCheckout(orderNumber)
    Checkout->>User: Navigate to checkout with order params
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

enhancement

Suggested reviewers

  • lemagnetic
  • emersonlaurentino

Poem

💰 Budgets bloom in order details bright,
🔄 Reorder flows from click to checkout's light,
📊 Scripts whisper logs when debug's turned on,
✨ Order history dances, elegantly drawn

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release/version-2026-02-24-1124

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codesandbox-ci

Copy link
Copy Markdown

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

thiagopereira-vtex pushed a commit that referenced this pull request Mar 10, 2026
This PR aims to generate a new version from dev to main.

---------

Co-authored-by: Larícia Mota <laricia.mota@vtex.com.br>
Co-authored-by: Matheus P. Silva <cout.matheusps@gmail.com>
Co-authored-by: Leandro Rodrigues <leandro.swf@gmail.com>
Co-authored-by: vtexgithubbot <vtexgithubbot@github.com>
Co-authored-by: Lucas Feijó <lucas.portela@vtex.com>
Co-authored-by: Luiz Falcão <39093175+llfalcao@users.noreply.github.com>
Co-authored-by: Artur Santiago <artur.santiago@cubos.io>
Co-authored-by: Sahan Jayawardana <sahan@clouda.io>
Co-authored-by: Mateus Pontes <mateuspo10@gmail.com>
Co-authored-by: Matheus Martins <mathews_2010@outlook.com>
Co-authored-by: renatomaurovtex <167437775+renatomaurovtex@users.noreply.github.com>
Co-authored-by: Leandro Rodrigues <leandro.rodrigues@vtex.com>
Co-authored-by: Fanny Chien <fanny.chien@vtex.com>
Co-authored-by: Arthur Andrade <arthurfelandrade@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
lemagnetic added a commit that referenced this pull request Mar 10, 2026
This PR aims to generate a new version from dev to main.

---------

Co-authored-by: Larícia Mota <laricia.mota@vtex.com.br>
Co-authored-by: Matheus P. Silva <cout.matheusps@gmail.com>
Co-authored-by: Leandro Rodrigues <leandro.swf@gmail.com>
Co-authored-by: vtexgithubbot <vtexgithubbot@github.com>
Co-authored-by: Lucas Feijó <lucas.portela@vtex.com>
Co-authored-by: Luiz Falcão <39093175+llfalcao@users.noreply.github.com>
Co-authored-by: Artur Santiago <artur.santiago@cubos.io>
Co-authored-by: Sahan Jayawardana <sahan@clouda.io>
Co-authored-by: Mateus Pontes <mateuspo10@gmail.com>
Co-authored-by: Matheus Martins <mathews_2010@outlook.com>
Co-authored-by: renatomaurovtex <167437775+renatomaurovtex@users.noreply.github.com>
Co-authored-by: Leandro Rodrigues <leandro.rodrigues@vtex.com>
Co-authored-by: Fanny Chien <fanny.chien@vtex.com>
Co-authored-by: Arthur Andrade <arthurfelandrade@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.