SlideShare a Scribd company logo
MIND YOUR APP FOOTPRINT! 🐾⚡🌱
How to Reduce your Mobile App Footprint
#FlutterHeroes24
Alexandre POICHET
Software Engineer Alexis CHOUPAULT
Software Engineer
François NOLLEN
Staff Engineer
Dev Rel
🧠 YOUR 📱 👣 !
• Why
• Product & design
• Developer techniques
•
🔎
Basics
•
🔎
Bundles
•
🔎
On-demand
•
🔎
DIY
• Testing & Monitoring
• Conclusion
WHY
4
Digital technologies cause
2.5% Carbon footprint
4% GHG emissions
(sources: ADEME/ARCEP 2023
+ The Shift Project 2019)
5
Source : ADEME / ARCEP
(March 2023)
6
Source : ADEME / ARCEP
(March 2023)
7
Source : ADEME / ARCEP
(March 2023)
PRODUCT & DESIGN
8
Building the right thing 🌱
DOING THE RIGHT THING?
9
Finding a GOOD DEAL…
• More engaged with final users
• More compliant with environment
ENVIRONMENT
• Efficient Design
• Accessibility
FEATURES
• Useful Features
QUALITY
• Good product value
• Small bugs
Where is the Green 🌱 part?
10
EX. WE SPOT TURTLES! 🌊🐢🌏
#WeArePlay
We Spot Turtles! | Australia
(Nicolas Guillot &
Caitlin McKeown)
11
♻ Retro-compatibility is crucial!
🐾 …yet it has a cost / footprint (tests, payloads, envs…)
👀 Monitor your app & user behaviours
🧹 Clean-up payloads when possible
🗑 Drop unused versions
EX. BACKWARD COMPATIBILITY
Version N-1
0,00% users
Version N
x,xx% users
👇
12
♻ Unused features
📵 Deprecated versions
🎛 Complexity
🐾 Footprint
FUNCTIONAL DEBT / WASTE
« Less…
…is more »
🛟 Accessibility
❤ User experience
💸 Product & business value
MOBILE DEVELOPMENT
Doing the thing right ♻
13
14
⚡ CPU usage / FPS
🪫 Consuming hardware
(camera, sensors, gps)
📡 Network (caches, offline mode)
🗜 Size (payloads, assets, storage)
💡 Most of those techniques are
very well-documented
BASICS
♻
🔋
💚
🌱
15
• Display technologies : LCD vs. AMOLED
• « Dark » mode or « black » mode?
DARK MODES
Our app results LCD AMOLED
Light theme 3,9 g CO2 3,9 g CO2
Dark blue theme 3,9 g CO2 3.0 g CO2 (-23%)
TLDR; « Not everything is Black & White » 😉
(Source: )
16
A good thread strategy on a
multi-core CPU:
• Saves battery 🔋
• Optimizes UX 💚
💡 Threads can be optimized to run on a
separate core if available, a small or big
core when it’s an heavy task.
THREADS MATTER
17
• Upgrading libs and
frameworks ASAP
• Leveraging new features
and improvements
…Including
⚡
and
🗜
!
STAYING UP-TO-DATE
EXAMPLE 👉 IMPELLER
18
Before ⏳
(Skia only)
After ⚡ (Impeller)
(Emmanuel Lefebvre)
@ Flutter Paris, Jan’23
19
REPAINT BOUNDARIES
• Separate widgets to subtrees at rendering level,
helps Flutter renderer know when repaint is needed
• Can optimize screens with many interactions
MOVING LOGIC TO THE BACK-END
20
• Pattern: presentation logic moved serverside
• Presentation model / mapping
• Formatting, Localization
• Etc.
ü Consistency over multiple channels 🔐
ü Less code, fast redeploy, better TTM 🚀
ü Smaller frontend app(s) & less crashes 🌱
BFF server
(Back-For-Front)
Other channels
(eg. chatbots)
Mobile
Web
RESULTS: PAYLOAD AND MORE
21
Data exchanged on
the network (ko)
[Ranking] Total payload on the network during navigation (source: )
EXAMPLE: TRACKING & CONSENTS
22
S2S
tracking
vendors
BFF server
(Back-For-Front)
Other channels
(eg. chatbots)
Mobile
Web
• Server-to-server
tracking & consents
(☝GDPR)
• Custom frontend
instrumentation
(RouteObserver,
EventListener)
• Most logic, data
and impacts
moved to the back-end
Removing 90% of
3rd-party SDKs from
the frontend:
• Less CPU, less
storage, smaller
footprint ⚡🗜🌱
• Less integration
issues or crashes 💣
• Better UX 🙂
23
📦 App Bundles
🌴 Tree Shaking
OPTIMIZING BUNDLES
« App size is one of the biggest factors […]. It’s
important to regularly monitor and understand
how you can reduce your app’s download and
install sizes. »
Google Play Console Documentation
ANDROID APP BUNDLES
24
• Android App Bundles
• Optimized bundles
for different devices
• In our case (average):
📉 -48% weight
OPTIMIZED BUNDLES FOR IOS
25
🗜 App Thinning
🗑 Unused Code and Resources
♻ Swift Language Features
Available techniques 👉 refer to documentation
26
TREE SHAKING 🌴
Removes unused:
• Functions
• Fields
• Types
• Type params
• Type args
• Metadata
• Lib entries
• Classes
• Libs
TREE SHAKING IN PRACTICE
27
Use const at compile time (or conditional imports for Web)
1
VS.
2
Let’s Shake the Flutter Tree
(Aleksander Denisov) @ Flutter Heroes ’23
28
• ⚠ Workspace: incorrect Android or Gradle files locations and non-necessary files get included into the bundle
• ⏳ Assets: not tree-shaked by default #64106
• ⏳ Conditional Imports: available only for the Web #23122
29
DEFERRED COMPONENTS
💤 Lazy loading at runtime
📲 On-demand features
🗜 Save phone storage
🐾 Reduce memory footprint
(based on Android Dynamic Features )
💡 Lazy loading gracely replaced by eager
loading on platforms, not compatible (eg. iOS)
EXAMPLE
30
💡 Defer the IDFM support in app?
Public transportation for Paris only
(ie. buy dematerialized metro tickets
+ use your phone as a ticket )
31
(Warning: a single missing import leads to no deferred lib)
1
2
DEFERRED COMPONENTS IN PRACTICE
32
pubspec.yaml
3
<meta-data
android:name="flu1erEmbedding"
android:value="2"/>
<meta-data
android:name="io.flu1er.embedding.engine.deferredcomponents.DeferredCom
ponentManager.loadingUnitMapping" android:value="2:idfm_sdk"/>
android:name="io.flu1er.embedding.android.Flu1erPlaySto
reSplitApplicaKon" Flu1erPlayStoreSplitApplicaKon()
or
4 5
DEFERRED COMPONENTS IN PRACTICE
33
DEFERRED COMPONENTS IN PRACTICE
34
♻ Saving-energy mode?
🪫 Low battery detected?
🦕 Old device / low-end
device detected?
💡 DIY: adjust your app
footprint on-the-fly!
CUSTOM ECO-MODE
35
🧑💻 UI thread &📱 Platform thread:
• More cache / longer TTL
• Disable secondary SDKs
• Avoid / Reduce precision
on geolocation
WHAT TO DISABLE / ADJUST
⚡ Raster thread:
• Disable transition animations
• Disable blend effects, opacity
• Disable clips, shadows
EXAMPLE
36
🤔 Disabling things from our onboarding wizard…
On a low-end device (2018):
- UI/accuracy slightly degraded
ü FPS: +60 fps
ü CPU usage (average): 79% à 36%
👉 All about choices and balance
💚 No hardcore dev skills required
FLUTTER_ECO_MODE PLUGIN
37
38
Concevoir des paramètres
écologiques dans les
applications 🇫🇷
@ Mobilis In Mobile 2023
(Thomas Thibault)
DESIGNING « ECO-FRIENDLY » USER PARAMS & OPTIONS
TESTING & MONITORING ♻
39
RUNTIME ANALYSIS (EX. GREENSPECTOR)
85
Performance
(Elapsed Time)
117.5 s
Mobile Data
1.1 Mo
90
Energy
112.8 mAh
50
40
(Source: Greenspector 2022)
41
STATIC ANALYSIS (EX. ECOCODE)
« Flutter Community,
We need to build
Flutter/Dart Eco Rules! »
https://ecocode.io
FLASHLIGHT « LIGHTHOUSE FOR MOBILE »
42
• Includes retries and iterations
• Combines nicely with your e2e tests
• Easy to compare runs
• Video recording
• Android only
https://docs.flashlight.dev/
43
INTEGRATION TESTS (WITH CHROME TRACING / PERFETTO)
GOLDEN TESTS
44
How does your
App render on
a small screen?
✅
CONCLUSION
45
46
Many ways to reduce your app footprint,
optimize and reduce the waste ♻
Test and monitor your app performance
over time, many tools are available 🔍
Solutions we all know, others few of us know.
Learn, use, share your techniques 🌱
RESOURCES WE’VE SHARED (🇫🇷 / 🇬🇧)
47
E2E Testing with Flutter
Widget Testing with Flutter
Accessibility Testing with Flutter
Flutter @ Devoxx France
Flutter Heroes 2023
Flutter Connection 2023
https://jobs.connect-tech.sncf/

More Related Content

PDF
Mind your App Footprint 🐾⚡️🌱 (@FlutterConn 2023)
PDF
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
PDF
Big data & frameworks: no book for you anymore
PDF
Big data & frameworks: no book for you anymore.
PPTX
Dublin Unity User Group Meetup Sept 2015
PDF
Meetup 2020 - Back to the Basics part 101 : IaC
PDF
H2O at Berlin R Meetup
PDF
Berlin R Meetup
Mind your App Footprint 🐾⚡️🌱 (@FlutterConn 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
Big data & frameworks: no book for you anymore
Big data & frameworks: no book for you anymore.
Dublin Unity User Group Meetup Sept 2015
Meetup 2020 - Back to the Basics part 101 : IaC
H2O at Berlin R Meetup
Berlin R Meetup

Similar to Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024) (20)

PPTX
Engage 2018 - What About the Apps? A Domino Modernisation Story
PPTX
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
PDF
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
 
PPTX
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
PDF
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
PDF
The road to green code
PDF
DevOps & SRE at Google Scale
PDF
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
PDF
Efficient platform engineering with Microk8s & gopaddle.pdf
PDF
Cloud-Native & Sustainability: How and Why to Build Sustainable Workloads
PDF
Android Overview
PPTX
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
PDF
Deep Dive into the Idea of Software Architecture
PPTX
Docker Enterprise Workshop - Intro
PDF
Introducción a Docker - LibreCon 2016
PDF
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
PPTX
EarthEngine_Introduccionn a aa_JB2022.pptx
PPTX
Clean low-code - OutSystens
PDF
Tools and best practices for sustainable software
PDF
Tools and best practices for sustainable software.pdf
Engage 2018 - What About the Apps? A Domino Modernisation Story
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
 
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
The road to green code
DevOps & SRE at Google Scale
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Efficient platform engineering with Microk8s & gopaddle.pdf
Cloud-Native & Sustainability: How and Why to Build Sustainable Workloads
Android Overview
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Deep Dive into the Idea of Software Architecture
Docker Enterprise Workshop - Intro
Introducción a Docker - LibreCon 2016
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
EarthEngine_Introduccionn a aa_JB2022.pptx
Clean low-code - OutSystens
Tools and best practices for sustainable software
Tools and best practices for sustainable software.pdf
Ad

More from François (17)

PDF
A la recherche du RAG perdu 🤠🧭🤖 (@DevoxxFR 2025)
PDF
B.O.F. communauté InnerSource (@DevoxxFR 2025)
PDF
A Journey to Continuous Delivery with Flutter ⚡️🚀🙂 (@Flutter_Connect 2025)
PDF
A Journey to Continuous Delivery with Flutter ⚡️🚀🙂 (@FlutterHeroes 2025)
PDF
TOSIT.fr grandes organisations & open source (@OSXP_Paris 2024)
PDF
RAG against the Machine 😎🤖 (@DevFestNantes 2024)
PDF
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
PDF
Monorepo & Monomythe (@Volcamp 2023)
PDF
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
PDF
REX Flutter SNCF Connect (@VivaTech 2022).pdf
PDF
OpenSource & InnerSource pour accélérer les développements
PDF
Dans le Monorepo vous n'êtes jamais seul, le Park est ouvert... 🦖🦕🐢 (@BreizhC...
PDF
Tock & Mélusine REX IA Open Source #AIParis 2020
PDF
Conversational AI & Open Source #OSSPARIS19
PPTX
TOCK (The Open Conversation Kit) @ Meetup Open Transport
PDF
Monitoring une recette DevOps
PDF
DevOps et tendances Monitoring
A la recherche du RAG perdu 🤠🧭🤖 (@DevoxxFR 2025)
B.O.F. communauté InnerSource (@DevoxxFR 2025)
A Journey to Continuous Delivery with Flutter ⚡️🚀🙂 (@Flutter_Connect 2025)
A Journey to Continuous Delivery with Flutter ⚡️🚀🙂 (@FlutterHeroes 2025)
TOSIT.fr grandes organisations & open source (@OSXP_Paris 2024)
RAG against the Machine 😎🤖 (@DevFestNantes 2024)
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
Monorepo & Monomythe (@Volcamp 2023)
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
REX Flutter SNCF Connect (@VivaTech 2022).pdf
OpenSource & InnerSource pour accélérer les développements
Dans le Monorepo vous n'êtes jamais seul, le Park est ouvert... 🦖🦕🐢 (@BreizhC...
Tock & Mélusine REX IA Open Source #AIParis 2020
Conversational AI & Open Source #OSSPARIS19
TOCK (The Open Conversation Kit) @ Meetup Open Transport
Monitoring une recette DevOps
DevOps et tendances Monitoring
Ad

Recently uploaded (20)

PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Machine learning based COVID-19 study performance prediction
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPT
Teaching material agriculture food technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
MYSQL Presentation for SQL database connectivity
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Understanding_Digital_Forensics_Presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
Machine learning based COVID-19 study performance prediction
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Teaching material agriculture food technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
20250228 LYD VKU AI Blended-Learning.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)

  • 1. MIND YOUR APP FOOTPRINT! 🐾⚡🌱 How to Reduce your Mobile App Footprint #FlutterHeroes24
  • 2. Alexandre POICHET Software Engineer Alexis CHOUPAULT Software Engineer François NOLLEN Staff Engineer Dev Rel
  • 3. 🧠 YOUR 📱 👣 ! • Why • Product & design • Developer techniques • 🔎 Basics • 🔎 Bundles • 🔎 On-demand • 🔎 DIY • Testing & Monitoring • Conclusion
  • 4. WHY 4 Digital technologies cause 2.5% Carbon footprint 4% GHG emissions (sources: ADEME/ARCEP 2023 + The Shift Project 2019)
  • 5. 5 Source : ADEME / ARCEP (March 2023)
  • 6. 6 Source : ADEME / ARCEP (March 2023)
  • 7. 7 Source : ADEME / ARCEP (March 2023)
  • 8. PRODUCT & DESIGN 8 Building the right thing 🌱
  • 9. DOING THE RIGHT THING? 9 Finding a GOOD DEAL… • More engaged with final users • More compliant with environment ENVIRONMENT • Efficient Design • Accessibility FEATURES • Useful Features QUALITY • Good product value • Small bugs Where is the Green 🌱 part?
  • 10. 10 EX. WE SPOT TURTLES! 🌊🐢🌏 #WeArePlay We Spot Turtles! | Australia (Nicolas Guillot & Caitlin McKeown)
  • 11. 11 ♻ Retro-compatibility is crucial! 🐾 …yet it has a cost / footprint (tests, payloads, envs…) 👀 Monitor your app & user behaviours 🧹 Clean-up payloads when possible 🗑 Drop unused versions EX. BACKWARD COMPATIBILITY Version N-1 0,00% users Version N x,xx% users 👇
  • 12. 12 ♻ Unused features 📵 Deprecated versions 🎛 Complexity 🐾 Footprint FUNCTIONAL DEBT / WASTE « Less… …is more » 🛟 Accessibility ❤ User experience 💸 Product & business value
  • 13. MOBILE DEVELOPMENT Doing the thing right ♻ 13
  • 14. 14 ⚡ CPU usage / FPS 🪫 Consuming hardware (camera, sensors, gps) 📡 Network (caches, offline mode) 🗜 Size (payloads, assets, storage) 💡 Most of those techniques are very well-documented BASICS ♻ 🔋 💚 🌱
  • 15. 15 • Display technologies : LCD vs. AMOLED • « Dark » mode or « black » mode? DARK MODES Our app results LCD AMOLED Light theme 3,9 g CO2 3,9 g CO2 Dark blue theme 3,9 g CO2 3.0 g CO2 (-23%) TLDR; « Not everything is Black & White » 😉 (Source: )
  • 16. 16 A good thread strategy on a multi-core CPU: • Saves battery 🔋 • Optimizes UX 💚 💡 Threads can be optimized to run on a separate core if available, a small or big core when it’s an heavy task. THREADS MATTER
  • 17. 17 • Upgrading libs and frameworks ASAP • Leveraging new features and improvements …Including ⚡ and 🗜 ! STAYING UP-TO-DATE
  • 18. EXAMPLE 👉 IMPELLER 18 Before ⏳ (Skia only) After ⚡ (Impeller) (Emmanuel Lefebvre) @ Flutter Paris, Jan’23
  • 19. 19 REPAINT BOUNDARIES • Separate widgets to subtrees at rendering level, helps Flutter renderer know when repaint is needed • Can optimize screens with many interactions
  • 20. MOVING LOGIC TO THE BACK-END 20 • Pattern: presentation logic moved serverside • Presentation model / mapping • Formatting, Localization • Etc. ü Consistency over multiple channels 🔐 ü Less code, fast redeploy, better TTM 🚀 ü Smaller frontend app(s) & less crashes 🌱 BFF server (Back-For-Front) Other channels (eg. chatbots) Mobile Web
  • 21. RESULTS: PAYLOAD AND MORE 21 Data exchanged on the network (ko) [Ranking] Total payload on the network during navigation (source: )
  • 22. EXAMPLE: TRACKING & CONSENTS 22 S2S tracking vendors BFF server (Back-For-Front) Other channels (eg. chatbots) Mobile Web • Server-to-server tracking & consents (☝GDPR) • Custom frontend instrumentation (RouteObserver, EventListener) • Most logic, data and impacts moved to the back-end Removing 90% of 3rd-party SDKs from the frontend: • Less CPU, less storage, smaller footprint ⚡🗜🌱 • Less integration issues or crashes 💣 • Better UX 🙂
  • 23. 23 📦 App Bundles 🌴 Tree Shaking OPTIMIZING BUNDLES « App size is one of the biggest factors […]. It’s important to regularly monitor and understand how you can reduce your app’s download and install sizes. » Google Play Console Documentation
  • 24. ANDROID APP BUNDLES 24 • Android App Bundles • Optimized bundles for different devices • In our case (average): 📉 -48% weight
  • 25. OPTIMIZED BUNDLES FOR IOS 25 🗜 App Thinning 🗑 Unused Code and Resources ♻ Swift Language Features Available techniques 👉 refer to documentation
  • 26. 26 TREE SHAKING 🌴 Removes unused: • Functions • Fields • Types • Type params • Type args • Metadata • Lib entries • Classes • Libs
  • 27. TREE SHAKING IN PRACTICE 27 Use const at compile time (or conditional imports for Web) 1 VS. 2 Let’s Shake the Flutter Tree (Aleksander Denisov) @ Flutter Heroes ’23
  • 28. 28 • ⚠ Workspace: incorrect Android or Gradle files locations and non-necessary files get included into the bundle • ⏳ Assets: not tree-shaked by default #64106 • ⏳ Conditional Imports: available only for the Web #23122
  • 29. 29 DEFERRED COMPONENTS 💤 Lazy loading at runtime 📲 On-demand features 🗜 Save phone storage 🐾 Reduce memory footprint (based on Android Dynamic Features ) 💡 Lazy loading gracely replaced by eager loading on platforms, not compatible (eg. iOS)
  • 30. EXAMPLE 30 💡 Defer the IDFM support in app? Public transportation for Paris only (ie. buy dematerialized metro tickets + use your phone as a ticket )
  • 31. 31 (Warning: a single missing import leads to no deferred lib) 1 2 DEFERRED COMPONENTS IN PRACTICE
  • 34. 34 ♻ Saving-energy mode? 🪫 Low battery detected? 🦕 Old device / low-end device detected? 💡 DIY: adjust your app footprint on-the-fly! CUSTOM ECO-MODE
  • 35. 35 🧑💻 UI thread &📱 Platform thread: • More cache / longer TTL • Disable secondary SDKs • Avoid / Reduce precision on geolocation WHAT TO DISABLE / ADJUST ⚡ Raster thread: • Disable transition animations • Disable blend effects, opacity • Disable clips, shadows
  • 36. EXAMPLE 36 🤔 Disabling things from our onboarding wizard… On a low-end device (2018): - UI/accuracy slightly degraded ü FPS: +60 fps ü CPU usage (average): 79% à 36% 👉 All about choices and balance 💚 No hardcore dev skills required
  • 38. 38 Concevoir des paramètres écologiques dans les applications 🇫🇷 @ Mobilis In Mobile 2023 (Thomas Thibault) DESIGNING « ECO-FRIENDLY » USER PARAMS & OPTIONS
  • 40. RUNTIME ANALYSIS (EX. GREENSPECTOR) 85 Performance (Elapsed Time) 117.5 s Mobile Data 1.1 Mo 90 Energy 112.8 mAh 50 40 (Source: Greenspector 2022)
  • 41. 41 STATIC ANALYSIS (EX. ECOCODE) « Flutter Community, We need to build Flutter/Dart Eco Rules! » https://ecocode.io
  • 42. FLASHLIGHT « LIGHTHOUSE FOR MOBILE » 42 • Includes retries and iterations • Combines nicely with your e2e tests • Easy to compare runs • Video recording • Android only https://docs.flashlight.dev/
  • 43. 43 INTEGRATION TESTS (WITH CHROME TRACING / PERFETTO)
  • 44. GOLDEN TESTS 44 How does your App render on a small screen? ✅
  • 46. 46 Many ways to reduce your app footprint, optimize and reduce the waste ♻ Test and monitor your app performance over time, many tools are available 🔍 Solutions we all know, others few of us know. Learn, use, share your techniques 🌱
  • 47. RESOURCES WE’VE SHARED (🇫🇷 / 🇬🇧) 47 E2E Testing with Flutter Widget Testing with Flutter Accessibility Testing with Flutter Flutter @ Devoxx France Flutter Heroes 2023 Flutter Connection 2023