Only one version of Ext JS can run in the page at one time. The last version to be loaded into the page will overwrite any previous version that may have been loaded. So there can be problems if a mashlet is dynamically loaded into a page which already has Ex-based functionality running using a different (probably later) version of Ext.
When a mashlet is loaded, it checks to see if the necessary Ext library files are already present in the page, it does this by stepping through all script tags in the page and looking at their src urls, if it finds that the Ext JS files are already present then it doesn't load them. So if you statically include script tags for the presto ext 2.1 files above script tags for a later version of Ext then the later version of Ext will run.
Presto uses the version of Ext adapted to work with prototype.js as the presto-connector is dependent on prototype.
Ive used this technique myself in the past but not for some time and not with more recent versions of Ext, so you may hit other compatibility issues, but its worth a try.


Can 2 different Ext JS versions coexist in Presto? Our Presto server is using Ext JS version 2.2.1 by default. We have a widget that is uses Ext JS version 3.2.1. When loading the mashlet, the mashlet window displays, but the widget does not. Apparently, the widget "render" function is not being called.
Any suggestions?
Actually, its a little more complicated than that. The default Ext JS version is 2.1. But, Ext JS version 2.2.1 is installed in the Tomcat /ROOT directory. So, we need to be able to access an additional Ext JS version 3.2.1 somewhere for the new widget that we want to use. Most (all?) of the mashlets are using the Tomcat/ROOT Ext JS version 2.2.1, not the Presto default version.