SlideShare a Scribd company logo
1 of 47
Download to read offline
Top 10 Mendix native lessons learned
Mendix meetup
Naarden 11 april 2024
Introduction
• What Emixa? What?
• The power of 2 Mendix expert
organizations Magnus and Appronto
together with successful Integration,
Analytics , Siemens and SAP businesses.
About Emixa
Emixa highlights
• 530 colleagues
• 10 locations
• 1.700 clients
• Mendix Gold Partner
Focus regions
Locations Emixa
Management
Consulting
Data Analytics
Integration Integration
Integration
...
Setting the scene for tonight
• Web vs Native • Think different • Think offline first
We are counting down from 10, have a special release for the community and
we are closing off with a quiz to check if your native knowledge has increased!
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
SelektHuis Bouw app – Approach & lessons learned
• Company that sells and builds fully
customizable pre-fabricated houses.
• Due to changes in Dutch buyer laws,
documentation of construction
progress is required.
• Goal: Native app that construction
employees can use to document
construction progression.
• Planning must be fully customizable
• Impact on construction employees'
workload should be minimized
• 3 lessons learned:
• Custom-made offline-first
synchronization from Native
device to Server
• Custom-made delta sync
from Server to Native device
• Passing object from Nano-
to Microflow (and vice-versa)
by using Object GUID
10. Custom offline-first sync from Native device to Server
• What is a sync profile?
• Many different Mendix
synchronisation
profiles to choose from
• Goal: Sync profile
where user can
perform their daily
tasks, even without an
Internet connection.
• Challenge: Native
users should be able
to trigger workflows
and continue working,
with the possibility of
no connection.
• Solution: needsSync
boolean on entities that
will be changed on
Native device.
• Native change: true
• BCO after sync: false
10. Custom offline-first sync from Native device to Server
Scenario A: Internet connection and immediate successful sync
Scenario B: No successful sync, sync will be retried via App Events
10. Key take-aways
• Allows Native user to continue
their work without Internet
connection
• Ensures objects are never lost,
and will be synced if connection
is available
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
9. Custom-made delta sync from Server to Native device
• Next to syncing from
device to server, this
also goes vice-versa
• Goal: Always having
necessary objects
available on Native
device, whilst
minimizing impact on
performance.
• Challenge: Objects are
changed often, which
requires lots of syncing
to device.
• Solution: Delta-syncing
only necessary entities
via App Events on
different Native pages
• Only sync entities
that can be
accessed from that
page -> Divide
work load
9. Custom-made delta sync from Server to Native device
Entity
Project
Task
TaskForm
NewsArticles
Accounts
Issue
Oplevering
Document
FormAnswer
Instruction
9. Custom-made delta sync from Server to Native device
Entity
Project
Task
TaskForm
NewsArticles
Accounts
Issue
Oplevering
Document
FormAnswer
Instruction
9. Custom-made delta sync from Server to Native device
9. Key take-aways
• Native user always has objects
when he/she needs them
• Divides the workload of syncing
to device for better UX
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
8. Passing object from Nano- to Microflow (and vice-versa)
by using Object GUID
• Logic often takes part both on device and
server.
• Goal: Optimize work distribution between
Native device & server by dividing actions
between the two.
• Challenge: Objects cannot be passed
from Nano- to Microflow and vice-versa.
• Solution: Objects can be passed from
Nano- to Microflows by using Java &
JavaScript actions
• GUID is passed as a string or
integer via a parameter
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
7. Showing remote push notifications when the user is using the app
• Goal: Inform users
with push notifications.
• Challenge: When the
app is open, standard
push notifications are
not shown to the user.
• Solution: Handle
incoming push
notification with the
On receive in the
notifications widget
7. Showing remote push notifications when the user is using the app
• Create a custom Notification entity (NP) with a visibility Boolean
• Add an On Receive nanoflow to your homepage
• In the nanoflow, make the Notification visible
• Add to the layout a datasource nanoflow which retrieves the
Notification and shows it based on the visibility Boolean
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
6. Improve synchronization performance with compound objects
• Goal: All data relevant
to the user is fully
synchronized and
available to the User
on Native.
• Challenge: Multiple
entities need to be
synchronized, which can
lead to performance
issues or mistakes in the
synchronization profile.
• Solution: Implement a
compound object which
combines multiple back-
end entities into one.
Price
Product
...
OrderLine
ID
Name
...
Customer
ID
Date
Totalprice
...
Order
CustomerID
CustomerName
OrderID
OrderDate
TotalPrice
LinePrice
ProductName
...
OrderLineNative
6. Improve synchronization performance with compound objects
• Create a compound object with all relevant attributes
• Associate the compound object to the target object(s)
• Implement ACO logic on the target object(s) to update
compound object
• Add delete behaviour or BDE logic to delete compound
object after delete of target object(s)
• Replace all usages of the target object(s) in the
Native Client logic
• Mendix - Best practices for Mobile Apps - Compound object
Price
Product
...
OrderLine
CustomerID
CustomerName
OrderID
OrderDate
TotalPrice
LinePrice
ProductName
...
OrderLineNative
OrderLineNative_Orderline
ONVZ – Lessons learned
• Premium health insurer in the Netherlands
• 2 labels: ONVZ and VvAAZorgverzekeringen
5 lessons learned:
• Understanding (differences
between microflows and) nanoflows
• Extending Mendix native standard
functionality with React Native
• 3 lessons learned on the release and
development cycle and best
practices by Maud later!
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
5. Biometric authentication
• Mendix provides a couple of native specific nanoflow actions
out of the box to help implement biometric authentication
• Goal: Introduce an alternative method of authentication for
quicker access or an extra layer of security
• Challenges:
• Understanding nanoflows
• Local Storage items are not secure
5. Understanding nanoflows
• Activities in nanoflows are
executed immediately
• Nanoflow actions are always
executed with security applied
5. Biometric authentication
Source: https://medium.com/mendix/mendix-the-beginning-of-native-mobile-cfdcf5eda969
5. Biometric authentication
• Customize ACT_SignInUser
• Customize Login page
• Add nanoflows for biometric authentication
5. Biometric authentication
• Solution: make sure the login JS action is the last one in your flow
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
4. Challenge: local storage items are not secure
• Local storage items
• Are not kept in device database
• Are stored in app eco system
• Are not removed on sign-out
• Should not be used to store sensitive
information
• No marketplace module available...
4. Solution: extend upon native framework
• React Native
• Native equivalent of Java actions
• Required: NodeJS
• Npm or Yarn to install required react native library
• Create your own JS actions
• Considerations:
• Build dependency
• Maintainability
• Native OS support
• React Native Keychain
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
3. How to build and distribute 6 apps in a structured way?
• Use case: Build and distribute
6 apps
(test, acceptance, production)
• Challenge:
• Many configurations
• Time consuming
• Consequences for users
• Release process not forgiving
• Goal: Structured
release strategy
3. How to build and distribute 6 apps in a structured way?
• Question:
• Who knows the difference between a build and
an OTA (Over The Air) update?
• New build
• Initial release
• Native UI Builder
• Changes on settings in Native UI builder
• Functionality updates
• Breaking changes
• OTA update
• Styling, small changes, JavaScript updates etc.
• Bundle updated / pulled from server
• OTA is a time saver!
3. Best practices
• Build:
• Config.json file for each app (test,
acceptance, production)
• Distribution (test / acceptance):
• Need Macbook for iOS distribution
(first time)
• iOS: Testflight
• Android: Internal testing via Google Play
Console
• Test your code against previous builds on
acceptance
• Distribution (production):
• Preparation of review process by stores
takes a lot of time!
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
2. Best practices to avoid breaking changes
• What is a breaking change? Changes of the model breaking older
versions on devices
Insurer Insurance
Company
Insurer
2. Be careful when
• Changes / deletes:
• Entity / Microflow / Module / Attribute names
• Parameters of microflow called from nanoflow
• Enumerations
• Avoid restrictions in sync profile / access rights of objects stored
on device: sync errors
• Microflow from marketplace module?
• Create extra native microflow (own control) and call the marketplace
microflow (extra layer)
• Add React native packages / dependencies = new build
2. Added dependency without OTA
• 20:10:05 APP WARNING NativeOTA: A mobile client requested OTA, but the
client is not compatible for the following reason(s). The OTA won't be served.
• 20:10:05 APP - One or more dependencies are not included in the app:
react-native-keychain@^8.1.2, react-native-touch-id@4.4.1
• 20:10:07 APP WARNING NativeOTA: A mobile client requested OTA, but the
client is not compatible for the following reason(s). The OTA won't be served.
• 20:10:07 APP - One or more dependencies are not included in the app:
react-native-keychain@^8.1.2, react-native-touch-id@4.4.1
2. Breaking changes – Microflow usage
• Not using microflow any more = delete microflow = breaking change
• Make sure you keep using microflow from somewhere in the app (hidden)
10 9 8 6 5 4 3 1
7 2
Top 10 Mendix native lessons learned
1. Emixa Release Helper
• Notify the user if an OTA is available
• New version available in store?
Update the app!
• Always the latest version on devices
• Breaking change? Make sure
user updates beforehand
In the Mendix Marketplace now!
Emixa Mendix Meetup 11 April 2024 about Mendix Native development

More Related Content

Similar to Emixa Mendix Meetup 11 April 2024 about Mendix Native development

(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern DesktopOren Novotny
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016Alex Wu
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakBlueMetalInc
 
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Howard Greenberg
 
SadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikul Islam
 
Building Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on AzureBuilding Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on AzureBrian Lyttle
 
Road to agile: federal government case study
Road to agile: federal government case studyRoad to agile: federal government case study
Road to agile: federal government case studyDavid Marsh
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Bala Subra
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysBrett McLain
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science PlatformDecision Science Community
 
Ehab wafik CV(1)
Ehab wafik CV(1)Ehab wafik CV(1)
Ehab wafik CV(1)Ehab Wafik
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk NewsESUG
 
Windows 8 DevUnleashed - Session 1
Windows 8 DevUnleashed - Session 1Windows 8 DevUnleashed - Session 1
Windows 8 DevUnleashed - Session 1drudolph11
 

Similar to Emixa Mendix Meetup 11 April 2024 about Mendix Native development (20)

(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John Pelak
 
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
 
SadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikulIslamDotNetResume
SadikulIslamDotNetResume
 
Building Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on AzureBuilding Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on Azure
 
Road to agile: federal government case study
Road to agile: federal government case studyRoad to agile: federal government case study
Road to agile: federal government case study
 
Resume
ResumeResume
Resume
 
Resume
ResumeResume
Resume
 
Resume
ResumeResume
Resume
 
Resume_.Net_3+Yr
Resume_.Net_3+YrResume_.Net_3+Yr
Resume_.Net_3+Yr
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 days
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 
Ehab wafik CV(1)
Ehab wafik CV(1)Ehab wafik CV(1)
Ehab wafik CV(1)
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk News
 
Windows 8 DevUnleashed - Session 1
Windows 8 DevUnleashed - Session 1Windows 8 DevUnleashed - Session 1
Windows 8 DevUnleashed - Session 1
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Emixa Mendix Meetup 11 April 2024 about Mendix Native development

  • 1. Top 10 Mendix native lessons learned Mendix meetup Naarden 11 april 2024
  • 2. Introduction • What Emixa? What? • The power of 2 Mendix expert organizations Magnus and Appronto together with successful Integration, Analytics , Siemens and SAP businesses.
  • 3. About Emixa Emixa highlights • 530 colleagues • 10 locations • 1.700 clients • Mendix Gold Partner Focus regions Locations Emixa Management Consulting Data Analytics Integration Integration Integration ...
  • 4. Setting the scene for tonight • Web vs Native • Think different • Think offline first We are counting down from 10, have a special release for the community and we are closing off with a quiz to check if your native knowledge has increased!
  • 5. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 6. SelektHuis Bouw app – Approach & lessons learned • Company that sells and builds fully customizable pre-fabricated houses. • Due to changes in Dutch buyer laws, documentation of construction progress is required. • Goal: Native app that construction employees can use to document construction progression. • Planning must be fully customizable • Impact on construction employees' workload should be minimized • 3 lessons learned: • Custom-made offline-first synchronization from Native device to Server • Custom-made delta sync from Server to Native device • Passing object from Nano- to Microflow (and vice-versa) by using Object GUID
  • 7. 10. Custom offline-first sync from Native device to Server • What is a sync profile? • Many different Mendix synchronisation profiles to choose from • Goal: Sync profile where user can perform their daily tasks, even without an Internet connection. • Challenge: Native users should be able to trigger workflows and continue working, with the possibility of no connection. • Solution: needsSync boolean on entities that will be changed on Native device. • Native change: true • BCO after sync: false
  • 8. 10. Custom offline-first sync from Native device to Server
  • 9. Scenario A: Internet connection and immediate successful sync
  • 10. Scenario B: No successful sync, sync will be retried via App Events
  • 11. 10. Key take-aways • Allows Native user to continue their work without Internet connection • Ensures objects are never lost, and will be synced if connection is available
  • 12. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 13. 9. Custom-made delta sync from Server to Native device • Next to syncing from device to server, this also goes vice-versa • Goal: Always having necessary objects available on Native device, whilst minimizing impact on performance. • Challenge: Objects are changed often, which requires lots of syncing to device. • Solution: Delta-syncing only necessary entities via App Events on different Native pages • Only sync entities that can be accessed from that page -> Divide work load
  • 14. 9. Custom-made delta sync from Server to Native device Entity Project Task TaskForm NewsArticles Accounts Issue Oplevering Document FormAnswer Instruction
  • 15. 9. Custom-made delta sync from Server to Native device Entity Project Task TaskForm NewsArticles Accounts Issue Oplevering Document FormAnswer Instruction
  • 16. 9. Custom-made delta sync from Server to Native device
  • 17. 9. Key take-aways • Native user always has objects when he/she needs them • Divides the workload of syncing to device for better UX
  • 18. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 19. 8. Passing object from Nano- to Microflow (and vice-versa) by using Object GUID • Logic often takes part both on device and server. • Goal: Optimize work distribution between Native device & server by dividing actions between the two. • Challenge: Objects cannot be passed from Nano- to Microflow and vice-versa. • Solution: Objects can be passed from Nano- to Microflows by using Java & JavaScript actions • GUID is passed as a string or integer via a parameter
  • 20. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 21. 7. Showing remote push notifications when the user is using the app • Goal: Inform users with push notifications. • Challenge: When the app is open, standard push notifications are not shown to the user. • Solution: Handle incoming push notification with the On receive in the notifications widget
  • 22. 7. Showing remote push notifications when the user is using the app • Create a custom Notification entity (NP) with a visibility Boolean • Add an On Receive nanoflow to your homepage • In the nanoflow, make the Notification visible • Add to the layout a datasource nanoflow which retrieves the Notification and shows it based on the visibility Boolean
  • 23. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 24. 6. Improve synchronization performance with compound objects • Goal: All data relevant to the user is fully synchronized and available to the User on Native. • Challenge: Multiple entities need to be synchronized, which can lead to performance issues or mistakes in the synchronization profile. • Solution: Implement a compound object which combines multiple back- end entities into one. Price Product ... OrderLine ID Name ... Customer ID Date Totalprice ... Order CustomerID CustomerName OrderID OrderDate TotalPrice LinePrice ProductName ... OrderLineNative
  • 25. 6. Improve synchronization performance with compound objects • Create a compound object with all relevant attributes • Associate the compound object to the target object(s) • Implement ACO logic on the target object(s) to update compound object • Add delete behaviour or BDE logic to delete compound object after delete of target object(s) • Replace all usages of the target object(s) in the Native Client logic • Mendix - Best practices for Mobile Apps - Compound object Price Product ... OrderLine CustomerID CustomerName OrderID OrderDate TotalPrice LinePrice ProductName ... OrderLineNative OrderLineNative_Orderline
  • 26. ONVZ – Lessons learned • Premium health insurer in the Netherlands • 2 labels: ONVZ and VvAAZorgverzekeringen 5 lessons learned: • Understanding (differences between microflows and) nanoflows • Extending Mendix native standard functionality with React Native • 3 lessons learned on the release and development cycle and best practices by Maud later!
  • 27. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 28. 5. Biometric authentication • Mendix provides a couple of native specific nanoflow actions out of the box to help implement biometric authentication • Goal: Introduce an alternative method of authentication for quicker access or an extra layer of security • Challenges: • Understanding nanoflows • Local Storage items are not secure
  • 29. 5. Understanding nanoflows • Activities in nanoflows are executed immediately • Nanoflow actions are always executed with security applied
  • 30. 5. Biometric authentication Source: https://medium.com/mendix/mendix-the-beginning-of-native-mobile-cfdcf5eda969
  • 31. 5. Biometric authentication • Customize ACT_SignInUser • Customize Login page • Add nanoflows for biometric authentication
  • 32. 5. Biometric authentication • Solution: make sure the login JS action is the last one in your flow
  • 33. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 34. 4. Challenge: local storage items are not secure • Local storage items • Are not kept in device database • Are stored in app eco system • Are not removed on sign-out • Should not be used to store sensitive information • No marketplace module available...
  • 35. 4. Solution: extend upon native framework • React Native • Native equivalent of Java actions • Required: NodeJS • Npm or Yarn to install required react native library • Create your own JS actions • Considerations: • Build dependency • Maintainability • Native OS support • React Native Keychain
  • 36. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 37. 3. How to build and distribute 6 apps in a structured way? • Use case: Build and distribute 6 apps (test, acceptance, production) • Challenge: • Many configurations • Time consuming • Consequences for users • Release process not forgiving • Goal: Structured release strategy
  • 38. 3. How to build and distribute 6 apps in a structured way? • Question: • Who knows the difference between a build and an OTA (Over The Air) update? • New build • Initial release • Native UI Builder • Changes on settings in Native UI builder • Functionality updates • Breaking changes • OTA update • Styling, small changes, JavaScript updates etc. • Bundle updated / pulled from server • OTA is a time saver!
  • 39. 3. Best practices • Build: • Config.json file for each app (test, acceptance, production) • Distribution (test / acceptance): • Need Macbook for iOS distribution (first time) • iOS: Testflight • Android: Internal testing via Google Play Console • Test your code against previous builds on acceptance • Distribution (production): • Preparation of review process by stores takes a lot of time!
  • 40. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 41. 2. Best practices to avoid breaking changes • What is a breaking change? Changes of the model breaking older versions on devices Insurer Insurance Company Insurer
  • 42. 2. Be careful when • Changes / deletes: • Entity / Microflow / Module / Attribute names • Parameters of microflow called from nanoflow • Enumerations • Avoid restrictions in sync profile / access rights of objects stored on device: sync errors • Microflow from marketplace module? • Create extra native microflow (own control) and call the marketplace microflow (extra layer) • Add React native packages / dependencies = new build
  • 43. 2. Added dependency without OTA • 20:10:05 APP WARNING NativeOTA: A mobile client requested OTA, but the client is not compatible for the following reason(s). The OTA won't be served. • 20:10:05 APP - One or more dependencies are not included in the app: react-native-keychain@^8.1.2, react-native-touch-id@4.4.1 • 20:10:07 APP WARNING NativeOTA: A mobile client requested OTA, but the client is not compatible for the following reason(s). The OTA won't be served. • 20:10:07 APP - One or more dependencies are not included in the app: react-native-keychain@^8.1.2, react-native-touch-id@4.4.1
  • 44. 2. Breaking changes – Microflow usage • Not using microflow any more = delete microflow = breaking change • Make sure you keep using microflow from somewhere in the app (hidden)
  • 45. 10 9 8 6 5 4 3 1 7 2 Top 10 Mendix native lessons learned
  • 46. 1. Emixa Release Helper • Notify the user if an OTA is available • New version available in store? Update the app! • Always the latest version on devices • Breaking change? Make sure user updates beforehand In the Mendix Marketplace now!