<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Author at Infinum</title>
		<atom:link href="https://infinum.com/blog/author/maroje-marcelic/feed/" rel="self" type="application/rss+xml" />
		<link></link>
		<description>Building digital products</description>
		<lastBuildDate>Mon, 13 Apr 2026 14:42:54 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>19097https://infinum.com/uploads/2021/12/flutter-vs-native-0.webp</url>
				</image>
				<title>Flutter vs Native Development &#8211; What to Choose</title>
				<link>https://infinum.com/blog/flutter-vs-native/</link>
				<pubDate>Fri, 24 Dec 2021 14:05:00 +0000</pubDate>
				<dc:creator>Maroje Marcelić</dc:creator>
				<guid isPermaLink="false">https://infinum.com/blog/flutter-vs-native/</guid>
				<description>
					<![CDATA[<p>Flutter makes for a simpler and shorter development process, but sometimes it&#8217;s still better to take the native route.</p>
<p>The post <a href="https://infinum.com/blog/flutter-vs-native/">Flutter vs Native Development &#8211; What to Choose</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-229"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	<strong>Flutter vs. Native Development</strong>: Consider the choice as you embark on your app development journey. With <a href="https://infinum.com/mobile-web-apps/flutter/">Flutter</a>&#8216;s streamlined &#8216;write once, run anywhere&#8217; approach, discover how this innovative technology reshapes the mobile landscape. Uncover the key factors guiding your choice for an efficient and <a href="https://infinum.com/cross-platform-app-development-services/">effective cross-platform deployment</a></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Our lives have become so integrated with technology that we have gotten used to accessing everything from the palms of our hands. Our <a href="https://infinum.com/work/?industries=finance-insurance">finances</a>, work, education, information, games, shopping – whatever we need, we first reach for our phone to get it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	It’s no wonder mobile apps are in high demand and <a href="https://infinum.com/mobile-web-apps/">mobile development</a> is under pressure to deliver great products, tomorrow, if possible. Development for iOS and Android can take time, though, and this is where Flutter comes to the scene.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-102">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-103'
	>
	Flutter development pros</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-105">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-106'
	>
	<li><a href="#widgets">Widgets everywhere</a></li><li><a href="#hot">Hot reload &amp; hot restart</a></li><li><a href="#ux">Consistent cross-platform UX</a></li><li><a href="#modes">Light &amp; dark mode</a></li><li><a href="#bugs">Bug spotting</a></li><li><a href="#testing">Extra testing</a></li><li><a href="#human">The human factor</a></li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-108">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-109'
	>
	Flutter development cons</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-111">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-112'
	>
	<li><a href="#novel-technology">A novel technology</a></li><li><a href="#staffing">Staffing issues</a></li><li><a href="#hardware">Hardware challenges</a></li><li><a href="#future">No future guarantees</a></li><li><a href="#updates">Delayed updates</a></li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-114">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-115'
	>
	Simpler and shorter development process</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-117">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-118'
	>
	The technology of choice for the shortest possible time-to-market, Flutter is an UI software development kit primarily used for developing applications for Android and iOS. Though it is still relatively new, there are already more than 90 000 Flutter applications available.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-120">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-121'
	>
	Flutter works under the principle “write once, run anywhere”. That means you only need to write one set of code and deploy it on whichever platform you want (Android, iOS, Linux, etc.). This ease of development is one of Flutter’s main advantages. At the same time, its performance is similar to native, while the apps remain visually consistent on different platforms.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-123">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-124'
	>
	Why choose Flutter?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-126">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-127'
	>
	Flutter makes a strong case over native in more than one area.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="widgets"></div>
	
			<div class="block-heading" data-id="es-129">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-130'
	>
	Widgets everywhere</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	The ease of development mentioned above comes from using widgets, reusable components that build applications. From buttons to images and even text, everything is a widget. You can mix and match them easily to create any user interface you like.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="hot"></div>
	
			<div class="block-heading" data-id="es-135">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-136'
	>
	Hot reload &amp; hot restart</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-138">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-139'
	>
	Flutter benefits from the features “hot reload” and “hot restart”, appreciated by developers for making the development process faster and easier. Hot reload allows you to see any changes in the UI instantly, reducing the waiting time between two changes. This means that a developer and a designer can sit side by side and try different layouts in real time.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-141">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-142'
	>
	Hot restart, on the other hand, destroys the current app state and rebuilds it to default. It allows you to check the business logic changes several times faster than on native platforms.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="ux"></div>
	
			<div class="block-heading" data-id="es-144">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-145'
	>
	Consistent cross-platform UX</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-147">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-148'
	>
	Flutter is a great choice for UI-heavy applications because it gives you control over every pixel displayed to the user. It enables a consistent user experience across different devices and platforms. You can also make your widgets look exactly as designed. When you don’t have to be concerned about platform abilities, the only limitations are your imagination and time.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="modes"></div>
	
			<div class="block-heading" data-id="es-150">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-151'
	>
	Light &amp; dark mode</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-155"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-153">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-154'
	>
	Switching between dark and light mode can also be done painlessly. There is no need to create another widget just for the dark theme, you can use an existing one, set its theme to dark, and you’ll have it in dark mode.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-158"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="bugs"></div>
	
			<div class="block-heading" data-id="es-156">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-157'
	>
	Bug spotting</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-161"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-159">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-160'
	>
	Bugs are actually another plus in Flutter. Since the code is shared, bugs are too. It might seem like a problem, but actually this means they occur more frequently and are therefore more noticeable. They can also be fixed with just one change for all platforms.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="testing"></div>
	
			<div class="block-heading" data-id="es-162">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-163'
	>
	Extra testing</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-167"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-165">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-166'
	>
	The write-once-run-anywhere aspect has implications in testing as well. You’re essentially writing one app, so the testing is more thorough because you do it twice.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="human"></div>
	
			<div class="block-heading" data-id="es-168">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-169'
	>
	The human factor</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-171">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-172'
	>
	No technology makes sense without people. It’s people who come up with an idea for an application, it takes people to build it and people to use it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-174">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-175'
	>
	Sometimes, during the application development process, the idea outgrows its original scope, and the team building the app grows with it. In large teams, communication is key, and if it doesn’t run smoothly, it impacts the project.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-179"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-177">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-178'
	>
	When developing the same application for Android and iOS, normally there’d be two separate teams. With Flutter, there is only one, which makes communication better, saves time on syncs between departments, and reduces the estimates for future features, leaving more room for application development. With only one mobile team, you also remove the risk of having different behaviors for the same use case appear on different platforms.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-182"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-180">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-181'
	>
	Why not choose Flutter?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-185"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-183">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-184'
	>
	There are of course cases when Flutter’s disadvantages come to the forefront.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-188"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="novel-technology"></div>
	
			<div class="block-heading" data-id="es-186">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-187'
	>
	A novel technology</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-191"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-189">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-190'
	>
	Because it is still a novelty, it’s subject to a lot of substantial and rapid changes. In practice it means more maintenance than with native platforms, which are already pretty stable.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-194"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="staffing"></div>
	
			<div class="block-heading" data-id="es-192">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-193'
	>
	Staffing issues</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-197"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-195">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-196'
	>
	Another downside connected with Flutter being a new technology is that there are less senior developers available, and people are generally less experienced with it. It might be harder to find the skilled individuals ready to jump in on a Flutter project.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-200"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="hardware"></div>
	
			<div class="block-heading" data-id="es-198">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-199'
	>
	Hardware challenges</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-203"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-201">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-202'
	>
	Flutter is a superb choice for UI-heavy applications, but with hardware-driven applications it falls short. Hardware calls for much more communication with native, which probably means you shouldn’t have used Flutter at all.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-206"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="future"></div>
	
			<div class="block-heading" data-id="es-204">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-205'
	>
	No future guarantees</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-209"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-207">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-208'
	>
	Flutter is developed by Google and Google doesn’t have much of a track record with similar technologies. It wouldn’t be unheard of if Flutter simply got phased out at some point in the future.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-212"
	 data-animation='slideFade' data-animation-target='inner-items'>
				<div class="wrapper__anchor" id="updates"></div>
	
			<div class="block-heading" data-id="es-210">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-211'
	>
	Delayed updates</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-215"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-213">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-214'
	>
	Finally, there are some delays with updates. When a new version of Android or iOS comes out, Flutter developers take some time to adjust to the changes made. This brings<br>unwanted delays in reaching customers with the latest devices.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-218"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-216">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-217'
	>
	The Flutter vs Native dilemma</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-221"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-219">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-220'
	>
	Flutter is still not a perfect choice for <em>any</em> new app you’re going to build. To decide whether it’s a good fit for your particular project, you need to consider all the aspects we discussed.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-224"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-222">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-223'
	>
	Think about what you want to achieve and how you want to get there. Do you want a fully custom UI? A lot of reusable components in different places? Is time-to-market important? What is your budget? Are you fine with being a few weeks late with the new stuff? Is it important to have experienced developers involved? Do you want a larger or a smaller team? The answers to these questions should point you in the right direction for choosing the best technology for your application.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-227"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-225">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-226'
	>
	Infinum is proud to be enlisted in <a href="https://flutter.dev/consultants">Google’s Flutter Consultants Repository</a>. If you need a Flutter app that will elevate your business, <a href="https://infinum.com/contact/">get in touch</a> with us for top-notch development services.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/flutter-vs-native/">Flutter vs Native Development &#8211; What to Choose</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>