Overview
The build-versus-buy framework evaluates four dimensions: strategic fit (does this capability differentiate us or is it commodity infrastructure?), total cost of ownership over five years (not just initial integration cost), risk profile (vendor dependency, data sovereignty, supply chain exposure), and fit to requirements (does the solution meet the functional and non-functional requirements without bespoke modification?).
Evaluation Framework
Dimension 1: Strategic Differentiation
Capabilities that directly differentiate the client's product should be built. A custom biometric authentication flow that reinforces the brand. A proprietary recommendation algorithm. A novel interaction pattern specific to the use case. These are build decisions regardless of cost.
Commodity infrastructure capabilities should be bought. Authentication (use AppAuth + your IdP, not a custom OAuth implementation). Crash reporting (Crashlytics). Push notifications (FCM, APNs via a service like Firebase). Analytics (Mixpanel, Amplitude). Building these from scratch consumes engineering capacity without creating competitive advantage.
Dimension 2: Total Cost of Ownership (5-Year)
Build cost: engineering time to design, implement, test, document, maintain, and evolve the capability over five years. SDK cost: licensing fees, per-call or per-user pricing, integration engineering time, migration cost if the vendor changes terms.
Five-year TCO calculation:
- Build: (design hours + implementation hours + test hours) × hourly rate + (annual maintenance hours × 5) × hourly rate
- Buy: integration hours × hourly rate + (annual licence fee × 5) + vendor risk premium
SDK licence terms often start cheap and escalate with scale — model the cost at 10× current user base before committing.
Dimension 3: Risk Assessment
Vendor lock-in risk: how difficult is migration if the vendor raises prices, changes terms, or is acquired? Define an abstraction layer (Repository interface pattern) between the SDK and the business logic, enabling replacement with minimal business logic change.
Data sovereignty risk: where does the SDK send data? For regulated industries (banking, healthcare), SDKs that send user data offshore may violate BSP, PDPA, or HIPAA requirements. Evaluate data residency before adoption.
Supply chain risk: a compromised SDK distributed through Maven Central or CocoaPods affects every app that depends on it. Evaluate the SDK maintainer's security posture and incident history.
Dimension 4: Requirements Fit
Does the solution meet 100% of functional requirements without modification? Does it meet the performance NFRs? Does it support the required OS versions? Does it comply with the applicable regulations?
A solution that meets 80% of requirements but requires 40% of build cost to fill the remaining 20% often costs more total than building from scratch.
Build-vs-Buy by Category
| Category |
Default Decision |
Rationale |
| OAuth 2.0 + PKCE |
Buy (AppAuth) |
Security-critical, well-specified, bad implementation is dangerous |
| Crash Reporting |
Buy (Crashlytics) |
Commodity infrastructure, network effect (aggregated stack traces) |
| Custom Camera Pipeline |
Build |
Deep hardware access, platform-specific optimisation required |
| Payment Processing |
Buy (Stripe, Adyen) |
Regulated, complex, PCI-DSS compliance prohibitive to build |
| Design System Components |
Build |
Brand differentiation, platform-specific fidelity required |
| Analytics |
Buy (Mixpanel/Amplitude) |
Data science tooling built in, network effect |
| Biometric Authentication |
Buy (BiometricPrompt/LocalAuthentication) |
Platform-provided, hardware-backed |
| ML Model Inference |
Build model, buy runtime (Core ML, TFLite) |
Model is IP; runtime is commodity |
Anti-Patterns to Avoid
⚠ 1. Integration Before Evaluation
Adding an SDK based on a blog post or a colleague recommendation without completing the evaluation framework. Discovering 18 months later that the SDK sends user data to servers outside the permitted jurisdiction.
Hover to see the fix ↻
↺ Correct Approach
Dependency Governance process (Section 14) applies to all SDKs. Evaluation checklist completed and approved before first import.
⚠ 2. Building Commodity Infrastructure
Engineering team spends six sprints building a custom push notification service. The result is equivalent to Firebase Cloud Messaging but without the scale, reliability, and global delivery optimisation.
Hover to see the fix ↻
↺ Correct Approach
Buy commodity infrastructure. Build differentiating capabilities. Use engineering capacity where it creates business value.
Flowchart
%%{init:{'theme':'base','themeVariables':{'fontSize':'14px','fontFamily':'IBM Plex Sans, system-ui, sans-serif','primaryColor':'#DBEAFE','primaryTextColor':'#1e3a5f','primaryBorderColor':'#2563EB','lineColor':'#374151','clusterBkg':'#F9FAFB','clusterBorder':'#D1D5DB','edgeLabelBackground':'#FFFFFF'},'flowchart':{'curve':'orthogonal','padding':30,'nodeSpacing':65,'rankSpacing':75,'useMaxWidth':true}}}%%
flowchart TD
REQ["New Capability Required"] --> D1
D1{Strategic
Differentiation?} -->|"Differentiates product
Brand · Novel UX · IP"| BUILD["🔨 BUILD
Custom implementation
Full control · No vendor risk"]
D1 -->|"Commodity
infrastructure"| D2
D2{5-Year TCO
Comparison} -->|"Build cost lower
or equivalent"| BUILD
D2 -->|"Buy cost lower
with acceptable risk"| D3
D3{Risk
Assessment} -->|"Vendor lock-in high
Data sovereignty issue
Supply chain risk"| BUILD
D3 -->|"Risk acceptable
Abstraction layer possible"| D4
D4{Requirements
Fit > 90%?} -->|"Yes — meets requirements"| BUY["🛒 BUY / INTEGRATE
SDK or SaaS
Faster time to market"]
D4 -->|"No — significant gaps
require bespoke work"| BUILD
style BUILD fill:#E8F5E9,stroke:#1B5E20
style BUY fill:#E3F2FD,stroke:#1565C0
References
- Gartner — Build vs Buy Decision Framework. gartner.com
- Harvard Business Review — When Should You Buy vs Build Technology? hbr.org
- ThoughtWorks — Technology Radar. thoughtworks.com/radar
Mobile Engineering Reference
← Mobile Development