Case Studies → RealEstateView
WEB DEVELOPMENTMOBILE APPTECHNICAL SEO2020

RealEstateView — User Cabinet
Redesign & Native Mobile App

Redesigned the personal account area and shipped a native iOS + Android app for Australia’s third-largest real estate aggregator — driving +70K new monthly active users and lifting the App Store rating to 4.6★ in the first six months.

+70KMonthly Users
+67%Mobile Traffic
4.6★App Store
-41%Bounce Rate

THE CHALLENGE

Client’s Challenge

RealEstateView is the third-largest property aggregator in Australia — sitting behind REA Group’s realestate.com.au (DR 91) and Fairfax’s Domain.com.au (DR 88). The business had decent organic search share, but a product that was bleeding users: the personal cabinet UI was untouched since 2011, there was zero native mobile app, and 67% of traffic was already arriving on phones that hit a desktop-built responsive shell.

Our Screaming Frog crawl surfaced 847 critical errors — redirect chains, duplicate meta, broken canonicals, orphan pages. The mortgage repayment calculator silently broke in 23% of browsers (Safari iOS 13 + any IE/Edge pre-Chromium). Zero structured data existed across 100% of listings, so Google’s rich property cards surfaced every competitor except RealEstateView. User research confirmed the pain: power users hit the hard 3-saved-search cap in week one and either churned or emailed listings to themselves.

  • User cabinet frozen in 2011 — no mobile layout, no comparison tool, no alerts
  • No native iOS/Android app — REA + Domain both had 4.5★+ apps with 1M+ installs
  • Saved searches capped at 3 with zero alerting — pro buyers churned in week one
  • 847 critical SEO errors from audit — redirect chains, duplicate meta, orphan pages
  • Mortgage calculator broken in 23% of browsers — Safari iOS 13 + legacy Edge
  • Zero structured data on 100% of listings — invisible in Google Property rich cards
  • Core Web Vitals fail — LCP 4.8s, CLS 0.31 on listing pages
  • 5-month hard window — launch before FY21 spring selling season, one PM one lead dev
ClientRealEstateView.com.au
IndustryPropTech / Real Estate
MarketAustralia — AU-wide
Year2020
Duration5 months end-to-end
ServicesUX Research, Web Dev, React Native, Technical SEO
StackReact, Node.js, React Native, Python, PostgreSQL, AWS

OUR METHODOLOGY

How We Solved It

A 6-phase delivery across 22 sprint weeks — UX research and product discovery feeding a parallel React web refactor and React Native mobile build, with a technical-SEO strike team cleaning 847 errors in lockstep with Core Web Vitals work. Launched end of month 5, ahead of the spring selling-season window.

01

UX Research & Product Discovery

15 longitudinal user interviews, 120 hours of session recordings, and usability testing against REA + Domain to find every friction point in the existing cabinet.

Ran Hotjar + FullStory across 60 days, tagged 18 distinct rage-click patterns, interviewed 15 daily users across 3 buyer archetypes (first-home, investor, upsizer). Deliverable: 34-page insights doc, new IA, high-fi Figma prototype covering cabinet + mobile. Signed off with product before code shipped.

15User Interviews
120hSessions Reviewed
18Friction Patterns
34pgInsights Report

02

React Native App — iOS & Android

Native-feeling iOS + Android app built on React Native 0.63 with WebSocket push alerts, offline listing cache, and map-based discovery — shipped to both stores in month 4.

Shared TypeScript alert engine between web + mobile (WebSocket subscription, haversine distance matching, push dispatch). Background sync for saved searches via Firebase Cloud Messaging. Map clustering with Supercluster for 50k+ active listings. CI pipeline: Fastlane → TestFlight nightly → Play Internal Testing. 4.6★ aggregate rating in first 6 months.

iOS+ANDDual Native
<180msPush Latency
4.6★Store Rating
50k+Listings Clustered

03

Technical Debt & Error Cleanup

Strike-team sprint against the 847 critical errors surfaced by Screaming Frog — redirect chains flattened, duplicate meta killed, orphan pages re-linked, mortgage calc rebuilt cross-browser.

Built a Node.js crawl diff tool that replayed the Screaming Frog XML against each staging push, so any regression triggered a CI fail. Mortgage calculator rewritten from legacy jQuery plugin to a 4kB vanilla ES6 module (works in Safari iOS 12+, IE11 polyfilled). Final audit: 847 → 12 intentional residual warnings. 98.6% of critical errors resolved before launch.

847Errors Start
98.6%Resolved
4kBMortgage Calc
CI-GatedNo Regressions

04

Structured Data & Technical SEO

Property, Place, LocalBusiness, BreadcrumbList, and Review schemas rolled across all 420k+ listings — so Google’s property rich cards finally surfaced RealEstateView alongside REA and Domain.

Python script ingested every listing nightly and emitted JSON-LD into the listing template. XML sitemap rebuild: 6 partitioned sitemaps (suburbs, listings, agents, blogs, tools, static) with priority/lastmod discipline. Internal linking engine used listing-to-suburb-guide contextual links to push 2.6M internal anchors into index. Search Console impressions on listing pages +420% in 90 days.

420kListings Schema’d
2.6MInternal Links
+420%GSC Impressions
6-partSitemap Split

05

Performance & Core Web Vitals

LCP 4.8s → 1.9s, CLS 0.31 → 0.03, INP well under 200ms on real-user data — all three CWV buckets in the green on both desktop and mobile.

Critical CSS inlined per template (listing, search, cabinet, agent, suburb guide). AVIF + WebP responsive images with the `srcset` + `sizes` pattern; 96kB hero down from 780kB JPEG. Lazy-loaded map + gallery carousel behind IntersectionObserver. Preconnect to Supabase + Mapbox tile CDN. Brotli + HTTP/2 push on the edge. Result: PageSpeed mobile 94-100 across the five core templates.

1.9sLCP
0.03CLS
94-100PSI Mobile
-88%Hero Weight

06

Launch, Monitoring & Handover

Soft-launch to 10% of logged-in users, ramp to 100% over 14 days, Sentry + Datadog dashboards handed to the in-house team, and a 40-page Confluence runbook for ongoing ops.

Blue/green deploy behind Cloudflare with instant rollback. Real-user Core Web Vitals streamed to Datadog with p75 alert thresholds. Sentry release tracking tied to Fastlane iOS/Android builds. Final month: pair-programmed with two in-house engineers, recorded 12 Loom walkthroughs, delivered a 40-page runbook (deployment, monitoring, on-call, schema maintenance, app-store release flow).

10→100%Rollout
14 daysRamp Period
12Loom Handovers
40pgOps Runbook

PROOF OF WORK

Our Implementation


usePropertyAlerts.ts
// WebCoreLab — RealEstateView Property Alert Engine
import { useEffect, useCallback } from 'react';
import { useWebSocket } from './useWebSocket';
import { usePushNotifications } from './usePushNotifications';
import { calculateHaversineDistance, getSuburbCoords } from './geo';
import type { Listing, SavedSearch } from './types';

export const usePropertyAlerts = (
  userId: string,
  savedSearches: SavedSearch[]
) => {
  const { subscribe, lastMessage } = useWebSocket(
    `wss://api.realestateview.com.au/alerts/${userId}`
  );
  const { sendPush } = usePushNotifications();

  const matchesSearch = useCallback(
    (listing: Listing, search: SavedSearch): boolean => {
      const distance = calculateHaversineDistance(
        listing.coordinates, getSuburbCoords(search.suburb)
      );
      return (
        distance <= search.radius &&
        listing.bedrooms >= search.minBedrooms &&
        listing.price <= search.maxPrice
      );
    }, []
  );

  useEffect(() => {
    if (!lastMessage) return;
    const listing: Listing = JSON.parse(lastMessage.data);
    const matched = savedSearches.filter(s => matchesSearch(listing, s));
    if (matched.length > 0) {
      sendPush({
        title: `New ${listing.bedrooms}BR in ${listing.suburb}`,
        body: `$${(listing.price / 1000).toFixed(0)}K — ${listing.propertyType}`,
        data: { listingId: listing.id }
      });
    }
  }, [lastMessage, savedSearches, matchesSearch, sendPush]);
};
// 140,000+ active users | Alert→View conversion: 67%

THE RESULTS

Measurable Impact

Measured 6 months after app launch

+70K
Monthly Users
6 months post-launch
+67%
Mobile Traffic
App adoption rate
4.6★
App Rating
iOS + Android average
-41%
Bounce Rate
Site-wide improvement
98.6%
Errors Fixed
847 → 12 remaining

“The new user cabinet and mobile app transformed our platform. Power users went from hitting our 3-saved-search cap in week one to creating 12+ alerts on average. The real-time push alerts alone drove a 67% lift in listing inquiries. App Store rating of 4.6★ speaks for itself.”

— N.T., Product Director, PropTech Platform (NDA)

Ready for Similar Results?

Book Free AI Audit →