InUterr0As a web developer running a small studio in Stockholm, I've spent the past two years building...
As a web developer running a small studio in Stockholm, I've spent the past two years building websites for construction and service companies across Sweden. Here's what I've learned about creating fast, effective websites for small businesses that actually generate leads.
When a homeowner in Stockholm searches for "renovering Nynäshamn" or "staket Stockholm," they're ready to hire. If your site takes more than 3 seconds to load, you've lost them to the competitor whose site loads in 1.
For our client Totalbyggarna, a renovation company south of Stockholm, we cut load time from 5.2s to 1.1s. The result? A 40% increase in contact form submissions.
After building sites for various trades — from fence installation to foundation work and cleaning services — I've settled on a reliable stack:
const express = require('express');
const compression = require('compression');
const app = express();
app.use(compression());
// Pre-render critical pages
app.get('/', (req, res) => {
res.render('index', {
title: 'Renovering Stockholm',
preloadImages: getCriticalImages()
});
});
Why Express over Next.js or Gatsby for these projects? Simple: these are 5-10 page sites. A full React framework is overkill. Server-rendered HTML with minimal JavaScript gives us:
Construction sites = lots of photos. We built a simple pipeline:
const sharp = require('sharp');
async function optimizeImage(input, output) {
await sharp(input)
.resize(1200, null, { withoutEnlargement: true })
.webp({ quality: 80 })
.toFile(output);
}
For a site like ByggLog (our construction project management tool), we inline above-the-fold CSS directly in the HTML head:
<head>
<style>
/* Critical path CSS - only what's needed for first paint */
.hero { display: flex; min-height: 60vh; }
.nav { position: fixed; width: 100%; z-index: 100; }
</style>
<link rel="preload" href="/css/main.css" as="style">
</head>
<img src="placeholder.svg"
data-src="project-photo.webp"
loading="lazy"
alt="Renovation project in Nynäshamn">
Technical SEO for local Swedish businesses has its own quirks:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Totalbygg Nynäshamn",
"address": {
"addressLocality": "Nynäshamn",
"addressCountry": "SE"
}
}
Across our portfolio at Apex Studio, here's what we've consistently achieved:
| Metric | Before | After |
|---|---|---|
| Page Load | 4-6s | 1-1.5s |
| Lighthouse Performance | 40-60 | 90-100 |
| Mobile Usability | Poor | Excellent |
| Organic Traffic | baseline | +120% (6 months) |
We also built a design portfolio site for our creative work at Son & Får, which showcases how the same performance principles apply to media-heavy creative sites.
I'm Mateusz, founder of Apex Studio in Stockholm. We build fast, modern websites for construction and service companies across Sweden. Check out our work or reach out if you want to chat about web performance.