OOB Features In Magento 2
In Magento 2, OOB (Out of the Box) features refer to the built-in functionalities and capabilities that come with the core installation of the Magento 2 platform. These features are readily available and do not require additional customization or extensions to be implemented.
Core Components Of OOB in Magento 2
- Product Management
- Catalog Management
- Order Management
- Payment and Shipping Methods
- Customer Accounts
- Search Engine Optimization (SEO)
- Marketing and Promotions
- Reporting and Analytics
- Mobile-Friendly and Responsive Design
- Elasticsearch Updates
- Inventory Management
- Infrastructure Improvements
Version-2.4.1
In Magento 2.4.1, the “Out of the Box” (OOB) concept refers to the features and functionality that come bundled with the Magento platform by default, without the need for additional customizations or extensions. Here are some notable OOB features in Magento 2.4.1
GraphQl Api
This release adds GraphQL coverage for the following features:
Product reviews
- Customers and guests can write product reviews. Customers can retrieve their product review histories. See Create a product review and productReviewRatingsMetadata query for information on retrieving information about the reviews infrastructure.
Gift options
- All customers and guests can add a gift message to their order. Customers can also add gift wrapping, gift receipts, and printed cards to the order. See setGiftOptionsOnCart mutation and updateCartItems mutation
Order history
- All customers can view details about their order histories, including invoices, shipping, and refunds.
Add to cart
- The addProductsToCart mutation allows you to add any type of product to the active cart. We recommend using this mutation instead of single-purpose mutations such as addSimpleProductsToCart. Fix submitted by Yaroslav Rogoza in pull request 27914. GitHub-28524
Stored payment methods
- Logged-in customers can now store payment details (including Braintree credit card and Braintree with PayPal) in My Account.
Support for wish lists in Magento Open Source
- You can add items to, update items in, and remove items from a wish list.
Improved management of customer accounts.
- We have added the createCustomerV2 and updateCustomerV2 mutations to manage customer accounts. These new mutations require different input objects than the createCustomer and updateCustomer mutations. To change a customer’s email address, use the new updateCustomerEmail mutation.
Support for Payflow Pro Vault
- Added GraphQL Vault support for the Payflow Pro Vault payment method.
Klarna GraphQL
- Added or updated topics on Klarna GraphQL in Klarna’s payment method and createKlarnaPaymentsSession
PWA Studio
PWA Studio v8.0.0 introduces new features and enhancements:
- Updates to the Venia style guide that apply to design tokens, typography, colors, core components, and page layouts
- Improvements to the Venia mini-cart experience
- Initial support for multiple locales and localized content on the Venia storefront
- Numerous improvements to the MyAccount experience of the Venia storefront
See compatibility for a list of PWA Studio versions and their compatible versions. For information about enhancements and bug fixes, see PWA Studio releases.
B2B
Version 2.4.1 introduces B2B v1.3.0. This release includes improvements to order approvals, shipping methods, shopping cart, and logging of Admin actions.
Improvements to Order Approvals
B2B order approvals have been enhanced to improve usability and to allow for bulk actions on purchase orders.
Improvements to order approval and rejection include the following:
- New View Rule page for users without edit privileges
- Count alert icon on the Requires My Approval tab
- Bulk order approvals and rejections.
- Merchants can now search the Applies to and Requires approval from fields of the My Purchase Orders view and can select multiple user roles during rule creation.
- Examples of how to configure Order Approval rules are provided on the Rule Configuration page.
B2B buyers can now view rules that apply to their company on the new View Rule page when they do not have permission to edit them.
The Requires My Approval tab in the My Purchase Orders view now displays a counter that indicates the number of pending approval actions.
B2B managers and Company Administrators can now perform bulk rejection and approval of purchase orders. These changes allow approvers to approve or reject multiple purchase orders in a single action.
Shopping cart improvements
- Merchants can now allow users to clear the contents of their shopping cart in a single action and can configure this ability independently on each website.
- B2B buyers can now add individual items or the entire contents of their shopping cart directly to a requisition list.
New Admin features
- B2B merchants can create orders from the Admin on behalf of customers using Payment on Account as the payment method.
- Merchants can now directly view all quotes associated with a user from the customer’s detail page.
- Merchants can now filter the Customers Now Online grid by Company.
- Admins can now filter customers in the Admin by Sales Rep.
Enhanced security on storefront
To reduce creation of fraudulent or spam accounts, merchants can now enable Google reCAPTCHA on the New Company Request form on the storefront. See reCAPTCHA.
Vendor Developed Extensions
See the following articles for updates on features and changes for this release:
- Amazon Pay
- Braintree
- dotdigital Engagement Cloud
- Klarna
- Vertex Cloud
- Yotpo Product Reviews
Installation, upgrade, deployment
- Installation with third-party extensions that have dependencies on APIs for the Store module in CLI commands no longer fails. Previously, the application displayed this error message: The default website isn’t defined. Set the website and try again. This was a known issue in 2.4.0.
- bin/magento setup:di:compile no longer throws a fatal error. Previously, the application threw an error the first time you ran this command, but the second execution resulted in successful compilation.
- Upgrade no longer fails when a plugin is declared on Magento\Framework\Encryption\Encryptor.
- The application now displays an informative error message when some themes are not deployed after running bin/magento setup:static-content:deploy. Previously, when deployment completed successfully but not all packages were deployed, the application did not display an error. When this command is executed with enabled parallel processing and each theme requires more time to be deployed then the specified maximum execution time, this command can finish successfully, although themes are not deployed.
- The Use default checkbox for Klarna payments (Stores > Configuration > Sales > Payment methods > Klarna) now remain checked as expected when website scope changes.
- Running /bin/magento config:show vendor_module/general/value now returns 0 or an empty string as expected. Previously, it returned Configuration for path: “vendor_module/general/value” doesn’t exist.
- Upgrade no longer results in the sudden failure of the Galera cluster. Previously, the Galera cluster exited abruptly after re-indexing immediately after upgrade. During an upgrade, index tables are altered, and the engine is changed from MEMORY to InnoDB. At this point, the content of these tables became out-of-sync between the nodes of the Galera cluster.
- Disabling the PageBuilder module no longer affects the rendering of the product page. Previously, custom layouts on the product page disappeared when the module was disabled, and the application displayed a blank page.
- You can now use bin/magento sampledata:deploy to deploy sample data as expected after installing Adobe Commerce using Composer. Previously, the application threw this error: Git installations must deploy sample data from GitHub; see https://devdocs.magento.com/guides/v2.3/install-gde/install/sample-data-after-clone.html for more information.
- Storefront performance has improved by eliminating the unnecessary loading of the Datepicker component.
Cache
Local cache storage is now retained for the period of time set in Stores > Configuration > General > Web > Default Cookie Settings. Previously, the expiry date of cookies was hard-coded to one day, which put it out of sync with this setting. As a result, welcome messages did not retain returning customer information for the expected duration.
Cart and checkout
- Direct SQL queries have been replaced by Data Provider, which has improved checkout performance
- The Products in the Comparison and the Recently Compared Products lists now work as expected. Previously, when the comparison list was expanded, the application did not display products, even though the section indicated that the list contained products.
- The Delete button on the Add to Shopping Cart by SKU section of a customer’s Manage Shopping Cart page now works as expected when multiple rows are selected.
- The application no longer throws an error when you try to order a product by SKU when the digits you enter match a valid SKU but the case of these digits differ. Previously, when you entered an SKU on My Account > Order by SKU that did not exactly match a valid SKU, the application threw an error.
- A customer’s shipping address is now selected by default at checkout when the address is located in the country identified on the Allow Countries list and that list includes only that country. Previously, the application did not select the address as default and displayed this error message: Please specify a regionId in shipping address.
- Merchants can now enable Apply to Shipping Amount in the Action tab of Marketing > Cart Price Rules > Add New Rule when Fixed amount discount for whole cart is applied.
- The State/Province/Region input box is now enabled as expected on My Account > Address Book > Add new address.
Catalog
The application now removes disabled products from a shopper’s cart before checkout. Previously, when a shopper added a product to their cart that was disabled before checkout completed, the application removed the disabled product from the cart, but the product remained in the quote, and the shopper could not check out.
- The total record count displayed when you click Add Products on the Products tab when adding products to a catalog category no longer changes based on product sort order.
- The {products(filter: {sku: {eq: “some sku”}}) {…} query now returns values that have been converted into the expected currency. Previously, price_tiers.final_price.value displayed special prices in the base currency.
- The Hierarchy tab for a selected default store view now displays the selected parent page as expected.
- The application no longer throws an error during store view creation when the new store view contains a CMS page with the same URL key as a page in a different store view.
- The application now throws an error when a merchant creates a CMS page with the same URL as the Company Structure page. Previously, the application displayed the CMS page instead of the Company Structure page.
- Message queue consumer configuration has been extended with new parameters that help control consumers and save server resources and that potentially decrease consumer queue CPU consumption. See Configure message queues for a description of the maxIdleTime, sleep, and onlySpawnWhenMessageAvailable parameters.
- sales_clean_quotes no longer loads all expired quotes at once. Previously, the applicationfailed with this fatal error because all expired quotes were loaded simultaneously: PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 20480 bytes) in /path/to/magento2/vendor/magento/framework/Model/AbstractModel.php on line 359,
- The privacy and cookie policy link in the page footer is now displayed as an active link when the Privacy and Cookie Policy page is displayed
- Fixed misalignment of the cursor in the Invoice Comments text area of the invoice associated with an order you have selected from Admin Sales > Orders.
- The Create New Order page now displays Add Products By SKU and Add Products buttons as expected.
- The application now displays the Edit Review page properly when a Product Rating is available for the selected product.
- The application now correctly displays the Admin customer edit page on an iPhone running Safari.
- Corrected unnecessary scrolling on the Create New Order page.
- The Add selections to my cart button on the bottom of the shopping cart now works as expected. This was a known issue in 2.4.0.
- The Refresh button of the Recently Viewed Products section of the Customer’s Activities page now works as expected. Previously, when you clicked Refresh, the product list was not refreshed, and the page scrolled.
- Invoices created using REST now include gift card information similar to the invoices that are created in the Admin. Previously, using POST /V1/order/:id/invoice to invoice the order did not display the gift card code or gift card amount applied.
- Merchants with multiple websites can now use the REST API to create and update products while preserving image and image-role inheritance. Previously, when a merchant used the REST API to create and update products, and a product was updated for store view, and the default image roles were loaded and saved for that store view. As a result, the store-view image roles stopped inheriting from the default scope after update.
- Security enhancements
- Platform enhancements
- Accessibility updates
- Adobe Commerce integration with Adobe IMS
- Braintree
- GraphQL
- Page Builder
- PWA Studio
- IP allowlisting
- two-factor authentication
- use of a VPN
- use of a unique location rather than /admin
- good password hygiene
- Gaps in Admin action logs have been addressed with more specific auditing of actions within grid views, mass actions, and exports.
- reCAPTCHA validation no longer fails during checkout when unexpected errors occur during payment processing.
- New system configuration for requiring email confirmation when an admin user changes their email.To reduce site vulnerability, a new system configuration setting (disabled by default) was added to require email confirmation when an admin user changes their email: Stores > Settings:Configuration > Customers > Customer Configuration > Account Information Options > Require email confirmation if an email has been changed. When this option is enabled, the application will request email confirmation every time the admin user changes their email address. The following module is affected by this change: Magento_Customer.
- Composer 2.2.x. Composer 1.x has been removed.
- Redis 7.0.x. Although compatibility with Redis 6.2 remains, we recommend deploying this release with Redis 7.0.x because Redis 6.2 is expected to reach end of life in 2024.
- OpenSearch is now supported as the default search engine for Magento Open Source on-premises and cloud deployments. It is supported as an independent search engine for Magento Open Source. This release supports OpenSearch v2.x and has been tested with OpenSearch 2.5. Although compatibility with OpenSearch 1.x remains, we recommend using this release with OpenSearch 2.x. You can install and run Magento Open Source and Magento Open Source 2.4.6 with OpenSearch 2.x on both Cloud and on-premises Search engine prerequisites.
- The DHL schema has been migrated from v6.2 to v10.0.
- Outdated JavaScript libraries have been updated to their latest versions, and outdated dependencies have been removed. These changes are backward compatible.
- PHP 7.4 compatibility has been removed from the Commerce and Magento Open Source code bases.
- Symfony dependencies have been upgraded to the new LTS version. Dependencies include:
- friendsofphp/php-cs-fixer
- symfony/console
- symfony/event-dispatcher
- symfony/finder
- jquery-migrate has been removed from the Commerce and Magento Open Source code bases.
- Upgraded jQuery/fileUpload library to v10.32.
- Zend framework (ZF1) components that have reached end of life have been removed from the codebase. See Backward-incompatible changes highlights.
- Laminas dependencies have been updated to support PHP 8.2.
- The laminas/laminas-dependency-plugin Composer plugin has been removed.
- Replaced Zend_Filter with laminas/laminas-filter.
- Upgraded web-token/jwt-framework to v3.0.5. (latest version)
- Upgraded allure-framework/allure-phpunit to v2.x.
- Upgraded the Chart-js library to v3.9.1
- The visual text label for the Sign in button now matches its accessible name. (Best practice recommends that a UI element’s accessible name starts with the visible label text.)
- Descriptive accessible names have been added to buttons throughout the storefront.
- Verbal descriptive labels have been added to the Has Video checkboxes in search filters.
- Keyboard-only users can now access all page functionality on the storefront. Previously, shoppers could not access sub-navigation links using only keystrokes.
- The Pay Later button and banners (messages) for Italy and Spain have been enabled for Braintree.
- PayLater messaging with PayPal Vault has been enabled.
- Added Fraud Protection and ACH web hooks. The Fraud Protection web hook is triggered when a risk decision has been made in Braintree. The ACH web hook is triggered when the status of an ACH payment is updated to settled or settlement decline.
- GraphQL resolver operation has been optimized.
- The data provider no longer re-sets runtime-cached data for every new product being processed, which has improved performance.
- Product permission processing has been optimized in the GraphQL resolver. Product permissions are now applied to product collections instead now on a per-product basis.
- Optimized permissions read in shared catalogs in the addProductsToCart mutation.
- Product permissions have been optimized with product inline fragments.
- Custom attributes metadata fetching for category models has been improved.
- Category ID fetching has been improved, and getChildren calls have been reduced.
- Category children loading has been improved.
- deleteCustomer
- Full-page cache is no longer flushed after order fulfillment unless the ordered product is out of stock. Previously, the cache was purged for the category whenever a shipment was created.
- Data is now cached successfully when the L2 cache is configured and remote data is partially evicted. Previously, after flushing only the data cache without hashes of those data, the new cache was not saved while the data hashes existed. Corrected defects in CatalogUrlResolverIdentity and CmsUrlResolverIdentity that prevented caching. This affected route query caching on multiple requests.
- Magento Open Source no longer sends a customer duplicate emails after an order is created from the Admin.
- Admin order emails are no longer sent when the Email order confirmation setting is disabled.
- Image options are no longer displayed as HTML markup in the credit memo, order confirmation, and invoice customer emails (default template) for products with custom options.
- Types that implement multiple Interfaces in GraphQL code can now separated by an & sign as well as , in accordance with the GraphQL @docspecification.
- The setShippingAddressesOnCart mutation now supports setting numeric region codes as region. Previously, this mutation worked incorrectly for numeric region code values.
- The products query now returns only reviews associated with the specified scope. Previously, queries returned reviews from all stores.
- Category permissions are now respected during GraphQL requests.
- The customer query now filters on orders with a specified from and to range correctly.
- The product query now returns correct category data in aggregation. Previously, attribute_code.category_uid returned the value of category_id instead of category_uid.
- The customerOrders query no longer throws an \”model\” value should be specifiederror.
- The customer query now filters orders based on scope. You can now specify whether the query should filter orders by store, website, or globally.
- The categoryList query now returns an accurate product count for both anchored and unanchored parent categories. The new is_anchor attribute has been added to the category collection selected columns list.
- The generateCustomerTokenAsAdmin mutation now works as expected when creating a token to log in to a non-default store in a multi-store deployment.
- The createEmptyCart mutation now throws an exception as expected when an expired token is used.
- Cart query error messages have been made more informative. Aggregation data in the response of a products query now includes correct values for price type attribute attribute_code and label.
- The products query returns category information as expected when the database prefix has a non-null value. Previously, it returned an Internal server error.
- Corrected the return type for the getCustomerIsGuest method.
- The Magento\CatalogGraphQl\Plugin\DesignLoader plugin as been refactored. Cart reload is now triggered once only as expected when the cart is initialized by GraphQL mutations. Previously, cart loading triggered unnecessary cart revalidation against stock inventory, which consumed significant resources every time the cart was loaded.
- Added the gift_message type to the OrderItemInterface.
- Product options returned in GraphQL responses now include only the products that are within the catalog to which the user belongs. If the user belongs to a shared catalog, then only products in shared catalogs are returned. If user is a guest or not part of a custom shared catalog, then only products in public catalog are returned.
- The COD payment method is no longer rendered on the storefront checkout workflow when COD is exempted for the country specified in the shipping and billing addresses. Previously, Admin configuration settings for this feature were not implemented.
- ault payment information is no longer shown in the Payment section of Admin order creation workflow if the shopper has not saved a token.
- Custom prices are no longer doubled after a discount is applied by cart price rule.
- New order pending status is now honored as expected when an order is placed using the Zero Subtotal Checkout payment method.
- Guest email settings are now respected during order creation for a guest shopper with PayPal Express via GraphQL. Previously, the email address set was overridden by the email address set in the PayPal account.
- Cart price rule free shipping options that are set during rule creation are now applied to orders as expected. Previously, free shipping options applied during rule created were ignored during checkout, and free shipping was not permitted when the rule was applied.
- The discount_percent column of the sales_order_item table for a product is now populated as expected with the discount percentage when the item discount quantity is not set or it is greater than or equal to order item quantity. Previously, this column was not populated when a cart price rule was applied to this product.
- The product list widget no longer displays incorrect or cached prices for a logged-in shopper. The price displayed in the home page widget now matches the shopper’s address and is updated when the shopper updates the address. Previously, the browser cache did not update product prices on the home page based on customer group tax rules.
- The Compare Products list feature now works correctly in a multi-website deployment and is dependent on website.
- Magento Open Source no longer displays data from the previous page when you reload a product detail page. Previously, when the product detail page was reloaded, data from the first tab was merged with the newly loaded data for a split second.
- Categories with subcategories can now be expanded in the main menu on mobile devices as expected. Previously, shoppers could not open or expand categories with subcategories in mobile deployments.
- Category listings are now updated as expected when a product is assigned to a new website or store. Previously, the product price indexer was not marked as invalid and subsequently re-triggered on a cron run as expected. As a result, the product’s price entry was missing from the price index table and was not displayed on the new store or website.
- The storefront inventory count is now accurate when the Display Out of Stock Products configuration setting is enabled.
- The category page is no longer empty when the Allow All Products Per Page setting is enabled.
- The Display Out of Stock Products configuration option now works as expected when enabled. Previously, all products were displayed as out-of-stock on the storefront when this option was enabled on the Admin.
- Product sorting by Boolean attributes now works as expected.
- Catalog price rule discounts are no longer applied to fixed price custom product options but are applied to only the product’s original price.
- Catalog price rules now take into account the selected scope and are applied to products only for the websites for which the attribute has an option value that matches the rule. Previously, the rule did not take into account the selected scope in multi-site deployments.
- The swatch options color and size attributes are now pre-selected in the product detail page when a shopper modifies the configurable product from the My Cart page. (jQuery 3.x version now supports the swatchRenderer widget name, which is now camel case.) Previously, the swatch option is not pre-selected.
- Customers are now notified for product price drops when the customer is subscribed to the price drop alert. Previously, price drop notifications were not always sent due to application level caching.
- Catalog rules that are based on SKUs with the is not one of condition now work as expected.
- Magento Open Source no longer erroneously assumes that one category is the parent category of another based on category path. Previously, when two categories were adjacent and one category ID starts with another category’s category ID, Adobe Commerce assumed that the categories had the same parent category.
Catalog Rule
The application no longer throws a fatal error when you save a catalog rule with the following conditions: If ALL of these conditions are FALSE:, If ALL of these conditions are TRUE:, Attribute set is default
CMS content
cron
Orders
The GetAssetIdByContentFieldInterface and its implementation on MediaContent modules now permits Adobe Stock Integration to extend MediaGallery filter functionality
Theme
Themes that are added in User Agent Rules are now affected as expected when you run bin/magento catalog:images:resize. Previously, only themes that were assigned to stores were affected when bin/magento catalog:images:resize was run.
UI
Web API framework
Version-2.4.6
Highlights
Security enhancements
This release includes eight security fix and platform security improvements. No confirmed attacks related to these issues have occurred to date,However, certain vulnerabilities can potentially be exploited to access customer information or take over administrator sessions. Most of these issues require that an attacker first obtains access to the Admin. As a result, we remind you to take all necessary steps to protect your Admin, including but not limited to these efforts:
Additional security enhancements
Security improvements for this release improve compliance with the latest security best practices, including:
Platform enhancements
Magento Open Source 2.4.6 introduces support for PHP 8.2. PHP 8.1 remains fully supported.PHP 7.4 support has been removed from this release. You cannot run Magento Open Source 2.4.6 on PHP 7.4.
Magento Open Source now supports:
Other upgrades and replacements
Accessibility updates
The focus of this release has been on creating a storefront experience on Venia (PWA) that is more perceivable, operable, understandable, and robust. These enhancements include:
Page Builder
Page Builder v.1.7.3 is compatible with Magento Open Source 2.4.6.
PWA Studio
PWA Studio v.13.0.x is compatible with Magento Open Source 2.4.6. It includes multiple enhancements to improve accessibility. For information about bug fixes, see PWA Studio releases. See Version compatibility for a list of PWA Studio versions and their compatible Adobe Commerce core versions.
Braintree
GraphQL
Improved response time when querying categories with category permissions enabled. Response times have improved when querying products in categories for which category permissions are enabled and that contain many customer groups or shared catalogs. Code changes that support this performance improvement include:
Optimized performance of category tree rendering. The categoryList query has been optimized to support customers with a large number of categories. Merchants using this query to search more than 1500 categories with up to five levels of nested subcategories will notice a performance improvement. The loading of category children by refactoring code has been improved by removing unnecessary method calls, improving caching of the category tree, and loading category data recursively. Code changes that support this performance improvement include:
Reduced bulk cart operations query response times. The add product mutations have been optimized to improve query performance when adding up to 500 simple and configurable products. Bundle products are not affected. The optimized mutations include addProductsToCart, addConfigurableProductsToCart, addDownloadableProductsToCart, addSimpleProductsToCart, addVirtualProductsToCart,addWishlistItemsToCart, and updateCartItems.
customer query now supports order sorting. The orders output object of the customer query now contains a sort field. You can now sort orders by order number or creation date and in ascending or descending order.
New mutations:
Cache
cron
The catalog_index_refresh_price cron job now executes successfully. Previously, Magento Open Source logged this error during cron execution: report.ERROR: Cron Job catalog_index_refresh_price has an error: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens.
Currency
A missing space between custom currency symbols and prices has been added to both storefront and Admin product prices. The appropriate condition and regex expression has been added to allow a custom NBSP in currency symbols. For example, IDRx 105.00 was previously displayed as IDRx105.00.
GraphQL
Google ReCAPTCHA
A reCAPTCHA error in the var/log/exception.log file for the Google V3 reCAPTCHA Admin login has been resolved, and no error messages are logged. Previously, the following error was thrown every few seconds when an admin user configured their Configuration > Security > Google reCAPTCHA Admin Panel settings: main.ERROR: Can not resolve reCAPTCHA parameter. {“exception”:”[object] (Magento\Framework\Exception\InputException(code: 0): Can not resolve reCAPTCHA parameter. at /home/xxxxxxx/public_html/vendor/magento/module-re-captcha-ui/Model/CaptchaResponseResolver.php:25)”} [].
Image
Updated the recommendations on the logo size for PDF Invoice slip.