Codalent
Independent technical audit15 September 2026

Technical audit report for UpKeep

Subjectupkeep.comBenchmarked againstLimble · MaintainX

UpKeep markets the best mobile experience in CMMS. Its own mobile site is the slowest of the three leading vendors.

On desktop, upkeep.com is in good shape — a performance score of 87, an LCP of 1.1 s, and structured data most SaaS marketing sites never bother with. Nothing here is neglect.

On a mid-tier phone over 4G, the same page scores 38–41. The hero takes 7.7–9.8 s to paint, against Google's 2.5 s threshold for “good.” Limble's homepage does it in 2.6 s.

The cause is not your engineering team's code. Roughly two thirds of the page — 3,247 KB of 5,117 KB — is third-party marketing and analytics tags. That makes this a marketing-owned problem, and it is fixable without touching the product roadmap.

Mobile performance38–41/100PoorMedian 41 across 3 runs
Largest contentful paint7.7 s3× thresholdGood is 2.5 s or less · range 7.7–9.8 s
Third-party share63%3,247 KB142 of 202 requests
Desktop performance87/100GoodLCP 1.1 s — no issue here

Lighthouse 13.4.1, mobile emulation (Moto G Power class, 4G throttling), 3 runs. Ranges shown wherever runs disagreed.

Findings

Ranked by commercial impact
01

The mobile site undercuts the mobile-first product claim

CriticalPositioning risk

UpKeep's differentiator in this category is the mobile experience — technicians on a plant floor, on a phone. A buyer who researches that claim from their phone waits roughly eight seconds for the first meaningful pixel.

Speed Index — how quickly the page visibly fills in — is 12.2 s. For most of that window the visitor looks at an empty screen while the strongest proof point in the pitch goes unmade.

Mobile — upkeep.com homepage
Largest contentful paint
7.7 s
Speed Index
12.2 s
Total blocking time
1,840 ms
Main-thread work
8,413 ms
JavaScript execution
4,627 ms
02

Your own tag stack is the single largest cause

CriticalMarketing-owned

Six third-party vendors consume 1,944 ms of main-thread time between them. This is the rare performance problem that does not need a product sprint — it needs a decision about which tags load, when, and whether each still earns its place.

Two findings worth a direct answer: two separate Meta pixel configurations load on the same page, and three Google containers initialise alongside them. Both may be deliberate. If either is a leftover from a past campaign, it is pure cost.

This is the one we would start with — biggest lever, least disruption.

Main-thread time by vendor — mobile
Facebook
559 ms
218 KB
Google Tag Manager
517 ms
877 KB
Intercom
327 ms
286 KB
Microsoft Clarity
214 ms
33 KB
HubSpot
63 ms
106 KB
CookiePro
56 ms
247 KB

Meta pixels: 1406756152961377, 1848569805443673

Google containers: GTM-TJL6ZVR, G-4XCTC3D1W0, AW-872384478

03

157 of 170 images ship without dimensions

ModerateQuick win

Images without explicit width and height force the browser to reflow as each one arrives. Layout shift is currently low at 0.037, so this is not hurting rankings yet — but it is a standing cause of the jumpy feel on slower connections, and one of the cheapest fixes on this list.

04

Gatsby is in maintenance mode — a slow-burning platform risk

Strategic

The site runs on Gatsby. Since Netlify's acquisition the framework is maintained but not advanced — React 19 support did land in January 2026, so this is not an emergency. The practical cost is the plugin ecosystem, much of which is now unmaintained, and the dependency breakage that tends to surface at each Node upgrade.

Worth a deliberate decision this year rather than a forced one later. We rebuilt CrowdSec's site from exactly this position onto Next.js with a headless WordPress back end.

05

Accessibility gaps concentrated on touch

Moderate

An accessibility score of 86 is respectable. The notable entry for a mobile-first brand: three touch targets fall below the minimum size or spacing. Alongside those, twelve aria-hidden elements contain focusable children (a keyboard trap pattern), eight elements fail contrast, and the page has no main landmark.

Competitive benchmark

Mobile, same conditions, same day

Largest Contentful Paint

Seconds to paint the main content. Lower is better.

UpKeep
Google "good" — 2.5s
7.7 s
MaintainX
3.7 s
Limble
2.6 s

Scale 0–10 s. Only Limble clears the threshold Google uses as a ranking signal.

What upkeep.com's 5,117 KB is made of

Mobile homepage, total transferred bytes.

1,870 KB
3,247 KB third-party
UpKeep's own site — 1,870 KB (36.5%)Third-party tags — 3,247 KB (63.5%)

142 of 202 requests go to third parties.

Full comparison — mobile unless noted
MetricUpKeepMaintainXLimble
Performance384781
LCP7.7 s3.7 s2.6 s
Total blocking time1,840 ms1,150 ms430 ms
Speed Index12.2 s8.2 s3.8 s
Page weight5,117 KB12,469 KB2,638 KB
Accessibility868978
Desktop performance879289

Worth noting against our own argument: MaintainX ships more than twice UpKeep's bytes yet paints in half the time. Weight alone does not cause slowness — what matters is how much of it blocks rendering. UpKeep's problem is specifically blocking work on the main thread, which is why the fix is sequencing rather than deletion.

Credit where due

What upkeep.com already does better than most

  • Structured data is genuinely strong — 13 schema types including SoftwareApplication, Offer and FAQPage. This is the markup that wins rich results, and most competitors skip it.
  • Every one of 170 images has alt text. Rare at this scale.
  • Security headers are mostly in place — CSP, X-Content-Type-Options, X-Frame-Options and Referrer-Policy all present. HSTS and Permissions-Policy are the two absent.
  • SEO fundamentals are clean — canonical set, robots.txt correct, sitemap properly declared, custom 404 in place. Score of 92.
  • Desktop performance is good. This audit is about one platform, not the whole site.

What we would do first

Estimates from the measurements above
  1. 1.Tag audit and load sequencing

    2–3 days

    Inventory every third-party tag against a named owner and a live use. Retire what no longer earns its place, resolve the duplicate Meta pixel question, and defer the rest behind first paint so tags stop competing with the hero.

    Largest single lever — targets the 1,944 ms of third-party main-thread time

  2. 2.LCP path

    3–4 days

    Preload the hero image, serve it at mobile dimensions in a modern format, and clear the render-blocking work sitting in front of it.

    Target: LCP under 2.5 s on 4G

  3. 3.Image dimensions and delivery

    2 days

    Add explicit width and height across the 157 images missing them, and correct the oversized assets flagged in the delivery audit.

    Removes a standing layout-shift risk before it becomes a ranking one

  4. 4.Framework position — assessment only

    Scoped separately

    A written view on staying with Gatsby versus migrating, with real costs on both sides. Not a month-one project, and not something to decide under pressure.

    Decision input, not a commitment

Items 1–3 are roughly three weeks of one engineer — the scope we would propose for a first month.

Who sent you this

We are the engineering team for marketing teams

Most marketing teams do not have a developer problem. They have a queue problem — the roadmap is full, marketing sits behind product, and the work that would move the number keeps slipping a quarter.

Codalent is a plug-and-play dev team on subscription. We take the backlog your engineers will not get to this quarter, and your engineers stay on the product.

Websites & landing pages

Campaign pages and full rebuilds, shipped in days rather than quarters.

Marketing stack & analytics

Tag hygiene, tracking you can trust, and the dashboards that read it back.

AI development & automations

The repetitive work in your funnel, handed to something that does not sleep.

Experimentation & A/B testing

Tests that actually ship, instrumented properly enough to call a winner.

Mobile app development

When the campaign needs more than a page behind it.

Hosting, DevOps & reliability

The part nobody asks for until the launch morning it fails.

Trusted by teams at
  • Traefik Labs
  • CrowdSec
  • Planning Center
  • DeepLearning.AI
  • KrakenD
  • Cyberbit
  • NEAR
Verified reviews on Clutch

We rebuilt CrowdSec’s site onto Next.js with a headless WordPress back end, and have been Traefik Labs’s web team since 2019.

Next step

Walk through the fixes with us

Thirty minutes, no deck. We go through the findings above, you tell us which ones matter to your numbers, and we scope the first month against them.

  • Which findings actually move your pipeline, and which are noise
  • What we would ship in the first month, and what it would cost
  • How we work alongside your existing engineering team
Schedule 30 min meeting

Opens our calendar right here — the report stays put.

Verified reviews on Clutch

Prefer email? Reach us through codalent.com.

Method

Everything here comes from public pages, measured the same way for every site on the same day. No access to UpKeep systems, analytics or internal data was used or needed.

Tool
Google Lighthouse 13.4.1, headless Chrome
Mobile profile
Moto G Power class emulation, 4G throttling, cold cache
Runs
3 per page; ranges shown wherever runs disagreed
Variance
Performance 38 / 41 / 41 · LCP 7.7–9.8 s · TBT 0.9–1.8 s
Captured
15 September 2026
Scope
Homepage only, per site

Lighthouse scores move between runs, so single figures are quoted as medians and volatile ones as ranges. The structural numbers — page weight, request counts, third-party share, tag inventory — do not fluctuate, which is why the argument rests on those.

Schedule 30 min meeting

Pick a time that suits you. No deck, no obligation.

Loading the calendar…