Monzo for Android - Teardowns & Deep Dives šŸ‘Øā€šŸ’»

I’m throwing this in here just in case someone finds this sort of thing interesting.

A story on Monzo reducing their code by over 9,000 lines by using CameraX, helping massively reduce sign-up drop-out rates. This was included in the last email from Android’s developers mailing list.

https://developer.android.com/stories/apps/monzo-camerax

5 Likes

New beta :boom:

One visible change: connected credit cards now display your name and the last four digits of the card on the card carousel in the same way the Monzo account does!

6 Likes

A non-visible change: :eyes:

string name=ā€˜developer_options_pref_key_dark_mode’>key_dark_mode

18 Likes

Don’t get my hopes up :grinning:

5 Likes

It’s real. I’ll post the teardown in a few…

9 Likes

Version 3.35.0 - Well, well, well… :eyes:

Reference to Dark mode, external accounts, Monzo shares, International Bank transfers, other exciting things…

New Strings;

<string name="address_delivery_outside_uk_short">Not in the UK?</string>

<string name="address_load_country_options_error">Couldn’t load country options</string>
<string name="address_load_country_options_error_action">Try again</string>

<string name="business_tax_residency_update_unsupported_company_type">This functionality is not supported for your company type.</string>

<string name="card_replacement_country_delivery_unavailable">Delivery unavailable</string>

<string name="developer_options_pref_key_dark_mode">key_dark_mode</string>

<string name="extacc_transactions_blocking_error_action">Retry</string>
<string name="extacc_transactions_blocking_error_description">Please try again later.</string>
<string name="extacc_transactions_blocking_error_title">Failed to load transactions</string>
<string name="extacc_transactions_empty_state_action">Refresh</string>
<string name="extacc_transactions_empty_state_description">Make a payment from this account to see when, where, and how much you spent. Just like with Monzo.</string>
<string name="extacc_transactions_empty_state_title">No transactions to show here yet</string>
<string name="extacc_transactions_end_of_list_description">We only show the last %s days in Monzo</string>
<string name="extacc_transactions_end_of_list_title">You’ve reached the end</string>

<string name="external_account_providers_error_description">Couldn’t load banks. Please try again later.</string>
<string name="external_account_providers_unavailable_description">%s isn’t available. This could be because of some maintenance they’re doing. Please try again later.</string>
<string name="external_account_providers_unsupported_description">This bank is not currently supported.</string>

<string name="home_card_last_updated">Refreshed %1$s</string>

<string name="interest_statements_annual_header">Annual statements</string>

<string name="limits_title">Limits</string>

<string name="order_card_delivery_card_cost_header">Card cost</string>
<string name="order_card_delivery_card_cost_item">Monzo card</string>
<string name="order_card_delivery_card_delivery_item">Card delivery</string>
<string name="order_card_delivery_card_details_header">Card details</string>
<string name="order_card_delivery_delivery_address_item">Delivery address</string>
<string name="order_card_delivery_enter_postcode_helper_text">This doesn’t have to be your usual home address</string>
<string name="order_card_delivery_enter_postcode_title">What’s your delivery postcode?</string>

<string name="order_card_delivery_primary_button">Confirm and order</string>
<string name="order_card_delivery_selected_name_item">Preferred name on card</string>
<string name="order_card_delivery_selected_name_value">%s will be on your card</string>
<string name="order_card_delivery_signup_title">Confirm card details</string>

<string name="order_card_delivery_total_cost_item">Total cost</string>

<string name="overdraft_information_button_text">Next</string>
<string name="overdraft_information_title">Overdraft Information</string>

<string name="plans_limitations_buttons_agreement_hint">&lt;b>By continuing, you confirm this insurance is right for you, and you agree to the terms and conditions&lt;/b></string>
<string name="plans_limitations_buttons_scroll_hint">&lt;b>Scroll to the bottom to continue&lt;/b></string>

<string name="transaction_crowdfunding_info">Crowdcube will issue your statement of beneficial ownership and contact you by email 7Ć¢ā‚¬ā€œ14 days after the Crowdfunding ends. ’Statement of Beneficial Ownership’ is the technical name for the document that proves you’ve got the shares you bought.</string>
<string name="transaction_crowdfunding_section_title">Your investment</string>
<string name="transaction_crowdfunding_shares_label">Monzo shares</string>

<string name="transaction_fps_sent_you">%s&lt;br/>&lt;font color=#707B8C>sent you&lt;/font></string>
<string name="transaction_fps_you_sent">&lt;font color=#707B8C>you sent&lt;/font>&lt;br/>%s</string>

<string name="transaction_international_bank_transfer_estimated_delivery">Estimated Delivery</string>
<string name="transaction_international_bank_transfer_exchange_rate">Exchange Rate</string>
<string name="transaction_international_bank_transfer_provider">Provider</string>
<string name="transaction_international_bank_transfer_provider_transferwise">TransferWise</string>
<string name="transaction_international_bank_transfer_reference">Reference</string>
<string name="transaction_international_bank_transfer_section_details">Details</string>
<string name="transaction_international_bank_transfer_status">Status</string>
<string name="transaction_international_bank_transfer_status_bounced_back">Bounced back</string>
<string name="transaction_international_bank_transfer_status_cancelled">Cancelled</string>
<string name="transaction_international_bank_transfer_status_charged_back">Charged back</string>
<string name="transaction_international_bank_transfer_status_converting">Converting</string>
<string name="transaction_international_bank_transfer_status_funds_refunded">Refunded</string>
<string name="transaction_international_bank_transfer_status_processing">Processing</string>
<string name="transaction_international_bank_transfer_status_refund_processing">Cancelled, refunding</string>
<string name="transaction_international_bank_transfer_status_sent">Sent</string>
<string name="transaction_international_bank_transfer_status_unknown">Unknown</string>
<string name="transaction_international_bank_transfer_status_waiting">Waiting</string>
<string name="transaction_international_bank_transfer_status_waiting_for_recipient">Waiting for recipient</string>

Removed Strings;

<string name="account_external_card_balance_last_updated">Last updated %1$s</string>

<string name="balance_now">Balance now</string>

<string name="card_management_header_controls">Controls</string>
<string name="card_management_header_limits">Limits</string>

<string name="card_management_header_need_new_card">Need a new card?</string>

<string name="feed_empty_state_action">Add money to get started</string>

<string name="feed_empty_state_hotchip_text">Once you add money to your account, this is where you’ll see your balance and payments in real time.</string>
<string name="feed_empty_state_hotchip_title">Welcome to Monzo</string>
<string name="feed_empty_state_question_text">Once you add money to your account, you’ll see your balance and payments in real time.</string>
<string name="feed_empty_state_question_title">What will your first payment be?</string>

<string name="overdraft_change_limit_affordability_submit">Next</string>

<string name="plans_limitations_scroll_button_hint">By continuing, you confirm this insurance is right for you, and you agree to the terms and conditions</string>
<string name="plans_limitations_scroll_hint">Scroll to the bottom to continue</string>

<string name="settings_limits_title">Limits</string>

<string name="settings_tax_residency_title">Tax residency</string>

<string name="settings_tax_residency_update_title">Tax residency</string>

<string name="spent">Spent</string>

New ID’s;

<item type="id" name="accountHeaderDescription" />

<item type="id" name="allowanceProgressBar" />

<item type="id" name="amountChangeLeftItemDetails" />
<item type="id" name="amountChangeValue" />

<item type="id" name="amountItemLeftItemDetails" />

<item type="id" name="amountRowSubtitle" />
<item type="id" name="amountRowValue" />

<item type="id" name="amountValue" />

<item type="id" name="automaticExportHintWithIcon" />

<item type="id" name="budgetAssessmentItemMultiSelectCheckbox" />
<item type="id" name="budgetAssessmentItemMultiSelectTitle" />

<item type="id" name="buttonsFooter" />
<item type="id" name="buttonsFooterButtonsContainer" />
<item type="id" name="buttonsFooterHeaderContainer" />
<item type="id" name="buttonsFooterView" />

<item type="id" name="cardOrderRecyclerView" />

<item type="id" name="designButtonsFooterCircleIndicator" />
<item type="id" name="designButtonsFooterCircleIndicator3" />
<item type="id" name="designButtonsFooterHint" />
<item type="id" name="designButtonsFooterHintWithIcon" />

<item type="id" name="design_buttons_footer_header_layout" />

<item type="id" name="endOfListDescription" />
<item type="id" name="endOfListTitle" />

<item type="id" name="enterAddressChangeCountryBarrier" />

<item type="id" name="enterAddressCountryLoadingView" />

<item type="id" name="itemLeftItemDetails" />

<item type="id" name="menuEnterPostcodeNotInUK" />

<item type="id" name="profileDetailsLoadingErrorView" />

<item type="id" name="rowValue" />

Removed ID’s;

<item type="id" name="atmHeader" />

<item type="id" name="balanceAmount" />

<item type="id" name="balanceLabel" />

<item type="id" name="balanceView" />

<item type="id" name="bannerButton" />
<item type="id" name="bannerContainer" />
<item type="id" name="bannerDismissButton" />
<item type="id" name="bannerSubtitle" />
<item type="id" name="bannerTitle" />

<item type="id" name="companyIdentifierBodyTextView" />
<item type="id" name="companyIdentifierEditText" />
<item type="id" name="companyIdentifierInputLayout" />
<item type="id" name="companyIdentifierTitleTextView" />
<item type="id" name="companyIdentifierToolbar" />

<item type="id" name="controlsHeader" />

<item type="id" name="dontKnowPersonallyButton" />

<item type="id" name="endViewsBarrier" />

<item type="id" name="enterPostCodeChangeCountryButton" />

<item type="id" name="feedBanner" />

<item type="id" name="feedEmptyStateHotchipButton" />
<item type="id" name="feedEmptyStateHotchipLayout" />

<item type="id" name="feedEmptyStateQuestionButton" />
<item type="id" name="feedEmptyStateQuestionLayout" />

<item type="id" name="feedProgress" />

<item type="id" name="feedSwipeToRefreshLayout" />

<item type="id" name="fingerprintAuthLoadingView" />
<item type="id" name="fingerprintAuthPinEntry" />

<item type="id" name="idvDocumentIntroSecurityInfo" />

<item type="id" name="idvVideoIntroPrimaryButton" />

<item type="id" name="idvVideoIntroSecondaryButton" />
<item type="id" name="idvVideoIntroSecurityInfo" />

<item type="id" name="infoButtonStackHeader" />

<item type="id" name="itemContentRow" />

<item type="id" name="limitationsButtonStackContainer" />

<item type="id" name="loanUspPadlock" />

<item type="id" name="menuLearnMore" />

<item type="id" name="needNewCardGroup" />
<item type="id" name="needNewCardHeader" />

<item type="id" name="noCompanyIdentifierButton" />

<item type="id" name="noTinButton" />

<item type="id" name="notListedButton" />

<item type="id" name="searchFab" />

<item type="id" name="selectProviderBlockingErrorView" />
<item type="id" name="selectProviderLoadingView" />

<item type="id" name="spendTodayBalanceView" />

<item type="id" name="spentTodayAmount" />
<item type="id" name="spentTodayLabel" />

<item type="id" name="tabDetailsOwedTextView" />

<item type="id" name="tabDetailsPrimaryActionButton" />

<item type="id" name="taxDeclarationFragmentContainer" />

<item type="id" name="taxNumberView" />

<item type="id" name="taxResidencyElsewhereButton" />
<item type="id" name="taxResidencyErrorView" />
<item type="id" name="taxResidencyFragmentContainer" />
<item type="id" name="taxResidencyImage" />
<item type="id" name="taxResidencyJustUkButton" />
<item type="id" name="taxResidencyNonUsCitizenButton" />
<item type="id" name="taxResidencyProgress" />
<item type="id" name="taxResidencyTitle" />

<item type="id" name="taxResidencyUsCitizenButton" />

New Assets;

None!

Changed Assets;

.\ic_product_information
ic_product_information

.\ic_timeline_calendar.png
ic_timeline_calendar

Removed Assets;

.\category_row.webp

14 Likes

I wonder what card cost could be referencing?

  • Are they trying to highlight to people how much cards cost to be replaced so that they think twice?
  • Could it be for replacing a metal Plus card?
  • Should there be a fee for replacement cards metal or not?

Card delivery sounds interesting too:

  • A cost for delivery?
  • Options of how quickly you need your card to cut costs?
  • A fee for delivery just for a replacement metal Plus card?
  • No fees, just different timeframes for different types of card?
5 Likes

I thought there was cost for replacing cards if you’re abroad? Maybe it’s making that clear?

1 Like

Maybe the plus cards

Very exciting :grimacing::grimacing::grimacing:

1 Like

That very much looks like there will be some crowdfunding going on. Time to set up a pot :money_mouth_face:

And done. Let the savings begin :grin:

12 Likes

Ability to see your investment in the app would be really good too.

1 Like

…this is intriguing…

1 Like

Split categories me thinks

I haven’t been getting my hopes up for this new feature in the works in case it wasn’t that exciting but I could totally see split categories seeming very simple to the user but be very complex in the backend :eyes:

2 Likes

Ooo, lots of things happening. :tada:

3 Likes

Crowdfunding AND dark mode!? Is it Christmas?

2 Likes

No but it will be when they go live :rofl:

10 Likes

I’m really excited about the budgeting stuff. I’d love to hear what Monzo’s general direction for it will be. It would be nice to have some basic insights/overview with data visualizations and then the option for some structured, YNAB-like solution.

Dark mode’s cool. :man_shrugging:

Crowdfunding is pretty exciting - I’d imagine they’ll surpass the crowdfunding records again, even with the whole pandemic thing.

External accounts will need to at least show transactions for me to care. I’d love a ā€˜Master Feed’ too.

International transfers will please a few people I guess.

The card delivery cost I thought was already a thing. Would be cool if it tracked the delivery progress in-app.

8 Likes

I’ve only just invested my very last bar of gold-plated latinum in Freetrade, so I’m not happy if there’s going to be another Monzo fundraise.

2 Likes