About Magento 2.x Feature Requests and Improvements
Do you have ideas for new features, improvements to current features, or other suggestions for Magento 2? Then share your ideas in this forum! We love hearing about ways we can improve your experience working with Magento.
Before submitting an idea, be sure to check to see if a similar request has already been posted. You can add your endorsement and comments rather than creating a duplicate submission.
The "Update" button for the billing address field is completely counterintuitive and bad user design. Customers do not expect to need to (and should not have to) hit an "Update" button for their billing address to take on an order. We've taken hundreds of calls from customers who don't understand why their billing address is incorrect on their order. It would be much more intuitive if, when the checkbox for "My billing and shipping address are the same" is unchecked, address validation on the billing address ran when the customer clicked the "Place Order" button. Conversion rates go down for every step you put between a customer and hitting the "Place Order" button. This counterintuitive "Update" button step undoubtedly has a negative effect on conversion rates and should be fixed.
... View more
The suggestion is to establish a pattern of adding the following code to deprecated functions: // This is just an example. Write whatever -- something to point people in the right direction.
$sMessage = 'save() has been deprecated in favour of using the usage of repositorties, and the deferral of persistence to the persistence layer. See https://h.dev.magento.com/repositories for further details'
@trigger_error($sMessage, E_USER_DEPRECATED); This can be introduced harmlessly to the stack, and does not actually change any error behaviour, or make the deprecated methods more fragile. However the error handler indicated by set_error_handler() will be called; allowing the surfacing of the deprecated methods. This is useful in a couple of ways: Tests can stub the error handler such that it propagates these error messages and fails tests. This clearly indicates that the code is no longer valid. The error handling function can be modified such that in developer mode these errors are surfaced to the user, and either halt execution or are simply logged to the debug log State of "known violations" can be tracked (perhaps simply with a try_catch in tests, with a skip or the like). This means that any new code must either violate the deprecation intentionally (picked up in review) or fail tests (picked up in CI) This pattern has been previously established by Symfony and appears to work as expected there. Such work will allow enforcement of deprecation; something that has proved problematic in the past (particularly in code review where it's not apparent that used functions are deprecated)  http://uk.php.net/manual/en/language.operators.errorcontrol.php  https://twitter.com/andrewhowdencom/status/900675010641133571  https://github.com/symfony/class-loader/blob/b94aa5c3608cd53444fc4c7a2a506d163eb4a8f3/MapClassLoader.php#L14
... View more
In magento 1 X.commerce produced the following guide http://info2.magento.com/rs/magentosoftware/images/magento-extension-developers-guide-v1.0.pdf Its approximately 70 pages long. I found this invaluable in learning how Magento 1 worked. Put simply it was a short guide that produced an extension from start to finish teaching many basic principals of Magento 1 such as: Code setup and configuration - code structure Design setup - templates and layouts Frontend development - database schema, models, output (blocks), routes, helpers, sample data Backend development - admin configuration, routes, models, output (including grids), helpers, ACLs I believe where this guide succeeds is that it carries a single example across many topics. More importantly it has the right level of detail in terms of producing something useful yet not too much to becoming obsolete overnight. And it focuses on magento in terms of PHP development unlike some of the books I've read through which cover a far wider range of topics and often include a few chapters on installation and setup for example. I realise that Magento 2 is technologically more advanced and perhaps this is too difficult to achieve. However reading through the developer docs many areas still seem disjointed (and by this i mean a common example which is carried throughout - not simply a collection of snippets of information) and I feel it would be really helpful if an all-in-one guide extension guide was put together not only for me but to help the greater community. To give you a bit of history I'm a competent Magento 1 developer but I'm finding some Magento 2 concepts difficult to follow. I'll be honest I've seen https://u.magento.com/training/schedule/ and I believe your pricing will stall the adoption of Magento 2
... View more
Broadly speaking, there is a few different ways of expressing application state in such a way that it's useful debugging: Logs (implemented in M2 with the excellent psr/log interface) Time series data (also known as metrics). Things like Data Dog, Promethiums, Sensu and so on. Traces; primarily expressed by opentracing.io, but also Zipkin, Lightstep This feature request is to track the implementation of #2; the expression of time series data in the application, as well as the export of this data via whatever mechanism might be setup to receive it. Time series data exposed by an application can provide extremely rapid feedback on an applications performance. This information can be used for a number of useful processes such as: Allowing infrastructure to make decisions around whether to modify the applications runtime environment Debugging the application performance during runtime Alerting when an application violates it's SLO Note: I am doing some work on this with PHP more generally tracked on github. Best place to contrib beyond core support is there. There is currently no simple way to express such time series data in Magento. There are several efforts that have been done to implement this in a third party, vendor specific way including: https://github.com/sitewards/magento-prometheus https://github.com/magento-hackathon/Hackathon_Datadog https://newrelic.com/partner/magento https://github.com/janpapenbrock/magento-statsd However, these suffer form a few drawbacks. In particular, There is no standard API (such as the psr/log api) that can be invoked in third party extensions reliably It locks the users into a hosting infrastructure; undesirable for the continuity of the project. Additionally, there are various metrics that would prove extremely useful when debugging Magento: Cache hit rates (https://github.com/magento/magento2/issues/11151) Cron metrics, such as last execution per job, queue length etc. Indexer status (expressed as 1 or 0) Cache enabled status (expressed as 1 or 0) Cache invalidations issued Orders in various states (processing, shipped etc) Customer logins (aggregate, not per customers) HTTP status codes However, the utilities aren't limited to the above. In particular, third party code often has reason to express it's health (such as the code developed by an agency) to ensure custom logic is functioning correctly, and that a feature is delivering sufficient value to jusify it's cost. General Background It is suggested the implementer have some experience implementing and using application instrumentation. There is a body of knowledge in this area that is immense of it's own right, and not a task that is so simple. Beyond that, the goal of the work should be to checkpoint the data, but defer all processing to the implementing time series databases. It should also have minimal impact on performance. Lastly, high cardinarily data can be expressed through logs or traces, and is perhaps not something that is easily expressed by time series metrics (though honeycomb et. al would beg to differ) Primitives The open source monitoring package Prometheus expresses the primitives: counter gauge histograma summary The author has implemented this in several places, and has found uses for counter and gauge in a repeated way, as well as a limited use for histogram. To begin, the implementation of "guage" and "counter" would be amply sufficient to justify the majority of cases. This is supported by both Prometheus and DataDog, and it's presumed the majority of time series databases. Non Goals It should not be a goal of this work to implement the metrics view in Magento. This can be approached as a separate task, but the primary intent of this work is to express time series data in such a way it can be consumed by third party services. It should not be a goal of this work to track the time associated with the time series data. The sampling is left to the third party application implementations. It should not be a goal of this work to instrument third party applications (redis). They have their own implementations, and should be considered separate services. It's unclear whether instrumenting the PHP runtime itself would be beneficial, though this can likely be handled in the bespoke cases it's required by third party utilisation of the above library. Interface Ideally there should be an interface similar to the psr/log exposed that allows the checkpointing of metrics. Something like: <?php
* Dependencies automagically wired by DI
public function __construct(
// Singleton injected that stores the metrics. Invariably a global, persists towards the end of the request
// Ensure the metric exists. This operation is an idempotent "create if not exists" type operation.
// metric identifier
// metric type. Can be one of "count" or "gauge"; potentially "histogram".
// label keys. Labels are mechanisms to slice time series data, supported by both data dog and prometheus
public function doThing()
// An operation changing the state of the metric. In this case, an increment -- it's a count.
// The metric identifier
// The label values.
} This would allow an extremely simple API to quickly expose the data for ingestion into time series. Storage Ideally, the storage engine should be pluggable, but implement: APCu In Memory (or "null" when considering parity with psr/log) Redis MySQL This would cater the wide range of hosting constraints that Magento can operate with, with a predisposition for not changing exising behaviour (checkpoint to memory but flush at the end of each request) Exposition There are various ways that the data may be exposed. It's suggested the core team deliberately not support any mechanim (except perhaps a native admin panel one, expressed as separate work). Instead, rely on third party / community vendors to provide the required libraries, similar to psr/log. Broader PHP community involvement It is the authors hope that this conversation is extended to the broader PHP community, perhasp through the involvement in FIG. A single interface for time series data would have ramifications for the langauge more generally. Future Work Once implemented, Magento's introspectability could be extended further by implementing traces. Related Reading: http://www.brendangregg.com/usemethod.html https://prometheus.io/docs/introduction/overview/ https://github.com/DataDog/php-datadogstatsd https://github.com/Jimdo/prometheus_client_php
... View more
Feature request from hostep, posted on GitHub May 09, 2015
This is mostly based on Magento 1 experience, but it looks like not much has changed in Magento 2 currently (testing 0.74.0-beta8).
I'm not a VAT expert, I'm simply getting this from feedback we get from store owners who complain about how bad this is currently implemented in Magento 1. So with Magento 2, it would be a good idea to try to get this right from the start.
Here are some suggestions, please review them, maybe there are better solutions then the ones I'm suggesting ...
If you go through the checkout, you should get instant feedback when you enter a VAT number if it is valid or not, and not after you go through the whole purchase process and it is too late. With the instant feedback you can correct your VAT number before purchasing if you made a typo.
We have experienced a lot of issues with the VAT API service which is currently used in Magento (= VIES VAT number validation), it happens very regularly that the API service is down or times out. So you should think about some kind of way to handle this. Maybe there are alternative API services? Maybe you can do a first preliminary check using regular expressions before going to the API service to lower the load on the service? Maybe add a switch in the backend where store owners can choose what happens when the API service is down: allow the customer to proceed, or let them try again until the API service is back up?
Right now you aren't allowed to enter your country prefix in front of the VAT number, since it uses the country from your address. I believe you should clearly state this in a line of text or in a tooltip or something like that, so the customers know what to enter. Also: it makes a lot more sense to put the VAT number field after the country selector field, because it depends on that value (the same thing applies to the state/region field, but that's another issue).
If others have some opinions about these issues or have other suggestions, please leave a comment, so we can try to improve how Magento 2 handles the EU VAT number validation.
Credit where credit's due: most of these suggestions come from a commercial extension we used a few times in the past: https://www.geissweb.de/eu-vat-enhanced-magento-extension.html, but since the current implementation in Magento is pretty broken, we shouldn't depend on an extension to fix these bugs in Magento I believe?
... View more
Hi, I am facing a problem with configurable products. If you create a configurable product and create some product variations based on lets say color & size, if you change the price and image for a specific variation and select this variation on the configurable product page, the price and image will change. This is a very good feature altough the expected behaviour for me would be that the description and specifications for this selected variation would be shown, in stead of the specifications of the configurable product itself. Why does it change the price and image, but not the description and product specifications? I attached a screenshot to give you an idea of the issue. I also used to have this problem in Magento 1 and found a module for this which solved the problem. However this module is not supported for Magento 2. https://www.magentocommerce.com/magento-connect/sdocp-simple-details-on-configurable-products-1.html Is there a way this can be done programmatically or fixed in the core? Kind regards, Falco
... View more
We need an alternative to the customer email login which is phone number login. It may not sound useful in Western countries but in China, it's necessary. Chinese people only use this login method with Taobao (taobao.com), Tmall (tmall.com) or JD (jd.com), they are used to it. Without this basic option, Magento 2 will never make it in China.
... View more
Feature request from aleron75, posted on GitHub May 10, 2016
this is not something which doesn't work but something that doesn't work as expected, so feel free to take it more as a suggestion than as a bug.
As stated in the title, I expected dates saved in UTC just like in Magento 1 but it doesn't seem to work this way in Magento 2.
What's more, the \Magento\Eav\Model\Entity\Attribute\Backend\Time\Created and \Magento\Eav\Model\Entity\Attribute\Backend\Time\Updated attribute backend models don't seem to have the same logic implemented (even if I don't think that any default attribute use them at date).
You can read some considerations and suggestions here: http://magento.stackexchange.com/questions/114706/magento-2-best-practice-to-get-current-date
... View more
Feature request from tadhgbowe, posted on GitHub Nov 30, 2015
I am creating a new Configurable product via the Admin Panel (based on color). My simple products (children) already exist via a product import. When I click on "Edit Configurations" it takes me down the path of creating new simple variations. I don't want to do this. I simply want to select the existing products.
Interestingly if I go ahead and generate some simple variations via the "Edit Configurations" after the product save I can see a new link "Add Products Manually" beside "Edit Configurations". That's what I want to see the first time around after I inform it that the new configurable product is based on color.
The "Edit Configurations" wizard needs to allow me to select existing products after I've told it what configurable attributes I'm working with e.g. color or size.
Is this a known issue?
... View more
Feature request from webtekindo, posted on GitHub Feb 10, 2016
It should be nice to have an option in Admin to display price range for configurable products instead of only displaying the minimal price.
50$ - 90$ (minimal price) - (maximal price)
That range may be display on the product listing, and on the product page when no options selected yet
I beleive many companies have use cases on which they use the configurable product type, but price may vary a lot depending on the configurable options.
... View more
Feature request from hostep, posted on GitHub Aug 17, 2015
Why is the telephone number still required on a customer address?
We hear from our shop owners that a lot of customers refuse to enter something in there or just enter gibberish.
An ideal solution would be if you could add a configuration option in the backend similar to the Gender , Tax/Vat Number and Date of Birth fields.
So an option for showing the telephone number where you can choose between No , Optional or Required . What do you think?
I had to implement this today into a Magento CE 1.x store and it was kind of a terrible experience, changing stuff in the database, remove the hard coded validation of that field (which is still present btw: https://github.com/magento/magento2/blob/93312cae42824274722fe7a285d5ce8e40f177a1/app/code/Magento/Customer/Model/Address/AbstractAddress.php#L572), ...
Related to https://github.com/magento/magento2/issues/624
... View more
Feature request from paales, posted on GitHub Jul 31, 2016
I just added 19 products to my category. The frontend doesn't show any products. It would be really helpful to give a hint why a product isn't visible on the shop. (After being a Magento developer for years, I still struggle with such a basic thing..)
In an effort to improve the usability of the system and greatly improve the merchant experience, context aware hints are crucial. Explain what is going on and how should the merchant fix their 'mistakes'.
The idea is to add a visibility-helper-icon to product grids so that it is clear why products aren't shown and suggestions how to fix this.
With this, we can collapse the Visibility, Status and maybe Websites column into one 'Visibility Helper' column (or just an icon behind the name of the product). The visibility helper icon will have a popover with additional information why this is happening:
Product isn't visible anywhere //one or more applicable
Product is disabled [Enable Product]
Inventory is set to 0 [Set inventory] //when the setting is enabled
Product is set to Not Visible Individually and isn't part of a composite product [Make visible]
Product is set to Catalog but isn't connected to a visible category
The product has limited visibility
Product is set to Not Visible Individually but part of a composite product.
Product is set to Search [Set Catalog Search]
OR Product is set to Catalog, Search but isn't attached to a visible category. [Add Category]
Product is set to Visibility: Catalog but isn't connected to a visible category [Assign to Category]
The above conditions don't match
Gives a link to the category and product view page.
How are we going to handle store view / website specific values without having huge popovers?
Might it be a good idea to include salable information as well?
... View more
It would be great to be able to manually control the order of static assets added via XML, for example if you are loading 5 CSS files you can set the order they load in. At the moment this is out of a developers control, there are workarounds such as a adding an attribute but this still isn't very useful.There are extensions that add the ability to use so this is possible. Some useful links/discussions: - https://github.com/magento/magento2/issues/1821 - https://github.com/magento/magento2/issues/8406 - https://magento.stackexchange.com/questions/94769/what-is-the-proper-way-of-positioning-ordering-css-files-in-magento-2 - https://github.com/quickshiftin/mage2-ordered-assets I have heard this mentioned several times, in this instance a third party module is adding some CSS which is loading before the custom CSS therefore overwriting it.
... View more
Feature request from paales, posted on GitHub Nov 17, 2014
In the light of the new Postgres 9.4 features: indexed JSONB, wouldn't it be awesome if Magento supported it.
JSONB (brought into mainline in 9.4) -> Ideal replacement for flat tables, performance is on par (or better) than MongoDB.
Flexible full-text search (brought into mainline in 8.2) -> Ideal for a simple search when SOLR is too much
Multiple replication options to suit your environment and requirements
Uses multi-version concurrency control, so concurrent performance rocks
Fully ACID compliant (innodb is as well)
Strong access-control framework
There are probably a 1000 more features that I can't think of, but I think you get the point. I understand Magento would like to support MySQL as well because it is more entry level and Magento has some abstract resource methods which should support other databases, but in practice Magento currently only supports MySQL. Better official support and feature integration would be awesome.
... View more
Feature request from cfcnn, posted on GitHub Oct 21, 2015
About produt images. When delete a product at the backend, the related product images are not deleted automatically, so that those useless images still occupy storage. Will Magento2 delete products and product images together?
If 3 images for each product, 500KB for each image, there are 1,000 deleted products, and the 3,000 images are not deleted together with products, they waste 1.4GB storage; If there are 10,000 items, that's 14GB... Magento users have to pay for that storage. And more and more time when backup or transfer website.
1,000 items × 3 images × 500 KB/image=1.4GB
10,000 items × 3 images × 500 KB/image=14GB
The default customer registeration verification of Magento is too simple, it's unable to reject robot registration, it's a problem for world magento users, a number of robot registration makes database very large. And they leave batch comments with ad links automatically by soft, or send spam ad emails to other people through " Email to Friend".
Could magento2 add a google verification ReCaptcha to identify human or robot? ( as follows)
... View more
Feature request from paales, posted on GitHub Jun 21, 2016
Currently using 2.1-rc3.
There is no API available for product option swatches. It makes sense if we are able to use the ProductAttributeOptionManagementInterface to add new swatch texts to products.
Maybe to have better separation of concerns we could have a ProductAttributeOptionSwatchManagementInterface to add swatch information to an existing option.
... View more
As part of the new 3-D Secure standard that is coming into force in Europe, there are a number of new parameters that should be sent to credit card acquirers. For a full list of the new fields check Credit Card 3DS2 Fields Currently missing information as far as my research showed: customer last login date customer password change date how many attempts to add a credit card to vault (e.g. tried to add 100 credentials and only the last one was valid) customer suspicious activity (there should be a way for a merchant to mark a customer as suspicious) street 3 field for billing and shipping address mobile phone and work phone (add 2 additional phone fields) expected delivery date for preordered products To ensure full compliance with the 3-D Secure standard this fields should be added.
... View more
Feature request from markoshust, posted on GitHub Jul 29, 2015
This doesn't exist in M1 but I believe it should be in M2. There are times when shipments are created by accident, or the customer calls to cancel their order. In those circumstances the shipment should be able to be deleted or canceled.
... View more
Feature request from hostep, posted on GitHub Jun 26, 2016
Steps to reproduce
Install Magento 2.1.0 using composer but use the --no-dev flag
Look at the dev/ directory in the filesystem
The dev/ directory should be empty or non-existing
The dev/ directory exists and contains a bunch of development stuff
In an effort to try to find the best options of deploying a Magento 2 installation to a production server, I keep discovering issues which aren't ideal.
As a best practise, we use composer install --no-dev --prefer-dist --optimize-autoloader on a production server when deploying. I would expect that no development dependencies gets installed because of this, but this is not true.
This isn't only about the /dev directory, but also for example about the lib/web/css/docs/ directory.
The last one for example causes the setup:static-content:deploy command to compile a less file which has absolutely no purpose of existing on a production server while it takes multiple seconds to compile this file, per locale, per theme.
In a very quick test, I discovered that when removing the above directories before executing setup:di:compile and setup:static-content:deploy makes those two run about 58 seconds faster (on my local machine) then without removing those directories.
Here is a list of files/directories which I believe shouldn't get deployed to a production server:
(the license files, I'm not sure about)
I think most of these files are getting into place because of the mapping in the composer.json file of the magento2-base module.
It would be great if those mappings can get split of into a mapping for development purposes and one for all environments.
My suggestion would be to add a map-dev to the extra section in the composer.json similar as the normal map section and update the magento-composer-installer project to support this and only install the map-dev files when you run composer without the --no-dev flag.
This is all theoretically, I haven't tested this properly, but let me know what you think.
I know that in your deploy scripts, you can simply delete the files you don't want after composer install --no-dev has run, but I think it makes sense to automate this, because not everyone will notice these issues.
Slightly related issues:
... View more
Feature request from MonteShaffer, posted on GitHub Jan 18, 2016
I am swimming around the code for magento-backend (within Model and App), trying to figure out how in the world I would hook into Magento2 authentication for creating my own Duo Two Factor Support.
Sentry Human Element developed one for the OLD CE 1.9
And if you look at their code, they are really using a library from the DUO website itself...
Certainly other authenticators (like Google) could easily be introduced.
Of note, there needs to be some backend-manually recovery if the DUO fails.... some file in the folder structure with a force bypass.
bypass-duo = true;
So the admin tool would have a toggle (enable/disable DUO, just for backend), and if DUO is enabled in the system, but this text file is true, it would disable, allowing admins into the system.
An example of Wordpress plugin ...
This increases security tremendously.
Anyway, I believe this should be a core feature (as a system->configuration->option), so I am proposing this as a feature.
... View more