Proper websites, done properly

Oldfield Bespoke Furniture

16 minute read time.

We've worked with Darren at Oldfield Bespoke Furniture for over 15 years, and in that time we've continuously strived to keep improving the performance of his site.

The project

It was time to look at where we could improve again, as it had been about 2 years since our last performance and technology updates to the site. It's really important with any site that you ensure you periodically update plugins, libraries and applications you use to build and run it.

Static sites are no exception - they just have less security concerns because there's no database sitting behind it, and no public area to log in to worry about.

Our aims

  • Keep the same general look and feel
  • Reconsider fontface usage
  • Update CSS to modern layout techniques
  • Update Eleventy and all plugins to newest versions
  • Convert many static, repeatable areas to data files and macros
  • Improve performance everywhere possible
  • Improve Core Web Vitals scores

Colour palette

The first thing we looked at was to improve the accessibility of the colour scheme. The link colour and some hover/focus states were too subtle and didn't have enough contrast so we switched out the grey for a bright yellow.

The tweaked palette:

  • Black
    • #000
    • rgb(0 0 0)
    • hsl(0deg 0% 0%)
  • White
    • #fff
    • rgb(255 255 255)
    • hsl(0deg 100% 100%)
  • Bright
    • #fe0
    • rgb(255 238 0)
    • hsl(56deg 100% 50%)
  • Tint
    • rgb(255 255 255 / 0.1)
    • hsl(0deg 100% 100% / 0.1)

Colour contrast

From an accessibility check, the scores for these colour combinations are much better than previously, and hit WCAG2 AAA standard as well as high contrast pass using the WCAG3 Advanced Perceptual Contrast Algorithm (APCA).

  • Bright on Black
    • WCAG 3 APCA Lc -94.6
    • WCAG 2.x AAA 17.48
  • Black on Bright
    • WCAG 3 APCA Lc 94
    • WCAG 2.x AAA 17.48
  • Black on White
    • WCAG 3 APCA Lc 106
    • WCAG 2.x AAA 21
  • White on Black
    • WCAG 3 APCA Lc -107
    • WCAG 2.x AAA 21

Layout and style

We updated a lot of the styles behind the scenes, improved the layout, made a few tweaks to font sizes, and did a couple of maintenance updates (like switching the Twitter logo out for the new X logo).

Updating body link colour to Bright makes the links really obvious, and much easier to read. We also updated how the menu works to have an active state as you move through the other pages, and updated the ARIA accessibility attribute aria-current="page" to mark the currently active page for assistive software.

Previous site on desktopNew site on desktop
Previous vs. new site on desktop

From both a mobile and desktop perspective, the increase in font size makes the site feel much more approachable and easy to read.

Previous site on mobileNew site on mobile
Previous vs. new site on mobile

We applied sensible Core Web Vitals recommendations to images across the board: for the slideshow on the homepage, we added fetchpriority="high" on the first image, and used a <link rel="preload" href="/img/slideshow/slide1.webp" as="image"> in the <head> of the page to give it the best chance of loading fast.

Across the board we ensured that every single image had a width and height attribute added with the image's correct intrinsic values (the size of the image file, not the size it appears on screen).

Any images that were low priority or likely off screen on initial page load were given a loading="lazy" attribute to allow the browser to defer fetching and loading those images until the more important tasks are done.

We applied the same semi-transparent border to each gallery image and increased the space around each item as well to mirror the style of the slideshow on the homepage.

Previous galleryNew gallery
Previous vs. new gallery

Page weight

We ran every single image on the site through an optimiser/convertor and moved from JPG images to WEBP for the most part, hugely reducing file size with almost no visible loss in quality.

Removing one of the font families in use, using the serif font across the board and only serving WOFF2 font files also meant we saved another 95KB off the page weight.

Overall, we almost halved the entire size of the whole website during these updates:

Before and after comparison

Page measured: Home
Page weight before: 1034KB
Page weight after: 531KB
48% smaller
Page measured: Services
Page weight before: 344KB
Page weight after: 173KB
49% smaller
Page measured: Testimonials
Page weight before: 378KB
Page weight after: 201KB
46% smaller
Page measured: Contact
Page weight before: 341KB
Page weight after: 170KB
50% smaller
Totals: Saving: -1022KB or 48% smaller page weight

Other improvements

We decided to split the gallery up into smaller, individual gallery pages and make the gallery landing page a gateway to the others to further decrease each individual page load time and weight.

The original gallery page was 1.41MB. Optimising the page got it down to around 897KB. We decided it was a better overall experience now that there was a large selection of images split into categories that creating a landing page to guide you to the images you're interested in and therefore splitting one gallery page into four smaller, lighter galleries meant that the landing page now weighs in at 237KB, the kitchens gallery is 496KB, fitted furniture is 340KB, other furniture is 428KB and the bedroom furniture gallery is 240KB.

The page weight for each site page is approximately 173KB for all base assets (CSS, JavaScript, header, footer and all images needed to make the default layout look right), so splitting the gallery up means that we're only loading a small amount of data per page (the largest gallery page was 330KB more than the base) which is less than 22% of the original gallery page size!

This is phenomenal! Converting images to modern formats, adjusting how some areas are built and function makes a huge difference in overall page weight and performance.

Core Web Vitals and page stats

Mobile (Previous version)

  • Largest Contentful Paint: 5.3s
    Success: < 2.5s Warning: 2.6s - 4s Error: > 4s
  • First Contentful Paint: 0.9s
    Success: < 1.8s Warning: 1.81s - 3s Error: > 3s
  • Speed Index: 0.9s
    Success: <3.4s Warning: 3.5s - 5.8s Error: > 5.8s
  • Cumulative Layout Shift: 0
    Success: < 0.1s Warning: 0.11s - 0.25s Error: > 0.25s
  • Total Blocking Time: 0ms
    Success: < 200ms Warning: 201ms - 600ms Error: > 600ms
  • Page weight: 1MB
    Success: < 1.5MB Warning: 1.5MB - 2.23MB Error: > 2.23MB
  • Performance: 81%
    Accessibility: 100%
    Best practices: 96%
    Search Engine Optimisation: 95%

Mobile (March 2024)

  • Largest Contentful Paint: 1.1s
    Success: < 2.5s Warning: 2.6s - 4s Error: > 4s
  • First Contentful Paint: 0.9s
    Success: < 1.8s Warning: 1.81s - 3s Error: > 3s
  • Speed Index: 0.9s
    Success: <3.4s Warning: 3.5s - 5.8s Error: > 5.8s
  • Cumulative Layout Shift: 0
    Success: < 0.1s Warning: 0.11s - 0.25s Error: > 0.25s
  • Total Blocking Time: 0ms
    Success: < 200ms Warning: 201ms - 600ms Error: > 600ms
  • Page weight: 483KB
    Success: < 1.5MB Warning: 1.5MB - 2.23MB Error: > 2.23MB
  • Performance: 100%
    Accessibility: 100%
    Best practices: 100%
    Search Engine Optimisation: 100%

Tech used

  • Eleventy: static site generator
  • PostCSS: for CSS niceties
  • Gulp: For front end build tasks
  • Image optimiser and convertor

Reyt good

The first version of my site was built over a decade ago and it was the best thing I ever did for my sole trader business. I could show off my work and testimonials which brought in new leads for bespoke furniture and joinery projects.

At first I was apprehensive about getting a website sorted, but glad I did and that I got it built by someone who really knows what they are doing!

Shffld did a remarkable job, and continue to do so - and I have never looked back!

Darren Oldfield Joiner, Carpenter, Gentleman

Proper loveleh as they say up here in Yorkshire. We hugely reduced the overall download size of each page, updated plenty of bits and improved accessibility as well in a few places. The Core Web Vitals scores are also improved so overall, we're feeling pretty chuffed.

Are you still here?

You've got staying power, that's for sure! Does your website say the same about you? Do you want a website that shows people you really mean business? Of course you do! I can help.