Elevate your style on and off the course with the Stuburt Bullfinch Polo Shirt. This eye-catching polo features a unique abstract camo all-over print that's sure to turn heads. Crafted from a soft and comfortable blend of 88% Polyester and 12% Elastane, this shirt offers exceptional performance with UPF50 protection from harmful UV rays. Experience superior moisture-wicking and breathability for ultimate comfort during any activity.
Features:
Stylish Abstract Camo Print: Stand out from the crowd with a bold and unique design.
Superior Comfort: Soft and stretchy fabric ensures all-day comfort on and off the course.
Excellent Performance: UPF50 sun protection, moisture-wicking, and breathability keep you cool and comfortable.
High-Quality Materials: Crafted from a durable blend of 88% Polyester and 12% Elastane for lasting wear.
Versatile Style: Perfect for both on-course performance and casual everyday wear.
92% polyester, 8% spandex. Machine wash cold at 30°C. Do not bleach. Tumble dry low. No ironing needed — the collar holds its set.
1 / 15
Bullfinch Polo Shirt£39.99 £19.99
Colour
Size
1
What golfers say
Independent reviews of this product, collected from Stuburt retailers.
5.0 / 5from 1 review
★★★★★
Great Design
The quality of the shirt is excellent. The colour and pattern are really nice. My husband loves it as he is usually quite reserved.
Lynda · via Clarkes Golf
Dry at the 18thMoisture-managed knit
Moves with your swing4-way stretch fabric
True to sizeRegular fit, not athletic
Est. 1860Founded in Britain
Where the price difference actually goes
Where the price difference actually goes
Feature
This polo£19.99
Typical polo£70+
Moisture-managed performance knit
Yes, for Stuburt
Yes, for the comparison polo
Cut for the swing
Yes, for Stuburt
No, for the comparison polo
No superstar mark-up in the price
Yes, for Stuburt
No, for the comparison polo
British sporting house since 1860
Yes, for Stuburt
No, for the comparison polo
Comparison against widely sold branded golf polos at UK RRP.
The fit between baggy and tight
Too tight. Squashes the middle.
This cut
Too baggy. Looks untidy.
Room through the middle, tidy across the shoulders, long enough to stay tucked in.
No sweat patch in the clubhouse
The knit pulls sweat away instead of holding it against you.
Never needs ironing
Wash it, hang it, wear it. No ironing board, no starch.
Passes any dress code
Smart enough for the clubhouse, never looks like sports kit.
The collar you never think about
Nothing to flatten at the turn, nothing to fold back down in the bar.
Est. 1860 · Darren Clarke won The Open in Stuburt shoes, 2011
`;
};
const bindCarousel = () => {
const carousel = section.querySelector('[data-carousel]');
const prev = section.querySelector('[data-direction="prev"]');
const next = section.querySelector('[data-direction="next"]');
if (!carousel) return;
const cardWidth = () => {
const c = carousel.querySelector('.stb-card');
if (!c) return 0;
return c.getBoundingClientRect().width + (parseFloat(getComputedStyle(carousel).gap) || 20);
};
const update = () => {
const max = carousel.scrollWidth - carousel.clientWidth;
// Edge fade: only where there's more to scroll (crisp resting edges).
carousel.toggleAttribute('data-fade-start', carousel.scrollLeft > 2);
carousel.toggleAttribute('data-fade-end', carousel.scrollLeft < max - 2);
if (!prev || !next) return;
prev.disabled = carousel.scrollLeft <= 2;
next.disabled = carousel.scrollLeft >= max - 2;
};
if (prev) prev.addEventListener('click', () => carousel.scrollBy({ left: -cardWidth(), behavior: 'smooth' }));
if (next) next.addEventListener('click', () => carousel.scrollBy({ left: cardWidth(), behavior: 'smooth' }));
carousel.addEventListener('scroll', update, { passive: true });
window.addEventListener('resize', update);
update();
};
/* Adding to cart is handled by the shared web component
(assets/stuburt-quick-pick.js) — it posts to /cart/add.js and dispatches the
`cart:update` event the mini-cart + cart bubble subscribe to, identical to
the SS26 carousel and the collection page. */
const load = async () => {
const handles = getViewed().filter(h => h && h !== currentHandle).slice(0, limit);
if (!handles.length) return; // stays hidden
const results = await Promise.all(
handles.map(h => fetch(`/products/${encodeURIComponent(h)}.js`, { headers: { Accept: 'application/json' }})
.then(r => r.ok ? r.json() : null).catch(() => null))
);
const valid = results.filter(Boolean);
if (!valid.length) return;
const carousel = section.querySelector('[data-carousel]');
carousel.innerHTML = valid.map(cardHTML).join('');
section.removeAttribute('hidden');
bindCarousel();
};
// Clear all: wipe the stored history and hide the section
const bindClearAll = () => {
const btn = section.querySelector('[data-clear-all]');
if (!btn) return;
btn.addEventListener('click', () => {
setViewed([]);
section.setAttribute('hidden', '');
});
};
bindClearAll();
// If we already have stored handles, reveal section so skeletons show while fetching
if (getViewed().filter(h => h && h !== currentHandle).length > 0) {
section.removeAttribute('hidden');
}
load();
})();
Cookie consent
We and our partners use cookies to personalise your experience, show relevant ads and analyse traffic. We won’t use them for these purposes unless you accept. Privacy Policy.