Prestwick

Prestwick

About Prestwick

Prestwick is Scotland’s oldest baronial burgh and dates back over 1000 years. A busy coastal town, it has a mix of interesting boutiques, galleries and lively bars and cafes. It’s a welcoming place to shop, golf, eat out, or just enjoy some relaxation at the seafront.  

Like other destinations along the Ayrshire coast, Prestwick is known for its golf links, and the first British Golf Open Championship was held at Old Prestwick Golf Course in 1860. As a visitor, either St. Nicholas or St Cuthbert Golf Clubs will be delighted to welcome you. 

Prestwick seafront has a wide esplanade and a lovely beach, which is perfect for a walk and an ice cream. Recently, there’s been a huge increase in the popularity of water sports there, and wild sea swimming and paddleboarding are available for visitors.

Map

Eat and Drink

Prestwick
Prestwick
Curved seating at window

Lido Prestwick

With authentic pizzas from the wood-burning stove, spicy marinated chicken from the Churrasco Grill and heavenly patisseries from the Buzzworks...
Lido Prestwick
Prestwick
Prestwick
window booths and round tables

The Vine

Here at The Vine, we are all about delicious world flavours, perfectly poured drinks and a friendly welcome. Whether you’re...
The Vine
Prestwick
Prestwick
Fully stocked bar

Vic's

Serving up brewery fresh tank beer, proper toasties, live music and all the biggest events in 4K, Vic’s is a...
Vic’s

Stay

Prestwick
Prestwick
An image of a Livingroom.

Tiffany's, Prestwick - Coorie Doon Stays

Welcome to Tiffany’s, our fabulous one-bedroom apartment with a touch of movie charm! Sleeping 2 comfortably, this centrally located apartment...
Tiffany’s, Prestwick – Coorie Doon Stays
Prestwick
Prestwick
An image of a lounge.

Links Quay 42

Overlooking the vast expanse of Prestwick’s sandy beach and across the sea to Arran, Links Quay 42 holiday house offers...
Links Quay 42

Things To Do

Prestwick
Prestwick
People in the sea learning how to sail.

Prestwick Sailing Club

Feel the sea breeze and enjoy the thrill of sailing at Prestwick Sailing Club, beautifully located right on the sands...
Prestwick Sailing Club
Prestwick
Prestwick
Exterior of shop front.

Well Heeled

Well Heeled is a small and professionally run family business established in 1997, based in the centre of Prestwick. All...
Well Heeled
Prestwick
Prestwick
Children's clothing shop exterior.

Bunny Beau Baby

Bunny Beau Baby is an independent, family run, children’s wear retailer, specialising in quality and designer clothing, shoes and accessories...
Bunny Beau Baby
Prestwick
Prestwick
Belle Boutique

Belle Boutique

Situated in Prestwick Main Street, Belle Boutique is a unique ladies clothing and jewellery boutique. Selling smart, casual layering collections...
Belle Boutique
Prestwick
Prestwick
Exterior of barber and coffee shop.

McIntyre Barberista

McIntyre Barberista is a barber and cafe in one. Browse and listen to vinyls while you wait in our fun...
McIntyre Barberista
Prestwick
Prestwick
Delicious looking pies on a table.

West Coast Foods

West Coast Foods is an award winning Scottish butcher and rated one of the best online butchers in the UK....
West Coast Foods

What's On

An image of crochet needles and yarn/wool in the background.
Monday 6 October - Monday 24 November 2025
5pm - 6.30pm
Free

Crochet with Isabelle at Prestwick Library

Crochet with Isabelle at Prestwick Library

Sign up for our newsletter

Get the latest Destination South Ayrshire news and events delivered straight to your inbox.

Copyright © 2025 Destination South Ayrshire. Provided by South Ayrshire Council.

Sign up for our newsletter

Get the latest Destination South Ayrshire news and events delivered straight to your inbox…

document.addEventListener('DOMContentLoaded', () => { // Robust selectors for 2025 Elementor (covers Pro, Hello, Astra) const toggle = document.querySelector('.elementor-menu-toggle, .elementor-nav-menu--toggle button, [aria-expanded][role="button"]'); const menu = document.querySelector('.elementor-nav-menu--dropdown, .elementor-nav-menu__container, nav[role="navigation"]'); if (!toggle || !menu) { console.error('ZoomFix: Elements not found. Inspect hamburger/menu HTML.'); return; } console.log('ZoomFix: Found toggle and menu. Testing at 400% zoom...'); let focusables = []; let firstItem, lastItem; let isOpen = false; let tabCountAtEnd = 0; // Detects repeated Tabs to auto-close const MAX_TABS_BEFORE_CLOSE = 2; // Closes after 2 Tabs on last item const updateFocusables = () => { focusables = Array.from(menu.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])')); firstItem = focusables[0]; lastItem = focusables[focusables.length - 1]; console.log('ZoomFix: Updated focusables:', focusables.length); }; // Monitor for menu open/close (handles Elementor's mutations at zoom) const observer = new MutationObserver((mutations) => { const expanded = toggle.getAttribute('aria-expanded') === 'true' || toggle.classList.contains('elementor-active'); if (expanded !== isOpen) { isOpen = expanded; console.log('ZoomFix: Menu state:', isOpen ? 'OPEN' : 'CLOSED'); if (isOpen) { updateFocusables(); setTimeout(() => firstItem?.focus(), 100); // Delay for zoom reflow startFocusPolling(); // Start zoom-safe polling } else { stopFocusPolling(); toggle.focus(); } } }); observer.observe(toggle, { attributes: true, subtree: true }); // Zoom-proof focus trap: Global Tab listener const handleTab = (e) => { if (!isOpen || !focusables.length) return; updateFocusables(); // Re-scan for zoom/DOM changes if (document.activeElement === lastItem && e.key === 'Tab' && !e.shiftKey) { e.preventDefault(); tabCountAtEnd++; console.log('ZoomFix: Tab at end (#', tabCountAtEnd, ')'); if (tabCountAtEnd >= MAX_TABS_BEFORE_CLOSE) { console.log('ZoomFix: Auto-closing after repeated Tabs'); closeMenu(); tabCountAtEnd = 0; } else { firstItem.focus(); // Trap: Loop to start } } else if (document.activeElement === firstItem && e.key === 'Tab' && e.shiftKey) { e.preventDefault(); lastItem.focus(); // Trap: Loop to end } }; // Polling for zoom event loss (runs only when open) let pollInterval; const startFocusPolling = () => { pollInterval = setInterval(() => { if (isOpen && document.activeElement && !menu.contains(document.activeElement)) { console.log('ZoomFix: Focus escaped during zoom—trapping back'); firstItem?.focus(); } }, 50); // 50ms check survives zoom reflow }; const stopFocusPolling = () => clearInterval(pollInterval); const closeMenu = () => { console.log('ZoomFix: Forcing close'); toggle.click(); // Elementor's native close tabCountAtEnd = 0; }; // Attach listeners document.addEventListener('keydown', handleTab); document.addEventListener('keyup', (e) => { if (e.key === 'Escape' && isOpen) closeMenu(); }); // Fallback: Click outside document.addEventListener('click', (e) => { if (isOpen && !menu.contains(e.target) && !toggle.contains(e.target)) closeMenu(); }); // Initial scan updateFocusables(); });