Performance Scorecards
Benchmark cards per project and the playbook behind them.
Weavr Financial SDK
View project< 1500
Lazy init of SDK modules, baseline profiles for critical path, minimal work in Application.onCreate.
< 3 MB
R8/ProGuard rules to strip unused code; avoid heavy transitive deps; optional features in separate artifacts.
> 99.5
Strict mode in debug, crash reporting with symbolication, regression tests on core flows before release.
< 0.05%
Work off main thread; startup trace and frame metrics; background restrictions for sync and heavy work.
Paytm Mobile Banking
View project< 2000
Baseline profiles, deferred non-critical init, image pipeline and font loading optimized.
Representative: reduced 15–20% over 2 years
R8 full mode, App Bundles, on-demand delivery for non-core features, asset optimization.
> 99.5
Automated UI and unit tests, staged rollouts, crash bucketing and fix-on-release discipline.
Representative: fewer redundant calls, smaller payloads
Batching, GraphQL or field selection, compression, caching with stale-while-revalidate.
Angel One Trading App
View project< 2500
Lazy init of trading and WebSocket stack; baseline profiles; minimal work before first frame.
Representative: controlled growth with modularization
Feature modules and on-demand delivery; R8; regular size regression in CI.
> 99.3
Instrumentation and strict mode; crash reporting; ANR detection and attribution.
Target: < 0.1%
Background thread for market data and sync; startup and frame budgets; trace-based monitoring.
INDmoney Personal Finance
View project< 2200
Lazy init of aggregation and sync; baseline profiles; lightweight first screen.
Representative: kept flat despite new features
Modularization, R8, App Bundle, removal of unused libs and assets.
> 99.5
Room and sync tested in isolation; crash-free as release gate; staged rollouts.
Performance Playbook
Principles I apply to hit and sustain performance targets.
- Define and measure SLOs (e.g. cold start, ANR, crash-free) and enforce them in CI or release gates where possible.
- Use baseline profiles (Android) and equivalent optimizations to lock in critical-path performance; regenerate on meaningful code changes.
- Prefer lazy init and on-demand loading for non-critical path; keep Application and first screen minimal.
- Instrument startup and key flows with traces; set performance budgets and fail builds or flag when regressed.
- R8/ProGuard rules must be reviewed and tested; keep rules minimal and document why each keep is needed.
- Cache aggressively with clear invalidation and staleness rules; use appropriate cache layers (memory, disk, network) and measure hit rates.