<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Shared_UI_vs_Shared_Logic_Architectures</id>
	<title>Shared UI vs Shared Logic Architectures - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Shared_UI_vs_Shared_Logic_Architectures"/>
	<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Shared_UI_vs_Shared_Logic_Architectures&amp;action=history"/>
	<updated>2026-07-13T14:27:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Shared_UI_vs_Shared_Logic_Architectures&amp;diff=455&amp;oldid=prev</id>
		<title>Dex: Created page with &quot;&#039;&#039;&#039;Summary:&#039;&#039;&#039; Cross-platform development is often discussed as though all frameworks and technologies pursue the same goal. In reality, different cross-platform architectures solve different problems. Some architectures seek to share both the user interface and business logic, while others focus on sharing only the application&#039;s underlying functionality whilst retaining native platform experiences. Understanding what is being shared is often more important than understa...&quot;</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Shared_UI_vs_Shared_Logic_Architectures&amp;diff=455&amp;oldid=prev"/>
		<updated>2026-07-13T08:37:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Cross-platform development is often discussed as though all frameworks and technologies pursue the same goal. In reality, different cross-platform architectures solve different problems. Some architectures seek to share both the user interface and business logic, while others focus on sharing only the application&amp;#039;s underlying functionality whilst retaining native platform experiences. Understanding what is being shared is often more important than understa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Cross-platform development is often discussed as though all frameworks and technologies pursue the same goal. In reality, different cross-platform architectures solve different problems. Some architectures seek to share both the user interface and business logic, while others focus on sharing only the application&amp;#039;s underlying functionality whilst retaining native platform experiences. Understanding what is being shared is often more important than understanding which framework is being used.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
As organisations sought to reduce the cost of maintaining separate Android and iOS applications, a variety of cross-platform technologies emerged.&lt;br /&gt;
&lt;br /&gt;
From a distance, many of these solutions appear similar.&lt;br /&gt;
&lt;br /&gt;
They promise:&lt;br /&gt;
&lt;br /&gt;
* Reduced duplication&lt;br /&gt;
* Faster development&lt;br /&gt;
* Multi-platform support&lt;br /&gt;
* Improved maintainability&lt;br /&gt;
&lt;br /&gt;
However, once examined closely, significant differences become apparent.&lt;br /&gt;
&lt;br /&gt;
Some approaches attempt to share nearly everything.&lt;br /&gt;
&lt;br /&gt;
Others deliberately preserve platform-specific user experiences whilst sharing only the application&amp;#039;s logic.&lt;br /&gt;
&lt;br /&gt;
These are fundamentally different architectural strategies.&lt;br /&gt;
&lt;br /&gt;
The critical question is not:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;quot;What framework should we use?&amp;quot;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Instead, it is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;quot;What should be standardised, and what should remain platform-specific?&amp;quot;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== What Gets Shared? ==&lt;br /&gt;
&lt;br /&gt;
Every application consists of multiple layers.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User Interface&lt;br /&gt;
&lt;br /&gt;
Business Logic&lt;br /&gt;
&lt;br /&gt;
Data Access&lt;br /&gt;
&lt;br /&gt;
API Communication&lt;br /&gt;
&lt;br /&gt;
Storage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cross-platform architectures differ primarily in which of these layers they attempt to reuse.&lt;br /&gt;
&lt;br /&gt;
The decision affects:&lt;br /&gt;
&lt;br /&gt;
* Development speed&lt;br /&gt;
* User experience&lt;br /&gt;
* Testing requirements&lt;br /&gt;
* Maintenance effort&lt;br /&gt;
* Long-term flexibility&lt;br /&gt;
&lt;br /&gt;
== Shared UI Architectures ==&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Shared UI architectures attempt to reuse both the application&amp;#039;s visual interface and its underlying logic.&lt;br /&gt;
&lt;br /&gt;
The same screens, controls, workflows, and business rules are presented across multiple platforms.&lt;br /&gt;
&lt;br /&gt;
Typically, most of the application exists within a single codebase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Shared UI&lt;br /&gt;
&lt;br /&gt;
Shared Business Logic&lt;br /&gt;
&lt;br /&gt;
Shared Data Layer&lt;br /&gt;
&lt;br /&gt;
        ↓&lt;br /&gt;
&lt;br /&gt;
Android&lt;br /&gt;
iOS&lt;br /&gt;
Desktop&lt;br /&gt;
Web&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Flutter&lt;br /&gt;
* React Native&lt;br /&gt;
* .NET MAUI&lt;br /&gt;
* Ionic&lt;br /&gt;
* Capacitor-based applications&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
==== Maximum Code Reuse ====&lt;br /&gt;
&lt;br /&gt;
Most application functionality is developed once.&lt;br /&gt;
&lt;br /&gt;
This can significantly reduce:&lt;br /&gt;
&lt;br /&gt;
* Development effort&lt;br /&gt;
* Testing effort&lt;br /&gt;
* Documentation effort&lt;br /&gt;
* Maintenance effort&lt;br /&gt;
&lt;br /&gt;
==== Consistent User Experience ====&lt;br /&gt;
&lt;br /&gt;
Users encounter similar behaviour regardless of platform.&lt;br /&gt;
&lt;br /&gt;
Workflows remain predictable.&lt;br /&gt;
&lt;br /&gt;
Features remain aligned.&lt;br /&gt;
&lt;br /&gt;
This is particularly attractive for products requiring a highly consistent brand identity.&lt;br /&gt;
&lt;br /&gt;
==== Faster Initial Development ====&lt;br /&gt;
&lt;br /&gt;
New features can often be delivered to all supported platforms simultaneously.&lt;br /&gt;
&lt;br /&gt;
This can be valuable when:&lt;br /&gt;
&lt;br /&gt;
* Launching new products&lt;br /&gt;
* Developing MVPs&lt;br /&gt;
* Building startup applications&lt;br /&gt;
* Working with limited development resources&lt;br /&gt;
&lt;br /&gt;
==== Simplified Team Structure ====&lt;br /&gt;
&lt;br /&gt;
A single team can typically support multiple platforms.&lt;br /&gt;
&lt;br /&gt;
Knowledge becomes concentrated rather than fragmented.&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;br /&gt;
&lt;br /&gt;
==== Reduced Platform Individuality ====&lt;br /&gt;
&lt;br /&gt;
Android and Apple users often expect different experiences.&lt;br /&gt;
&lt;br /&gt;
A highly standardised interface may feel less natural on one or both platforms.&lt;br /&gt;
&lt;br /&gt;
==== Additional Framework Dependency ====&lt;br /&gt;
&lt;br /&gt;
The application becomes dependent upon an intermediate framework.&lt;br /&gt;
&lt;br /&gt;
This introduces another component that must be:&lt;br /&gt;
&lt;br /&gt;
* Maintained&lt;br /&gt;
* Updated&lt;br /&gt;
* Supported&lt;br /&gt;
&lt;br /&gt;
==== Platform-Specific Workarounds ====&lt;br /&gt;
&lt;br /&gt;
Not everything can be perfectly shared.&lt;br /&gt;
&lt;br /&gt;
Applications frequently require:&lt;br /&gt;
&lt;br /&gt;
* Native integrations&lt;br /&gt;
* Platform-specific fixes&lt;br /&gt;
* Device-specific adaptations&lt;br /&gt;
&lt;br /&gt;
The promise of &amp;quot;write once, run anywhere&amp;quot; should be viewed as an aspiration rather than a guarantee.&lt;br /&gt;
&lt;br /&gt;
== Shared Logic Architectures ==&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures focus on sharing the behaviour of the application rather than its appearance.&lt;br /&gt;
&lt;br /&gt;
Business rules, data models, networking code, validation, and application services are shared.&lt;br /&gt;
&lt;br /&gt;
The user interface remains native to each platform.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Shared Business Logic&lt;br /&gt;
&lt;br /&gt;
Shared Validation&lt;br /&gt;
&lt;br /&gt;
Shared Networking&lt;br /&gt;
&lt;br /&gt;
Shared Data Access&lt;br /&gt;
&lt;br /&gt;
        ↓&lt;br /&gt;
&lt;br /&gt;
Native Android UI&lt;br /&gt;
&lt;br /&gt;
Native Apple UI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Kotlin Multiplatform&lt;br /&gt;
* Certain Xamarin architectures&lt;br /&gt;
* Enterprise service-layer architectures&lt;br /&gt;
* Custom shared-library approaches&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
==== Native User Experience ====&lt;br /&gt;
&lt;br /&gt;
Each platform retains its own conventions.&lt;br /&gt;
&lt;br /&gt;
Applications feel natural to their users.&lt;br /&gt;
&lt;br /&gt;
Navigation, controls, and interactions align with platform standards.&lt;br /&gt;
&lt;br /&gt;
==== Reduced Business Logic Duplication ====&lt;br /&gt;
&lt;br /&gt;
Critical application behaviour is implemented once.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
* Pricing rules&lt;br /&gt;
* Calculations&lt;br /&gt;
* Validation logic&lt;br /&gt;
* Security controls&lt;br /&gt;
&lt;br /&gt;
This reduces the risk of inconsistent behaviour between platforms.&lt;br /&gt;
&lt;br /&gt;
==== Easier Platform Evolution ====&lt;br /&gt;
&lt;br /&gt;
Operating systems evolve independently.&lt;br /&gt;
&lt;br /&gt;
Because user interfaces remain native, adapting to platform changes is often simpler.&lt;br /&gt;
&lt;br /&gt;
==== Strong Long-Term Flexibility ====&lt;br /&gt;
&lt;br /&gt;
The user interface can evolve without affecting shared business logic.&lt;br /&gt;
&lt;br /&gt;
Similarly, business logic can evolve without redesigning the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;br /&gt;
&lt;br /&gt;
==== Dual User Interface Development ====&lt;br /&gt;
&lt;br /&gt;
Android and Apple interfaces still require separate implementation.&lt;br /&gt;
&lt;br /&gt;
Although duplication is reduced, it is not eliminated.&lt;br /&gt;
&lt;br /&gt;
==== Increased Architectural Complexity ====&lt;br /&gt;
&lt;br /&gt;
Shared Logic solutions frequently require more architectural planning.&lt;br /&gt;
&lt;br /&gt;
Additional effort may be needed to:&lt;br /&gt;
&lt;br /&gt;
* Define interfaces&lt;br /&gt;
* Manage dependencies&lt;br /&gt;
* Coordinate platform teams&lt;br /&gt;
&lt;br /&gt;
==== Higher Initial Investment ====&lt;br /&gt;
&lt;br /&gt;
The architecture often requires greater discipline and planning before development begins.&lt;br /&gt;
&lt;br /&gt;
== A Physical Analogy ==&lt;br /&gt;
&lt;br /&gt;
The difference between these approaches can be visualised using a restaurant franchise.&lt;br /&gt;
&lt;br /&gt;
=== Shared UI Architecture ===&lt;br /&gt;
&lt;br /&gt;
Imagine a chain restaurant where every branch is identical.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Same Building&lt;br /&gt;
&lt;br /&gt;
Same Layout&lt;br /&gt;
&lt;br /&gt;
Same Menu&lt;br /&gt;
&lt;br /&gt;
Same Decor&lt;br /&gt;
&lt;br /&gt;
Same Procedures&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Customers receive an almost identical experience regardless of location.&lt;br /&gt;
&lt;br /&gt;
Consistency is prioritised.&lt;br /&gt;
&lt;br /&gt;
=== Shared Logic Architecture ===&lt;br /&gt;
&lt;br /&gt;
Now imagine a franchise model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Shared Recipes&lt;br /&gt;
&lt;br /&gt;
Shared Ingredients&lt;br /&gt;
&lt;br /&gt;
Shared Food Safety Rules&lt;br /&gt;
&lt;br /&gt;
Shared Management Processes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Different Buildings&lt;br /&gt;
&lt;br /&gt;
Different Decor&lt;br /&gt;
&lt;br /&gt;
Different Seating Layouts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Customers experience local variations whilst the underlying business processes remain consistent.&lt;br /&gt;
&lt;br /&gt;
This is much closer to the philosophy of Shared Logic architectures.&lt;br /&gt;
&lt;br /&gt;
== Architectural Comparison ==&lt;br /&gt;
&lt;br /&gt;
=== Development Speed ===&lt;br /&gt;
&lt;br /&gt;
Shared UI architectures typically provide the fastest initial development experience.&lt;br /&gt;
&lt;br /&gt;
A single implementation can support multiple platforms simultaneously.&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures usually require additional interface development for each supported platform.&lt;br /&gt;
&lt;br /&gt;
=== Platform Consistency ===&lt;br /&gt;
&lt;br /&gt;
Shared UI architectures excel at maintaining consistency.&lt;br /&gt;
&lt;br /&gt;
Users encounter similar workflows regardless of device.&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures allow experiences to diverge where appropriate.&lt;br /&gt;
&lt;br /&gt;
=== User Experience ===&lt;br /&gt;
&lt;br /&gt;
Shared UI prioritises consistency.&lt;br /&gt;
&lt;br /&gt;
Shared Logic prioritises platform familiarity.&lt;br /&gt;
&lt;br /&gt;
Neither objective is inherently superior.&lt;br /&gt;
&lt;br /&gt;
The appropriate choice depends on project goals.&lt;br /&gt;
&lt;br /&gt;
=== Maintenance ===&lt;br /&gt;
&lt;br /&gt;
Shared UI architectures often reduce maintenance effort by centralising application behaviour.&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures reduce duplication whilst preserving flexibility.&lt;br /&gt;
&lt;br /&gt;
The optimal balance depends upon how frequently each layer changes.&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
Both approaches can achieve excellent results.&lt;br /&gt;
&lt;br /&gt;
Performance is often determined more by implementation quality than architectural category.&lt;br /&gt;
&lt;br /&gt;
== Understanding Business Requirements ==&lt;br /&gt;
&lt;br /&gt;
Before selecting an architecture, organisations should identify what is genuinely unique.&lt;br /&gt;
&lt;br /&gt;
=== Consumer Applications ===&lt;br /&gt;
&lt;br /&gt;
Applications competing for user engagement may place significant value on platform-specific experiences.&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures can be attractive where user experience differentiation matters.&lt;br /&gt;
&lt;br /&gt;
=== Enterprise Applications ===&lt;br /&gt;
&lt;br /&gt;
Many enterprise systems contain large amounts of shared functionality.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
* Workflow processing&lt;br /&gt;
* Reporting&lt;br /&gt;
* Data access&lt;br /&gt;
&lt;br /&gt;
Shared UI solutions may provide substantial efficiencies.&lt;br /&gt;
&lt;br /&gt;
=== Internal Business Applications ===&lt;br /&gt;
&lt;br /&gt;
Where users are trained and workflows are controlled, consistency often provides greater value than platform individuality.&lt;br /&gt;
&lt;br /&gt;
=== Complex Multi-Platform Ecosystems ===&lt;br /&gt;
&lt;br /&gt;
Applications targeting:&lt;br /&gt;
&lt;br /&gt;
* Mobile&lt;br /&gt;
* Desktop&lt;br /&gt;
* Web&lt;br /&gt;
&lt;br /&gt;
may benefit from extensive sharing where user requirements are broadly similar.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions ==&lt;br /&gt;
&lt;br /&gt;
=== Shared UI Is Not Automatically Inferior ===&lt;br /&gt;
&lt;br /&gt;
Some developers incorrectly assume shared interfaces are inherently less professional.&lt;br /&gt;
&lt;br /&gt;
Many successful commercial applications use Shared UI architectures.&lt;br /&gt;
&lt;br /&gt;
The architecture should be judged by results rather than ideology.&lt;br /&gt;
&lt;br /&gt;
=== Shared Logic Is Not Purely Native ===&lt;br /&gt;
&lt;br /&gt;
Although the presentation layer remains native, significant portions of the application remain shared.&lt;br /&gt;
&lt;br /&gt;
It is best viewed as a hybrid approach rather than a fully native strategy.&lt;br /&gt;
&lt;br /&gt;
=== More Sharing Is Not Always Better ===&lt;br /&gt;
&lt;br /&gt;
Excessive standardisation can introduce complexity.&lt;br /&gt;
&lt;br /&gt;
Sometimes duplication is cheaper than abstraction.&lt;br /&gt;
&lt;br /&gt;
Good architects recognise the difference.&lt;br /&gt;
&lt;br /&gt;
== Design and Architecture Considerations ==&lt;br /&gt;
&lt;br /&gt;
When evaluating either approach, consideration should be given to:&lt;br /&gt;
&lt;br /&gt;
* Long-term maintainability&lt;br /&gt;
* Team structure&lt;br /&gt;
* Platform roadmap requirements&lt;br /&gt;
* User experience expectations&lt;br /&gt;
* Hiring considerations&lt;br /&gt;
* Vendor lock-in&lt;br /&gt;
* Testing requirements&lt;br /&gt;
&lt;br /&gt;
Technology selection should be guided by business objectives rather than industry trends.&lt;br /&gt;
&lt;br /&gt;
== Practical Guidance ==&lt;br /&gt;
&lt;br /&gt;
=== Shared UI Makes Sense When ===&lt;br /&gt;
&lt;br /&gt;
* Consistency is important&lt;br /&gt;
* Development speed is critical&lt;br /&gt;
* Resources are limited&lt;br /&gt;
* Multiple platforms are required&lt;br /&gt;
* User experience differences are relatively minor&lt;br /&gt;
&lt;br /&gt;
=== Shared Logic Makes Sense When ===&lt;br /&gt;
&lt;br /&gt;
* Platform-specific experiences matter&lt;br /&gt;
* Business logic is highly complex&lt;br /&gt;
* Long-term maintainability is a priority&lt;br /&gt;
* Platform evolution is expected&lt;br /&gt;
* Native integration requirements are significant&lt;br /&gt;
&lt;br /&gt;
=== Either Approach Can Succeed When ===&lt;br /&gt;
&lt;br /&gt;
* Requirements are clearly understood&lt;br /&gt;
* The architecture is implemented well&lt;br /&gt;
* Teams possess appropriate skills&lt;br /&gt;
* Maintenance requirements are considered from the outset&lt;br /&gt;
&lt;br /&gt;
== The Real Question ==&lt;br /&gt;
&lt;br /&gt;
Many architecture discussions focus on selecting technologies.&lt;br /&gt;
&lt;br /&gt;
Experienced architects often begin elsewhere.&lt;br /&gt;
&lt;br /&gt;
They ask:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;quot;What part of the system changes least frequently?&amp;quot;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The answer frequently determines what should be shared.&lt;br /&gt;
&lt;br /&gt;
For some applications, the user interface remains relatively stable.&lt;br /&gt;
&lt;br /&gt;
For others, the business rules represent the true long-term asset.&lt;br /&gt;
&lt;br /&gt;
Identifying these characteristics early can significantly improve architectural decisions.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Shared UI and Shared Logic architectures are not competing versions of the same idea.&lt;br /&gt;
&lt;br /&gt;
They represent different philosophies regarding standardisation.&lt;br /&gt;
&lt;br /&gt;
Shared UI architectures seek to standardise the entire application experience.&lt;br /&gt;
&lt;br /&gt;
Shared Logic architectures seek to standardise application behaviour while respecting platform differences.&lt;br /&gt;
&lt;br /&gt;
Neither approach is universally superior.&lt;br /&gt;
&lt;br /&gt;
The most successful solutions emerge when architects understand what should remain consistent, what should remain flexible, and where the organisation derives the greatest long-term value.&lt;br /&gt;
&lt;br /&gt;
Good architecture is rarely about maximising code reuse.&lt;br /&gt;
&lt;br /&gt;
It is about sharing the parts of a system that provide the greatest benefit whilst allowing the rest of the system to evolve naturally.&lt;/div&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
</feed>