First Joomla 5 native release. Nano has been rebuilt for Joomla 5.4.10 + VirtueMart 4.8.4 + PHP 8.3 + Bootstrap 5 + vanilla JavaScript. The Bootstrap 2 framework, the Joomla 3 class aliases, MooTools and the jQuery plugin stack the previous release depended on are gone, and the home-page slideshow has been rebuilt on Swiper. Measured against the previous download (18.08.2025, Joomla 5.3.0 / VirtueMart 4.4.4): 49 files removed, 12 added and 62 modified, with 183 Joomla 3 static calls reduced to 0 across 42 files, 148 output-escaping helper calls added, and the js/ folder down from 31 files to 10.
Added
Template Options — colour pickers and a Favicon tool
All 42 colour settings now use a real colour picker with a live swatch. On Joomla 5 every one of them rendered as an empty text box, so changing a colour meant knowing its hex code and typing it correctly. The donor bootstrapped the Joomla 3-era jscolor library from a <script> buried in a settings field's label attribute, which never ran under Joomla 5; it has been retired for a self-contained picker that ships with the template, so nothing is fetched from an outside site.
New Favicon tab. Upload or pick an image and the template crops it and generates the icon set for you, rather than leaving you to produce an .ico by hand. With thanks to Gianluca, whose favicon question inspired this tool.
The template's Details panel now follows whichever admin theme you have selected, instead of a hardcoded light treatment — grey text with a white shadow — that was legible on Joomla's dark admin only by accident.
29 settings that were still Joomla 3-era checkboxes are now native Joomla 5 Yes/No switches.
Modern social networks
The social set has been brought to 13 networks: X (formerly Twitter), Facebook, Instagram, Threads, Bluesky, Mastodon, LinkedIn, YouTube, TikTok, Vimeo, Pinterest, Discord and RSS. Five dead networks — Google+, StumbleUpon, Digg, Blogger and MySpace — have been retired. Every link carries target="_blank" and rel="noopener", and the icons are drawn from the current icon set rather than the old image sprite.
Convenience
Show/hide control on every password field. Login, registration and account forms now have an eye icon to reveal what you have typed.
A Checkout button in the cart drop-down. Opening the cart from the header previously offered only a "Show Cart" text link, with no visible way to check out. It now ends with a Checkout button, which appears once the cart holds products.
The header cart is now an icon with a count badge rather than the words "Show Cart", so the number of items reads at a glance — matching the phone layout, which already worked this way.
The site name / logo links to the home page by default in a fresh standalone install, and the slideshow is on and advances by itself. Both previously shipped off.
Changed
Joomla 3 → Joomla 5 API migration
183 Joomla 3 static calls removed, template-wide — now 0.JError, JText, JFactory, JHtml, JRoute, JUri, JModuleHelper and the rest are gone in favour of the namespaced Joomla 4+ API, across index.php, component.php, error.php and the html/ overrides — 42 files in all. These aliases exist only while the Behaviour - Backward Compatibility plugin is enabled. The heaviest files were the Joomla login override (20 calls), the VirtueMart login override (15), the product-details view (14) and error.php (11).
Error pages work again.error.php used the removed aliases, and when error.php fatals Joomla cannot render any error page — every 404 was served as a 500, with the real error never shown.
The legacy form validator is gone. The VirtueMart login override called Joomla 3's behavior.formvalidation, removed in Joomla 5, which fataled with behavior::formvalidation not found. It now uses the Joomla 5 behavior.formvalidator. With thanks to Zoltán Szász, whose report led to this fix across our templates.
Two layout tests that could never be true have been repaired. The template asked Joomla whether two module positions were both in use by passing them as a single phrase; Joomla 4 and later read that as one position name, which never matches, so the layouts they control could never be chosen.
The home-page slideshow is now Swiper
The slideshow has been rebuilt on Swiper 11, replacing the jQuery-era camera.js engine and the jQuery plugins it depended on. Slides are now standard Swiper markup with the image as a CSS background, driven by a real Swiper instance.
Swiper ships with the template rather than being fetched from a content network, so a shipped template no longer depends on an outside host at render time.
Your existing slideshow settings still apply. Transition speed, auto-advance and its delay, pause-on-hover, the pagination dots and the prev/next arrows are all read from the settings you already had.
The hero is its proper height again and the caption sits where the design puts it. The rebuild had sized the hero from the wrong setting, leaving it well short, with the caption too far in, the pagination dots hidden behind the panel below and the arrows sitting over the caption text.
The slideshow could previously stay invisible even when correctly sized. The old engine revealed its own container, so the template shipped it hidden; with that engine gone, nothing un-hid it.
One deliberate difference from the previous release. The old engine sized the hero from each slide image's own proportions; Swiper sizes it from the slideshow height you have configured. Where the two differ, the hero is now the configured height. This is the intended behaviour of the rebuild, not a defect.
Stylesheets and fonts
Style changes now reach visitors immediately after an update. The template's stylesheets were served with no version marker, so browsers kept showing the previously cached copy until the visitor cleared their cache by hand.
The print view, VirtueMart's pop-ups and the error page now use the same Bootstrap 5 foundation as the rest of the template. Every improvement made to this template had only ever been applied to the main page layout; these three views still carried the original pre-Joomla-5 stylesheet stack, in some cases loading files that no longer exist.
Those views now also load Bootstrap before the template's own styles, so buttons and alerts in a pop-up use the template's colours rather than Bootstrap blue.
Google Fonts are loaded with a direct stylesheet link and connection pre-warming, replacing the JavaScript font loader.
The icon set has been upgraded to Font Awesome 6.5.2 with the version-4 compatibility shims, loaded exactly once.
Fixed
The header
The logo and social row were missing entirely, and the menu bar painted over the slideshow. The whole header had ended up nested inside the hidden login dialog: two opening <div>s had been added around that dialog without their matching closes, so everything after it — site name, social icons, menu — fell inside an element the browser never displays. The site name measured 0×0 where it should have been 470×88. The wrappers are now closed, and the header renders as designed.
The menu bar sits in its own band again rather than across the middle of the slideshow — it had been landing 120px lower than intended because of how its position was being measured.
The currency selector is the template's own small control again, not a full-width white browser dropdown spilling out of the black bar, and the "My Account" label is readable rather than 6px tall.
Shop and product pages
Product rows could collapse to a few pixels tall, letting the content below overlap the products.
The print and email icons on a product page are back beside the product instead of pinned to a fixed spot partway down the page.
"Read more" buttons use the template's own button style rather than the plain grey one Joomla supplies.
The images under the slideshow no longer jump when the mouse passes over them. Their hover lift was also nudging the rest of the page down by 10px each time.
The cart
The "added to your cart" pop-up is sized to read properly, with its two links as proper buttons, and it fits small phones.
The cart pop-up is no longer see-through enough to read the menu bar through it, and its "Show Cart" button is no longer white lettering on a very light grey — a combination that failed the normal readability threshold by a wide margin.
The cart count badge no longer hangs off the top of the page at desktop width, and no longer sits across the words of the button it belongs to.
"Ask a question" opens at its full size, and the form fits inside it — labels on one line, fields within the pop-up, and the Send button no longer overlapping the character counter.
The checkout's shipment and payment text keeps clear of the edge of its panel.
A PHP 8 crash on the checkout address form. Editing a Bill To or Ship To address could fail outright with count(): Argument #1 must be of type Countable|array, null given, inherited from a legacy VirtueMart view. With thanks to Zoltán Szász, who reported it.
Forms
The login dialog's fields are a usable size — they had collapsed to 21px tall, with the password box sitting beside its label instead of under it.
The registration and account fields are a usable size too. They had lost their height entirely and collapsed to the height of their own text.
The "Ask a question" form no longer draws a horizontal rule above and below every row, and its fields are the same comfortable size as the rest.
Registration and account forms no longer draw a line above and below every row.
Phones and tablets
The cart is a proper 44×44 control in the phone toolbar rather than a stretched block of text, and the empty black pill left beside it in the top bar is gone.
The currency selector no longer spills across the logo.
The partners and brands logos are centred rather than bunched against the left edge with a wide gap on the right.
The cart pop-up has its side padding back — its rows were sitting flush against the panel edges.
Page titles share the template's one side margin instead of sitting 30px in, where two paddings had stacked.
Opening a phone panel no longer dims the logo and menu button at the top of the page.
The header no longer reserves an empty band above the page, the search panel no longer shows a duplicate submit button, and the menu button is guaranteed to contrast with the bar behind it.
Maintenance fixes carried across our templates
The search icon rendered as a stray character and the icon font 404'd on every page load — it pointed at a Joomla 3 location removed in Joomla 4. The icon is now self-contained.
Pagination arrows showed as empty squares. Joomla 4 and later emit different icon classes, which the template's icon CSS did not map.
Tall featured articles were clipped to their title on the featured-articles view.
The search button is attached to its input again, instead of being pushed away by a global button margin.
With thanks to Michael Mullan, whose Expression bug report led to this maintenance pass across our templates.
Admin
Joomla 5.4's "What's New" tour no longer takes over the first admin visit. It was set to auto-start and to open at the dashboard, so every administrator link went to the dashboard instead of where you clicked.
A JavaScript error on the Options screen — jQuery is not defined — is gone.
The Options screen icons load again. They were fetched from a content delivery network that has since shut down.
A leftover template style in the sample data has been removed. The Template Styles screen listed a style belonging to a template not included with this product; selecting it would have broken the site's appearance.
Removed
31 unused files in all, 557 KB, none of it loaded by the template any more and all of it still being downloaded with your purchase.
The legacy JavaScript stack — 25 libraries. jQuery 1.8.1, Superfish and Supersubs, two DropKick builds, Backstretch, Modernizr, Selectivizr, the flexibility polyfill, imgSizer, iScroll, NiceScroll, Selectric, Slick, Owl Carousel, scrollReveal, Stellar, equalHeights, PlusAnchor, jQuery Mobile, a cookie-law pop-up this template does not use, a stray jQuery no-conflict shim, a bundled Bootstrap 2 JavaScript build and the camera.js slideshow engine (which ships as two files). The js/ folder is down from 31 files to 10.
Six dead stylesheets: the Internet Explorer 6, IE and IE9-10 sheets, an unused CSS reset, an old responsive sheet superseded by the current one, and a slideshow sheet for the retired engine.
Two slideshow settings that no longer do anything — the loader-pie colours, which only the retired engine could honour.
Two dead VirtueMart 3 payment plugins that VirtueMart 4 no longer ships at all. They were disabled, had no payment methods configured and no orders against them, and no update could ever have satisfied them.
Dead settings code — a commented-out colour line reading a setting the template does not offer.
An internal development report file that was riding inside the shipped template.
Internet Explorer conditional blocks and the polyfill scripts they loaded.
Security
Every template setting printed into the page is now escaped for where it lands — HTML text, attribute, CSS value, CSS url() and JavaScript string. Before this release a setting holding a quote or a fragment of markup could break out of the page; there were well over a hundred unescaped output points, and there are now none. 148 escaping helper calls do that work.
The site name and slogan printed into image alt attributes went through a filter that removes tags but not quotes. They are now quote-escaped as well.
The two settings that are meant to contain markup, the two header titles, are filtered through Joomla's own HTML filter instead, which still strips scripts, styles, frames and inline event handlers.
Every social link carries rel="noopener".
Two PHP 8 warnings in the login and breadcrumb overrides, caused by variables Joomla 5 no longer passes, have been given explicit fallbacks.
Quickstart
Two third-party VirtueMart demo templates have been removed from the quickstart — they were not part of this product, served no purpose in a customer install, and carried broken error pages of their own, so activating either would have produced a 500 instead of an error page.
Article hit counters start at zero, the copyright year is current, and the administrator's post-install messages are the five Joomla intros rather than sixteen.
Package
Built against Joomla 5.4.10 and VirtueMart 4.8.4, PHP 8.3.
Ships a proper Joomla package manifest, so the template installs and updates as a package and is offered updates through Joomla's own Update Manager.
php -l clean across all 82 PHP files; xmllint clean on the manifest.