{"id":15088962,"date":"2026-03-30T22:00:00","date_gmt":"2026-03-31T02:00:00","guid":{"rendered":"https:\/\/www.inthacity.com\/news\/monzo-boosts-performance-metrics-by-up-to-35-with-a-simple-r8-update\/"},"modified":"2026-04-01T21:03:37","modified_gmt":"2026-04-02T01:03:37","slug":"monzo-boosts-performance-metrics-by-up-to-35-with-a-simple-r8-update","status":"publish","type":"post","link":"https:\/\/www.inthacity.com\/news\/monzo-boosts-performance-metrics-by-up-to-35-with-a-simple-r8-update\/","title":{"rendered":"Monzo boosts performance metrics by up to 35% with a simple R8 update"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgjeoc8k0szO6APp8xoaNewSfj_gULMjxTJ-LWLAfodA_Wt4PF3Ax-cFZgETO4xehYDnFKeJodrMSlVJK0IesWqa2LvRQpDyCHvH-T2bZAbxNJyg-8WP55dJUP61gMBjBH44RHrSCA7L0C_e8m6YLboFZseS7HKTuvmQnS3SYVgGSOVFLeqQd640N4wmS8\/s1234\/AANDDM_Monzo_Meta.png\" \/><br \/>\n  .post-container {<br \/>\n    font-family: &#8216;Segoe UI&#8217;, Roboto, Helvetica, Arial, sans-serif;<br \/>\n    line-height: 1.6;<br \/>\n    color: #333;<br \/>\n    max-width: 800px;<br \/>\n    margin: auto;<br \/>\n  }<br \/>\n  .highlight-box {<br \/>\n    background-color: #f2f2f2;<br \/>\n    border-left: 5px solid #666;<br \/>\n    padding: 20px;<br \/>\n    margin: 25px 0;<br \/>\n  }<br \/>\n  .stats-table {<br \/>\n    width: 100%;<br \/>\n    border-collapse: collapse;<br \/>\n    margin: 20px 0;<br \/>\n  }<br \/>\n  .stats-table th, .stats-table td {<br \/>\n    border: 1px solid #ccc;<br \/>\n    padding: 12px;<br \/>\n    text-align: left;<br \/>\n  }<br \/>\n  .stats-table th {<br \/>\n    background-color: #e0e0e0;<br \/>\n    color: #222;<br \/>\n  }<br \/>\n  .code-block {<br \/>\n    background-color: #f7f7f7;<br \/>\n    color: #333;<br \/>\n    padding: 18px;<br \/>\n    border-radius: 4px;<br \/>\n    overflow-x: auto;<br \/>\n    font-family: &#8216;Consolas&#8217;, &#8216;Monaco&#8217;, monospace;<br \/>\n    font-size: 14px;<br \/>\n    margin: 20px 0;<br \/>\n    border: 1px solid #ddd;<br \/>\n  }<br \/>\n  .quote {<br \/>\n    font-style: italic;<br \/>\n    font-size: 1.1em;<br \/>\n    color: #444;<br \/>\n    padding: 10px 25px;<br \/>\n    border-left: 4px solid #bbb;<br \/>\n    margin: 30px 0;<br \/>\n  }<br \/>\n  h2 {<br \/>\n    color: #222;<br \/>\n    \/* Section line removed here *\/<br \/>\n    padding-bottom: 8px;<br \/>\n    margin-top: 30px;<br \/>\n  }<br \/>\n  a {<br \/>\n    color: #444;<br \/>\n    text-decoration: underline;<br \/>\n  }<br \/>\n  .bullet-point {<br \/>\n    color: #777;<br \/>\n    margin-right: 8px;<br \/>\n  }<br \/>\n  .separator img {<br \/>\n    max-width: 100%;<br \/>\n    height: auto;<br \/>\n  }<\/p>\n<div class=\"post-container\">\n<div class=\"separator\" style=\"clear: both;text-align: left\"><i>Posted by Ben Weiss, Senior Developer Relations Engineer<\/i><\/div>\n<div class=\"separator\" style=\"clear: both;text-align: center\">\n    <a href=\"https:\/\/blogger.googleusercontent.com\/img\/a\/AVvXsEi8op3RAwToqGSUvLZB1ggptAJH7IWT1uOKfMG9xugHtdTM0L21Ft689v9q5EcI-BljErJxZOkRhDzfwFgF_1DjAVHU9lAPfXE8nOdfxQS9lMoNlZmlZV3HOTUA1CLiMM3DBsa8-OFnwbRtuS9G6sFaI9bz3bpl73Wl1wiyMMm7YeN-RD3f3AxoMQSm5pY\" style=\"clear: left;float: left;margin-bottom: 1em;margin-right: 1em\"><br \/>\n      <img decoding=\"async\" alt=\"Monzo App Performance\" src=\"https:\/\/blogger.googleusercontent.com\/img\/a\/AVvXsEi8op3RAwToqGSUvLZB1ggptAJH7IWT1uOKfMG9xugHtdTM0L21Ft689v9q5EcI-BljErJxZOkRhDzfwFgF_1DjAVHU9lAPfXE8nOdfxQS9lMoNlZmlZV3HOTUA1CLiMM3DBsa8-OFnwbRtuS9G6sFaI9bz3bpl73Wl1wiyMMm7YeN-RD3f3AxoMQSm5pY=s16000\" \/><br \/>\n    <\/a>\n  <\/div>\n<p>\n    Monzo is a UK digital bank with 15 million customers and growing. As the app scaled, the engineering team identified app startup time as a critical area for improvement but worried it would require significant changes to their codebase.\n  <\/p>\n<p>\n    By fully enabling R8 optimizations, Monzo achieved a massive 35% reduction in their Application Not Responding (ANR) rate. This simple change proved that impactful optimizations don&#8217;t always require complex engineering efforts.\n  <\/p>\n<h2>Unlocking broad performance wins with R8 full mode<\/h2>\n<p>\n    Monzo identified R8 full mode as an easy fix worth trying; and it worked, improving performance across the board:\n  <\/p>\n<ul style=\"list-style-type: none;padding-left: 0px\">\n<li><span class=\"bullet-point\">\u25cf<\/span> <strong>Startup Reliability:<\/strong> Cold starts improved by 30%, Warm starts by 24%, and Hot starts by 14%.<\/li>\n<li><span class=\"bullet-point\">\u25cf<\/span> <strong>Launch Speed:<\/strong> P50 launch times improved by 11% and P90 launch times by 12%.<\/li>\n<li><span class=\"bullet-point\">\u25cf<\/span> <strong>Efficiency:<\/strong> Overall app size was reduced by 9%.<\/li>\n<li><span class=\"bullet-point\">\u25cf<\/span> <strong>Stability:<\/strong> ANR reduction of 35%.<\/li>\n<\/ul>\n<div class=\"separator\" style=\"clear: both;text-align: center\">\n    <a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiLGtCPTiFJfzhXUi4pqYTzL6WvdBdzuGy01fmhTTBeaVRhyN_FpJiflwE0T7BT1SylXsK4Sngdi-yKsu_ZnfGQd0uKo9vjMWZKbRhWjsP03PsoqJSmS_ZJSv19N8cQ_hi4FNXWnLa3zR2uNZGECwA2nbbF3fAL6PH_GLGqNLxn5UiK5fRlHbT3uzbEusQ\/s1280\/AANDDM_Monzo_Quote-1.png\" style=\"clear: left;float: left;margin-bottom: 1em;margin-right: 1em\"><br \/>\n      <img decoding=\"async\" border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiLGtCPTiFJfzhXUi4pqYTzL6WvdBdzuGy01fmhTTBeaVRhyN_FpJiflwE0T7BT1SylXsK4Sngdi-yKsu_ZnfGQd0uKo9vjMWZKbRhWjsP03PsoqJSmS_ZJSv19N8cQ_hi4FNXWnLa3zR2uNZGECwA2nbbF3fAL6PH_GLGqNLxn5UiK5fRlHbT3uzbEusQ\/s16000\/AANDDM_Monzo_Quote-1.png\" \/><\/a><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjMRp_RzT-yKnpcXRUzboXFDzTzIYRm9ButtS7MqahjOhKMP3YKByiKcoPfVuD0qAl0XhyphenhyphenQTLzlUBEvXYka3-IiR_gLTPF6PwfOGdG6Cns1Hu_MRtXE15Zeln38QQWKAfekubpLCTtSajdrTjsUXQzrTYFdi3oF2zgxzsk_c0awe-5wkKm0HYRpLykhLv4\/s1280\/AANDDM_Monzo_Quote-2.png\" style=\"margin-left: 1em;margin-right: 1em\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjMRp_RzT-yKnpcXRUzboXFDzTzIYRm9ButtS7MqahjOhKMP3YKByiKcoPfVuD0qAl0XhyphenhyphenQTLzlUBEvXYka3-IiR_gLTPF6PwfOGdG6Cns1Hu_MRtXE15Zeln38QQWKAfekubpLCTtSajdrTjsUXQzrTYFdi3oF2zgxzsk_c0awe-5wkKm0HYRpLykhLv4\/s16000\/AANDDM_Monzo_Quote-2.png\" \/><\/a><\/div>\n<h2>Enabling optimizations with a single change<\/h2>\n<p>Many Android apps use an outdated default configuration file which disables most functionality of the R8 optimizer. The main change Monzo made to unlock these performance improvements was to replace the <code>proguard-android.txt<\/code> default file with <code>proguard-android-optimize.txt<\/code>. This change removes the <code>-dontoptimize<\/code> instruction and allows R8 to properly do its job.<\/p>\n<pre class=\"code-block\">buildTypes {\n  release {\n    isMinifyEnabled = true\n    isShrinkResources = true\n    proguardFiles(\n      getDefaultProguardFile(\"proguard-android-optimize.txt\"),\n    )\n  }\n}\n<\/pre>\n<p>After making this change, it&#8217;s worth looking at your Keep configuration files. These files tell R8 which parts of your code to leave alone (usually because they&#8217;re called dynamically or by external libraries). Tidying up unnecessary Keep rules means R8 can do more.<\/p>\n<h2>Improving scroll performance with Baseline Profiles<\/h2>\n<p>\n    To further enhance the user experience, Monzo implemented <a href=\"https:\/\/developer.android.com\/topic\/performance\/baselineprofiles\/overview\">Baseline Profiles<\/a>, specifically targeting scroll and rendering performance on their main feed. This strategy ensured that the most common user journeys\u2014opening the app and scrolling the feed\u2014were fully optimized. The impact on rendering was substantial: P90 scroll performance became 71% faster, and P95 scroll performance improved by 87%. Now scrolling the app is smoother than before.<\/p>\n<p>    Monzo built this into their release process to maintain these improvements over time. &#8220;We trigger the baseline profile generation every week day (before running our nightly builds) and commit the latest changes once completed,&#8221; Neumayer explains.\n  <\/p>\n<h2>Keeping up with modern Android development<\/h2>\n<p>\n    Monzo&#8217;s experience shows what&#8217;s possible when you stay up to date with Android build-tooling recommendations. While legacy apps often struggle with complex reflection usage, Monzo found the transition straightforward by documenting their Keep Rules properly. &#8220;We always add a comment explaining why Keep Rules are in place, so we know when it&#8217;s safe to remove the rules,&#8221; Neumayer notes.<\/p>\n<p>    Neumayer&#8217;s advice for other teams? Regularly check your practices against current standards: &#8220;Take a look at the latest recommendations from Google around app performance and check if you&#8217;re following all the latest advice.&#8221;\n  <\/p>\n<p>To get started and learn more about R8, visit <a href=\"https:\/\/d.android.com\/r8\">https:\/\/d.android.com\/r8<\/a><\/p>\n<\/div>\n<p class=\"inmi-source\">Source: <a href=\"http:\/\/android-developers.googleblog.com\/2026\/03\/monzo-boosts-performance-metrics-by-up-to-35-percent.html\" target=\"_blank\" rel=\"noopener nofollow\">Tech \u2013 Android \u2013 Android Developers Blog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>.post-container {<br \/>\n    font-family: &#8216;Segoe UI&#8217;, Roboto, Helvetica, Arial, sans-serif;<br \/>\n    line-height: 1.6;<br \/>\n    color: #333;<br \/>\n    max-width: 800px;<br \/>\n    margin: auto;<br \/>\n  }<br \/>\n  .highlight-box {<br \/>\n   \u2026<\/p>\n","protected":false},"author":1,"featured_media":15089634,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[281],"tags":[],"class_list":["post-15088962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android"],"featured_image_urls":{"full":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",1234,802,false],"thumbnail":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-300x195.png",300,195,true],"medium":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-620x403.png",620,403,true],"medium_large":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-768x499.png",768,499,true],"large":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-940x611.png",940,611,true],"1536x1536":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",1234,802,false],"2048x2048":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",1234,802,false],"post-thumbnail":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-998x665.png",998,665,true],"ignition_item":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-670x446.png",670,446,true],"ignition_item_lg":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",1234,802,false],"ignition_article_media":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-510x510.png",510,510,true],"ignition_minicart_item":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta-160x160.png",160,160,true],"profile_24":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",24,16,false],"profile_48":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",48,31,false],"profile_96":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",96,62,false],"profile_150":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",150,97,false],"profile_300":["https:\/\/www.inthacity.com\/news\/wp-content\/uploads\/2026\/03\/15088962-aanddm_monzo_meta.png",300,195,false]},"author_info":{"display_name":"news.iNthacity","author_link":"https:\/\/www.inthacity.com\/news\/author\/atombo\/"},"category_info":"<a href=\"https:\/\/www.inthacity.com\/news\/articles\/tech\/android\/\" rel=\"category tag\">Android<\/a>","tag_info":"Android","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/posts\/15088962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/comments?post=15088962"}],"version-history":[{"count":1,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/posts\/15088962\/revisions"}],"predecessor-version":[{"id":15089633,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/posts\/15088962\/revisions\/15089633"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/media\/15089634"}],"wp:attachment":[{"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/media?parent=15088962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/categories?post=15088962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inthacity.com\/news\/wp-json\/wp\/v2\/tags?post=15088962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}