Freetrade for Android - Changelogs, Teardowns & Deep Dives 👨‍💻

2 posts were split to a new topic: ‘This app is no longer compatible with your device’ Play Store message

Out of interest, does Freetrade mind these teardowns? Software and engineering companies that I know of try to prevent reverse engineering, which this seems similar to.

I guess there might be some features that they’ve included in updates, but have not yet activated.

The really good things are normally hidden :grin:


I’m sure if they minded @AchillesFirstStand would have been snatched in the night already with @alex.s ready to interrogate…sorry “question”!

We don’t mind them :slight_smile: Sometimes things that we haven’t announced will show up early, which is a nice bonus for this community to hear about.


Version: 1.0.4370


It’s been a month since my last teardown…! But let’s get back to it :relieved:


<string name="beta_badge_title">Beta</string>

Looks like this is the nice Beta badge we see on the ‘Insights’ tab :eyes:

<string name="discover_sectors_items">%1$s items</string>
<string name="discover_sectors_title">Industries</string>

Looks like we’ll be able to filter the ‘Discover’ tab by industries :eyes:

<string name="freeshare_complete_description">"You've earned a mystery share - we'll reveal it in a few weeks!"</string>

This has changed from We gift free shares on Friday

<string name="freeshare_prod_url"></string>

Wow! :eyes: Free (up to) £80 share if you signup using that link :open_mouth:

<string name="instrument_costs">Costs and Charges</string>
<string name="instrument_costs_link">$s.html</string>

Some extra links to costs / charges :slightly_smiling_face: (Currently a placeholder)

<string name="performance_graph_key">Your investment(s)</string>
<string name="performance_subtitle">Investment performance</string>

A graph?! :chart_with_upwards_trend: I like graphs :joy:

<string name="insights_bonds">Bonds</string>
<string name="insights_cash">Cash</string>
<string name="insights_commodities">Commodities</string>
<string name="insights_empty_subtitle">Once you’ve made your first investment you’ll see tools that’ll help you to make well-informed investing choices.</string>
<string name="insights_empty_title">Insights</string>
<string name="insights_group_industry">Industry</string>
<string name="insights_group_location">Location</string>
<string name="insights_group_type">Type</string>
<string name="insights_in">in</string>
<string name="insights_location_uk">UK</string>
<string name="insights_location_us">US</string>
<string name="insights_stocks">Stocks</string>
<string name="insights_subtitle">Portfolio breakdown</string>
<string name="insights_title">Insights</string>

Here are all of the new ‘Insights’ strings :sunglasses: If you’ve got access, this is everything that it’ll currently show you :+1: It’ll be fun to see this list grow! :smiley:

Doesn’t look like there have been any new assets added since version 1.0.3520 :slight_smile: I’ll be doing these teardowns as the app is updated again, hopefully no more crazy delays :raised_hands:


I was hoping for that but did not see Industries on the screenshots, that’s awesome news! :grin:


I’m bored and I’ve not shared an app teardown in so long :sob:

So I thought I’d jump in and fill the backlog here :joy::joy::joy:

Enjoy the chaos that’s about to ensue! :stuck_out_tongue_winking_eye:

1 Like

Version: 1.0.4378



Likely a bugfix contained in Smali code :innocent:

1 Like

Version: 1.0.4435


<string name="discover_sectors_title">Sectors</string>

Industries changed to Sectors :slight_smile:

<string name="instrument_graph_30days">30D</string>

30 Day graph was added somewhere :grin:

<string name="performance_down_by">Down by %1$s</string>

<string name="performance_in_all_time">since you first invested</string>
<string name="performance_in_last_x_days">in the last %1$s days</string>
<string name="performance_in_last_year">in the last year</string>

<string name="performance_up_by">Up by %1$s</string>

Some extra performance metrics were added! :bar_chart:


Deciding to skip versions without anything interesting…


Version: 1.0.4570


<string name="order_status_unknown">Unknown</string>

Who knows what mysterious state your order could have?! :ghost:

<string name="review_order_failure_bad_request">Your order request was rejected by the system. Please try again.</string>
<string name="review_order_failure_description">There was a problem while placing your order. Your order may or may not have been placed.</string>
<string name="review_order_failure_network_error">There was a problem with your internet connection while placing your order. Your order may or may not have been placed.</string>
<string name="review_order_failure_not_found">There was an error while placing your order. Please try again.</string>
<string name="review_order_failure_server_error">There was an error processing your order request. Your order may or may not have been placed.</string>
<string name="review_order_failure_title">Error placing order</string>
<string name="review_order_failure_too_many_requests">The system is receiving too many requests and rejected your order request. Please try again later.</string>

Lots of additional error messages for various order failure states :warning:

Bunch of smali changes stashed all over the place :eyes:


Version: 1.0.4689


<string name="attestation_integrity_failed">"Your device's integrity cannot be confirmed and it is not safe to run Freetrade on this device.

Device ID: %1$s"</string>
    <string name="attestation_lock_bootloader">"Your device cannot run Freetrade. Please re-lock your bootloader to use Freetrade on this device.

Device ID: %1$s"</string>
<string name="attestation_restore_factory_rom">"Your device cannot run Freetrade. Please restore your device to its factory ROM to use Freetrade on this device.

Device ID: %1$s"</string>

Added Device ID: to all of the error messages on rooted / non-CTS devices :eyes:


Version: 1.0.4880


<string name="discover_recents_title">Recently viewed</string>

(From 1.0.4756) - Recently viewed section of the app :eyes:

<string name="maintenance_message">"We're activating some behind-the-scenes improvements. Check back in a few mins."</string>
<string name="maintenance_title">"We're doing some maintenance"</string>

Holding messages for when work’s going on behind the scenes :blush::hammer_and_wrench:

<string name="profile_early_investor_badge">Early investor</string>
<string name="profile_investor_badge">Investor</string>

Investor & Early Investor badges were added :tada:

Keep your eyes peeled for the next post :wink:


Version: 1.0.4949


<string name="button_cancel">Cancel</string>

I’d like to cancel ALL of my buttons, please :wink:

<string name="investor_icon_introduction">"As a thank you for making Freetrade possible, we've created some alternate app icons for you!"</string>
<string name="investor_icon_option_default_description">Classic Freetrade</string>
<string name="investor_icon_option_default_title">Default</string>
<string name="investor_icon_option_early_investor_description">You invested before it was cool!</string>
<string name="investor_icon_option_early_investor_title">Early Investor</string>
<string name="investor_icon_option_founding_member_description">One of our top investors</string>
<string name="investor_icon_option_founding_member_title">Founding Member</string>
<string name="investor_icon_option_investor_description">You like us so much you invested</string>
<string name="investor_icon_option_investor_title">Investor</string>
<string name="investor_icon_row_short">Customise your app icon</string>
<string name="investor_icon_row_title">Just for fun</string>
<string name="investor_icon_title">Customise your app icon</string>
<string name="investor_rounds_description">"Thanks so much for investing, Freetrade wouldn't be possible without your support!"</string>
<string name="investor_rounds_title">"You're an investor!"</string>
<string name="investor_rounds_title_founding_member">"You're a founding member!"</string>
<string name="investor_row_founding_member">Founding Member</string>
<string name="investor_row_round_1_date">19 Jul, 2016</string>
<string name="investor_row_round_1_title">Round 1 Investor</string>
<string name="investor_row_round_2_date">22 Feb, 2017</string>
<string name="investor_row_round_2_title">Round 2 Investor</string>
<string name="investor_row_round_3_date">16 May, 2018</string>
<string name="investor_row_round_3_title">Round 3 Investor</string>
<string name="investor_row_round_4_date">25 Apr, 2019</string>
<string name="investor_row_round_4_title">Round 4 Investor</string>
<string name="investor_row_round_5_date">25 Jun, 2019</string>
<string name="investor_row_round_5_title">Round 5 Investor</string>

That’s a lot of investing :sunglasses: I magened to sneak in during Round 4 :bell::boxing_glove: Makes me wish I’d checked out Freetrade when some of my friends were joining back in then <50 user days :sweat_smile:

<string name="review_order_stale_price_warning_message">Please note the latest price is from %1$s. Do you want to place the order?</string>
<string name="review_order_stale_price_warning_title">Order confirmation</string>

Pre-order messages :slight_smile:


app_icon_default app_icon_default_round

app_icon_early_investor app_icon_early_investor_round

app_icon_founding_member app_icon_founding_member_round

app_icon_investor app_icon_investor_round

ic_launcher ic_launcher_foreground

All the lovely new icons in their .png goodness :heart_eyes:

1 Like

Version: 1.0.5000 (:tada:)



<string name="">b2a58faf-5b3c-48f6-af63-b85a3232d74f</string>

Big 5000 but not a single (human readable) change in the app :joy: I was hyped for this one but it’s ok, the lovely icons in 4949 make up for it :relieved:

Version: 1.0.5067


<string name="algolia_index_name">E8E43D764286E22EACE343349AC998D8</string>

moved from above to below....

<string name="prod_algolia_index_name">E8E43D764286E22EACE343349AC998D8</string>

Not sure who algolia is :see_no_evil: but they were moved and renamed in this version of the app :eyes:

<string name="portfolio_since_you_began_investing">since you began investing</string>

Nice new view on your portfolio! :slight_smile:

<string name="w8ben_landing_subtitle_freeshare">"You might earn a US stock from Freeshare, so you'll need to complete the W-8BEN form first. This reduces the amount of tax you pay on US stock dividends too."</string> 

Extra (legal?) stuff about free US shares :us:

1 Like

Android apk teardown :scream_cat:

Is this

Very cool :sunglasses: @nexusmaniac


Version: 1.0.5482


<string name="ISA_review_address">Address</string>
<string name="ISA_review_dob">Date of birth</string>
<string name="ISA_review_first_payment">First payment</string>
<string name="ISA_review_help">Something went wrong?<font color="#F7618B"> Let us know </font></string>
<string name="ISA_review_legal_name">Legal name</string>
<string name="ISA_review_nationality">Nationality</string>
<string name="ISA_review_ni_number">NI number</string>
<string name="ISA_review_open_account_button">Open investment ISA</string>
<string name="ISA_review_open_charge_info">All payments for your ISA will be charged on the 1st of each month.</string>
<string name="ISA_review_payment_method">Payment method</string>
<string name="ISA_review_subtitle">Before we open your investment ISA please review the details below.</string>
<string name="ISA_review_title">Review your subscription</string>
<string name="ISA_review_your_details">Your details</string>

Loads of ISA details! :eyes:

<string name="bank_account_instruction_details">We need these to create your unique reference to send and receive money from your Basic account</string>

and receive was added :smiley:

<string name="billing_details_add">+ ADD</string>

<string name="button_clear">Clear</string>

<string name="button_pay">Pay</string>

I thought I asked to cancel ALL the buttons earlier? :smirk:

<string name="card_details_button">Add card</string>
<string name="card_details_dialog_message">%1$s</string>
<string name="card_details_expiry_date">Expiry date</string>
<string name="card_details_failure_title">Unable to add card</string>
<string name="card_details_security_code">Security code</string>
<string name="card_icon_resource">card_icon*</string>

Card details & associated failure states :slight_smile:

<string name="edit_billing_details">Edit</string>

Edit those billing details :raised_hands: (wasn’t this handled via chat before?! :grin:)

<string name="error_address_one">Value must be longer then 3 characters</string>
<string name="error_address_tow">Value must be longer then 3 characters</string>
<string name="error_card_number">The card number is invalid</string>
<string name="error_city">Value must be longer then 2 characters</string>
<string name="error_country">Please select a country/region</string>
<string name="error_cvv">Enter a valid Cvv</string>
<string name="error_expiration_date">Enter a valid date</string>
<string name="error_name">Value must be longer then 3 characters</string>
<string name="error_phone">Value must be longer then 3 characters</string>
<string name="error_postcode">Value must be longer then 3 characters</string>
<string name="error_state">Value must be longer then 3 characters</string>

This is one hefty update!! More error messages :slight_smile:

<string name="instrument_at">at</string>

This string has been instrumental in my teardown this evening :wink:

<string name="instrument_last_30d">in the last 30 days</string>
<string name="instrument_last_7d">in the last 7 days</string>
<string name="instrument_last_year">in the last year</string>

<string name="instrument_since_x">since %1$s</string>

More breakdowns on various time-periods :slight_smile: not sure where this maps to inside the app though :see_no_evil: looks like a custom period is possible, though!

<string name="label_accepted_cards">Accepted Cards</string>
<string name="label_billing_details">Billing Details</string>
<string name="label_expiration_date">Expiration date*</string>

Types of card accepted & some extra info :ok_hand:

<string name="marketing_consent_description">"We'll send you product updates and the occasional marketing email."</string>
<string name="marketing_consent_error_content">Something went wrong when trying to subscribe you, please try again.</string>
<string name="marketing_consent_error_title">Whoops!</string>
<string name="marketing_consent_skip">No thanks</string>
<string name="marketing_consent_subscribe">Yes, sign me up</string>
<string name="marketing_consent_title">Mind if we mail you?</string>

Nice marketing consent / opt-in :sunglasses::email:

<string name="placeholder_address_one">Address line 1*</string>
<string name="placeholder_address_two">Address line 2</string>
<string name="placeholder_card_number">Card number*</string>
<string name="placeholder_city">Postal Town*</string>
<string name="placeholder_country">SELECT COUNTRY/REGION</string>
<string name="placeholder_cvv">Cvv*</string>
<string name="placeholder_name">"Cardholder's name*"</string>
<string name="placeholder_phone">Phone*</string>
<string name="placeholder_postcode">Postcode*</string>
<string name="placeholder_state">State</string>

Placeholders for all of those details that we can now drop into the app :grin:

<string name="select_billing_details">SELECT</string>
<string name="title_billing_details">Billing Details</string>
<string name="title_card_details">Card Details</string>

More billing related bits & bobs :credit_card:


ic_launcher_round ic_launcher_background

Look at the pretty droid :heart_eyes::robot:

amex dinersclub jcb maestro mastercard unionpay visa discover

Sweet card logos :tada: I think I managed to fit them all onto a single line too! :stuck_out_tongue_winking_eye:

Oh no :joy: You interrupted the perfect flow I had going on :wink:

Haha! Not quite but taking that as a sweet compliment :innocent: Love the teardowns they do over at :grin: