Reactnative_flutter_rebeldot

Flutter & React Native. Which one will you trust for your next cross-platform mobile application?

Year by year, mobile application development gets more traction and popularity. In 2019, numbers showed that there has never been a better time for building a mobile application than now. Here are some interesting stats and numbers you can read about in one of our earlier articles on mobile application trends you should be aware of in 2020.

As the development of mobile application increases, the alternatives for faster development are on the same ascending trend and competing for popularity.

Thus, if a few months ago we were discussing the differences between React Native, Swift, Java and Kotlin for mobile application development, we’re here to shed some light over Flutter and its capabilities for mobile app development.

At RebelDot the decision of going for one or another technology depends on the specific digital product’s need. At the same time, we know that it’s essential for business owners to know the answers to some of the critical questions in regards to their product. Hence, we thought it would be a good time to state the case of Flutter as a framework for developing mobile applications, in comparison to React Native.

What is Flutter?

Officially released on December 2018 and created by Google, Flutter is a UI toolkit for building beautiful, natively compiled applications for mobile, web and desktop* from a single codebase.

As an open-source mobile UI framework, just as React Native, Flutter allows you to create a native mobile application for Android and iOS, using one single codebase. Using Flutter, today, you can use one programming language and one codebase to create two different apps.

The programming language used to develop mobile apps in Flutter is Dart. Dart has its main focus on front-end-development and can be used to develop mobile applications; its syntax can compare to the one of JavaScript.

Flutter comes with two important parts: a Software Development Kit (SDK) that helps you compile your code into native machine code (for iOS and Android) and a UI library that is a collection of reusable UI elements.

Flutter.dev highlights some of the new framework’s most essential features as being:

Fast Development & Quick Compilation  – Google says that you can now paint your mobile applications in milliseconds. A more realistic scenario would be that thanks to Flutter’s Hot Reload, you can change the code in your app and observe the changes in real-time, a feature that is also available for React Native.

Fast Rendering Designs  – Flutter allows you to quickly ship features, offering a focus on the experiences of the end-users. Its layered architecture allows full customisation. 

Flutter claims to offer Native Performance  –  F lutter’s widgets incorporate all critical platform differences such as scrolling, navigation, icons and fonts, and your Flutter code is compiled to native ARM machine code using  Dart’s native compilers. Thus, Flutter gives you full native performance on both iOS and Android. (Google)

What is the difference between React Native and Flutter?

User Interface on Flutter vs. React Native

Flutter  - Having one single codebase as input, when it comes to User Interface, it is safe to say that mobile apps built with Flutter look and behave very similar on both iOS and Android. 

If however, you would like your mobile application to imitate the platform design, you can make use of Material Design for implementing Google’s Design and Cupertino to imitate the native iOS application design.

React Native  – React Native uses native components underneath. This means that a button on an iOS device looks and feels like a native iOS button, and the same principle applies to Android. This means that after every OS updated, some of the components of your mobile application automatically updates. 

However, if for reasons you would want your mobile application to look and feel the same on all devices and operating systems, consider making use of third party providers like  React Native Paper

rebeldot_fluter_vs_reactnative

Time to market.

React Native, as well as Flutter, should most probably be just as fast in comparison with native development

Remember how we said that React Native uses native components under the hood? Due to this reason, it’s worth mentioning that if your React Native app uses native elements, there might be the need for separate optimisation, which could prolong the development of your app.

The real advantages, and when to choose React Native of Flutter.

While Flutter is rapidly growing, fledgeling technology, React Native has the competitive advantage of 5+ years on the market. 

While great tech communities support both technologies, React Native stands out with its maturity and proven success. 

Both React Native and Flutter are renowned as being relatively easy to learn. If you already have developers that are familiar with Dart as a programming language, then you might want to try Flutter for developing your cross-platform mobile application. If your developers are fluent in JavaScript, you shouldn’t think twice and have them onboard React Native.

software_engineer__flutter_react_native

According to GitHub, in 2019, JavaScript was seen as the most popular programming language, followed by Python. It’s probably why React Native maintains its increased popularity.

React Native is known to have a fairly fragile UI. We mentioned how React Native stands on the building blocks of native components, and while this should assure you of the fact that the app benefits from constant updates, this might also crack the UI of your applications here and there. The good news is that it rarely happens to be the case. Still, if you want to build your mobile application’s GUI using native components, React Native is the best option.

While the differences between React Native and Futter as cross-platform development frameworks are minimal, it is essential to understand that every digital product is different; thus, its needs might as well be different. Before deciding in regards to using React Native or Flutter for building your next mobile application, make sure you consult and seek advice from software developers and engineers that have the needed experience.

🤓Were you looking for information we did not cover in this article? No problem! You can always contact us and chat with our mobile engineers. We love offering a helping hand.

✍️Are you a mobile development savvy and would like to contribute to this article? Drop a line at marketing@rebeldot.com and we can’t wait to hear your input on the performance on React Native vs. Flutter.

Trending Apps and technology 2020

Building a mobile app in 2020? Here’s what to look at.

Looking back at the past year from a technology perspective, all we can say is that 2020 should be at least as ground-breaking as 2019. But with a lot of technology trends & buzz words being promoted around, which one will you actually trust to lead the strategic direction of your next mobile app?

If you ask us, you shouldn’t trust any of them. At least not until you are 100% sure that whatever the new concept or technology you are trying to adopt in your new mobile application, it is what your users really need. We know Blockchain, AI, Machine Learning and VR all sound cool and cutting edge, but don’t just use them to attract more eyes to whatever it is that you are building. It won’t last.

For the past decade, at RebelDot, we have built and worked with over 40 startups and companies around the world, and if there is one valuable learning we could share, is that the real success of your digital product is hidden in the PROBLEM you are solving for your users, or, in other words, the idea behind your web/mobile application. It has to be relevant to the market you wish to penetrate. Now, of course, we are not talking about the fantastic user interface you are imagining for your mobile app or that one unique feature you are planning to revolutionise the industry with. It’s more about the weight of the value you wish to place on the market by launching your new web or mobile app.

Do you have what it takes?

Before you start building your next mobile application, here’s what we recommend you ask yourself:

What is the problem I am solving with this web or mobile application?

Whom am I solving this problem for & who are my users?

Checking these two important questions will provide the right framework for starting to build a digital product that has great potential for healthy scaling. Now, of course, it is a good idea to make sure you check to pulse of the technology ecosystem from time to time. You want to make sure that if there is a new technology that might decrease the cost of your application, ease the experience of your users of simply help you get the most out of your new built, you know of it.

Now might be the best time to start building a mobile application. Here's why:

In Q3 of 2019, iOS lead consumer purchases growing 95% over Google Play.

Beginning of 2019, TechCrunch reported that the global app revenue continues to climb, thanks to the growth of the gaming industry and of the subscription economy. (TechCrunch)

In 2019, App Store users spent $14.2 billion, up 22.3% from the $11.6 billion they spent in Q3 2018. Google Play generated $7.7 billion in revenue, up 24% from the $6.2 billion spent in the year-ago quarter. (TechCrunch)

Worldwide gross app revenue

When it comes to app downloads, according to App Annie, Google Play and iOS downloads grew over 10% in Q3 of 2019.

While iOS downloads remained stable in 2019, Google Play grew its downloads by 10% to nearly 23 billion. Google Play leads iOS in downloads by 175%, with non-gaming apps accounted for over 60% of downloads across both stores.

In 2020, Global mobile application revenues are projected to generate a revenue of $188.9 billion via app stores and in-app advertising. (Statista)
Mobile app revenues

Already visualizing your new application being downloaded by thousands of users? Let’s shed some light over the 2020 mobile and web application trends & new technologies that might help you get there.

Blockchain Technology

Being a pragmatic yet revolutionary technology, blockchain goes beyond cryptocurrencies and bitcoin. With its capabilities of creating more transparent and secure environments while saving fair amounts of money, it has reached the performance of impacting a variety of industries and sectors by changing how contracting works.

Some of the areas in which blockchain is seen to bring the most value are secure sharing of medical data, music royalties tracking, cross-border payments, real-time IoT operating systems, personal identity security, anti-money laundering tracking system, voting mechanisms, original content creation, crypto exchange and real estate processing platforms.

Blockchain + IoT = ❤

We already know that blockchain is a standalone disruptive concept for every tech aficionado out there. But have you thought of combining it with IoT? It might bring some considerable improvements to the way transactions are made, including some decreasing of risks.

There is a smarter way to do smart contracts: Ricardian Contracts.

What is a smart contract? According to Investopediaa smart contract is a self-executing contract with the terms of the agreement between buyer and seller being directly written into lines of code. The code and the agreements contained therein exist across a distributed, decentralized blockchain network. The code controls the execution, and transactions are trackable and irreversible. (Investopedia)

In simple words, they allow trusted transactions between anonymous parties without the presence of any central authority.

Smart contracts are great and all that, with one minor issue — they are not legally binding, so it is pretty hard to build a legal case against an existing fraud. And here is where Ricardian Contracts step into the scene.

While Ricardian Contracts have first been introduced in 1995, they somehow managed to penetrate today’s blockchain scene, by having this unique trait of being digital documents that can be both understood by humans and machines. This means you and your lawyers should be able to read it and perfectly understand it.

According to 101 Blockchains, a Ricardian contract is a human-readable legal agreement that once agreed upon and signed by both parties, gets converted into a machine-readable contract to define the intentions of both parties. (101 Blockchains)

A fundamental difference between Smart and Ricardian contracts is that while one (Smart) executes an agreement without being legally valid, the other one (Ricardian) records agreements between parties, having a legally binding character that is valid in court.

Artificial Intelligence is here to stay.

While AI has been the technology hit of the 2010s, it looks like it is here to stay.

AI in entertainment and media. Have you seen Robert De Niro in the Irishman?

If you kept an eye on the result of AI in creating music or any kind of art that is out there, you will probably agree with us when we say that AI has a long way to replace humans from creating any form of art that is actually enjoyable.

If like us, you spend some of your time binge-watching on Netflix, you might have seen Rober De Niro’s extreme de-ageing in The Irishman. Like it or not, de-ageing or ageing of human faces is now possible with the assistance of AI, and it’s safe to say it’s a tiny bit of all the transformation AI is bringing to the entertainment scene.

Robert Deniro - AI
On the left, Robert De Niro’s original performance in The Irishman. On the right, his de-aged face as it appears in the film. Source: Wired & Netflix.

In 2020, we are already familiar with personalized recommendations powered by AI. Getting back to Netflix, they personalise the content stream you see on the go, and this is not even a secret anymore. Processors are now engineered in such way they are capable of generating real-time analytics, offering the content an technology that we consume on a daily bases an important and personal twist.

React Native and Flutter continue replacing Kotlin and Swift for Native Android & iOS development.

In one of our past articles, we covered a few important aspects of how React Native has already disrupted the mobile development scene.

Being supported by Google, Flutter, a fairly new name on the mobile development scene is seen to acquire more authority and trust from developers in eastern Europe and around the world. It promises the building of mobile apps in record time.

Relator.com, Tencent, New York Time’s Ken Ken puzzle, Square and Google Assistant are just of few of the apps that are already using Flutter.

Internet of Things.

Today, internet-powered things are everywhere. It’s because we grew to love things powered by the power of the internet & connectivity and this is clearly reflected in the way investments are growing year by year as technology giants are developing more IoT apps.

Hint: If you are looking to get your hands dirty with some IoT this year, take a look at the impressive market size of smart home devices. Here is something we found while browsing around. It is from Strategy Analytics.

Ownership of Smart home devices in US homes

Final words.

Today, more apps are being released in the App Store and Google Play store than ever. While this could be both good and bad for your next mobile application, it is getting more clear that in order to craft a digital product that stands out on the market, you will need more than cutting edge technology or clinging to the hottest technology trend that is out there. Standalone, these two can’t do enough in order to ensure the success of your business on the market. Take a look at a software development process and before starting to tech around, make sure you spend a great deal of time in researching the scope of your digital application.

🚀Did reading this article made you start building your mobile app with RebelDotWe’d love a tech riddle! Reach out and let’s talk about building your awesome digital product, together. Make sure you getintouch@rebeldot.com, and we will get back to you in no time.

🤔Reading this made you want to be part of the RebelDot team? We’ve got great news! We are in search of creative engineers that can help us ship digital products. Check our openings, here.

UX Prototype

Prototype first. Fail fast. How to ship products that delight.

You want to build and launch an awesome digital product, or thinking about redesigning? You’re in luck! — We’ll talk about our UX process at RebelDot and why putting emphasis on research, validation, and prototyping will make or break your web or mobile app.

According to this research, by the time you’re done reading this article, 40 new digital products & startups will have been created. That’s 1 startup every 10 seconds. Truth is, 90% of them will fail in their first months, while others will go around for years chasing their tail without actually doing something about the sinking ship.

The good news is that you don’t have to be one of them. We’ve built dozens of products and even though there is no one size fits all, following a well-structured UX process will guide and take you closer to launching a delightful digital product that people want to use. Think of it as a fitness program: if you stick to it, put in the work and avoid shortcuts, you’ll end up with the results you have always wanted.

Before getting into this, it’s safe to say that following a UX process will definitely work to your advantage. Still, as every product is different in its own way, understanding that a good design process adapts to certain product needs is vital, therefore the needs and goals should define the way of approach.

  • The core part of our approach here at RebelDot is going UX first and building products through an iterative user-centred design process. Through iterative loops, we design, build and validate ideas, flows, journeys, processes, and test disruptive ideas that might never see the light of day. However, none of this would be possible without prototyping.

The RebelDot UX process looks like this:

UX/UI Process

From the automotive industry to food, health and of course digital product development, prototyping serves as the keystone in releasing successful products. Simply put, think of prototyping as the most effective step to accomplishing and validating things with minimum effort.

The primary purpose of a prototype is to validate if a process or flow works and lives up to the requirements, hitting the target goals. Essentially, the sooner you realise you need to adjust, the better. Sure, if you want to take the alternative route, you’re welcome to go forward with getting engineers to develop your idea and after at least 50k spent in 6 months time realise you built a product that no one will use. Historically speaking, this is a moment when many companies reach out to UX designers to fix their product but unfortunately fixing it only means rebuilding everything.

The most important lesson you can learn when building a product is that you’re not building the product for yourself. The primary focus needs to be on your users, therefore you must address their needs, frustrations and objectives, enabling them to excel through the product and reach their goals.

The tools of the trade

There isn’t one do it all prototyping tool. The tool used should facilitate building a prototype to fit the desired scope in the fastest time. Overextending will result in delays in delivery and validation time, therefore the versatility of the tool should match the requirements, and keep the effort to the lowest. You can’t call it rapid prototyping if it takes an eternity.

Prototyping models

Depending on the stage of the product, there are a few prototyping models we opt for to make sure the journey suites needs and hits the goals.

Best UX/UI team- RebelDot

01. Exploratory prototypes

We build exploratory prototypes when the product team, stakeholders or clients have an idea and want to visualise it in a real, tangible form. We start off the ideation process, reflect the objectives on our target user’s needs and define the goals and actions needed to get there. The idea can be a standalone idea, an extension of the current product which could become a candidate in the roadmap or a new way of approaching existing actions in the current system.

02. Validation prototypes

Validation prototypes are the result of thorough research, need mapping and are built based on the whole set of knowledge gathered throughout the research and iterative phase. The prototype is based on well-defined flows, user needs, goals and motivations and sets out to solve problems and reach key objectives. Its purpose is creating a realistic enough experience that can be put in front of users to be validated through user testing, so it can set the route for the next round of iteration.

03. Visionary prototypes

These are the coolest, most challenging, uber-cool prototypes that will, most likely, never see the light of day. The purpose of a visionary prototype is to test truly disruptive ideas that are so crazy they might never get built into an actual product. However, by forcing ourselves to think so far outside the box, we innovate and create solutions that may be applied further down the line. Think of F1 cars: — their purpose is to push the boundaries of motorsport through innovation, which will later become part of our future.

Conclusion

Designing a product without the prototyping phase is like wanting to build a car from scratch based only on your imagination. You will most likely end up missing the steering wheel. Start with listening to your users, launching assumptions and hypotheses. Reflect on needs and objectives, do the research and concentrate all these efforts in prototypes which can be validated with real people.
Prototype first, validate often and fail fast. Drive the product experience through your users to build and launch a product that delights.

🚀Did reading this really make you want to work with Tom? Reach out and let’s talk about building your awesome digital product. Make sure you getintouch@rebeldot.com, and we will get back to you in no time.

🤓Want to read more? Check out this article on How going UX first is a necessity for your digital product’s future.

🤔Reading this made you want to be part of the RebelDot team? We’ve got great news! We are in search of creative engineers that can help us ship digital products. Check our openings, here.

Blockchain

Challenges of adopting blockchain

Blockchain is the new kid on the block (pun intended). There’s a lot of buzz around it, about how disruptive it is, that it will change a series of industries and will start a wave of innovation.  You might have considered using it in your next product or project, but not sure what your approach should be? Let’s see what you can expect down the road!

Disruption always comes at a price, because you are bringing something radically new to the table. Adopting something new takes time. It implies getting out of the comfort zone – for you, for your team, for your users, for the industry. Therefore, disruption can happen at a tipping point: when the need to innovate and the benefits of disruption will outweigh the inconveniences of the process. This is also how blockchain itself was born: to solve a problem.

So far so good. It sounds exciting. Except, it comes at a price. Blockchain solves a series of problems in an innovative way, thus using it implies a paradigm shift. This paradigm shift, although very promising, comes with its challenges. Some of these are not obvious from the start, because disruption questions the very same things that we’ve got accustomed to and take for granted. Let’s dive in!

You operate in a decentralized environment.

Blockchain is successful in delivering its promise to create trust in a trustless environment by making sure that no central party is controlling the information on the blockchain. Not even you! This transfer of control and ownership comes with a series of considerations:

  1. How do I achieve compliance with various regulations (e.g. GDPR)?
  2. What happens if I do an honest mistake when adding data to the blockchain?
  3. What if I have new requirements and I must adjust existing data?

Obviously, there are already a few techniques to cope with these challenges, just keep in mind that these usually imply a change in the way you do things as opposed to centralized systems.

Your users need to communicate with the blockchain.

In a purely decentralized environment, users should not need to communicate with any central authority, but with the blockchain itself. This is not a trivial task and currently needs quite some effort from your users’ part. To consume decentralized applications, you need specialized software. Your users need to be aware of that and they will need to go through a learning curve themselves.

On the other end of the spectrum, users are already accustomed to certain ways of interacting with software. Depending on your use-case, the real value that you can bring is finding a way to combine centralized technologies with blockchain in such a way that you can offer your users all the good stuff that they are accustomed to, while also leveraging the blockchain promise. And walking that fine line takes some fiddling with the technology

Developers need to adjust to the new paradigm too.

Because of the nature of the technology, developing blockchain applications resembles developing firmware: once you release it, it’s out there on thousands of devices. Devices over which you have very limited (if any) control. Thus, the price of updates is very high. As with firmware, get it right the first time, or you will pay the price later. This also implies that a series of best practices that developers are usually familiar with might not fit well: continuous integration, incremental builds, Agile itself. You’re more than welcome to use these internally, but your first release should be as complete and stable as possible.

Blockchain is immutable.

This also means that you need to deliver quality software from the start. And the implication is that you need to budget way more design and testing time than in centralized projects. They say that software testing cannot prove that a piece of code has no bugs, it can only prove that known bugs have been fixed. Thus, quality starts with software design. You should budget enough time to consider all the corner cases, limitations, long term consequences and security implications. You should have strong quality metrics.

Having a dedicated testing team is also important. Your developers will start with a great design and their code might be of excellent quality, yet bugs will slip through the process. This is because it is hard to accurately test your own code. People tend to build a mental model for solving a problem, and developers will use the same mental model for testing their code. In other words, they will look for bugs using the same mental model with which they’ve created them in the first place. This is human nature. A dedicated testing team can make sure that software is verified using a different mental model. Budgeting plenty of testing time is also important. The rule of thumb (that might shock you at first) is ‘5 to 10x’: for every week of development consider 5 to 10 weeks of testing. Software testing for blockchain is not just an aspect of quality assurance, but a way of risk mitigation.

Security is paramount.

Your code is accessible in some shape or form to everyone running a blockchain node (and in case of public blockchains to literally anyone). Thus, security plays a crucial role in your development lifecycle. Even more, once out there you cannot really modify it. If there is a security bug, bad actors can exploit it and there is not much you can do about it, since you cannot just patch your code, like you would in a centralized environment.

The technology and tool set are not yet mature.

The ecosystem is still in its early stages and while new implementations and tools appear quite frequently, these are not as stable as the offering on conventional technologies. Often, developers need to face the reality that something that is trivial to achieve using other technologies will turn out to be quite complex with blockchain.

Blockchain is not particularly fast.

The main characteristic of blockchain is immutability and security. By design, blockchain solutions will favor these over performances. Of course, the technology is rapidly evolving, and new solutions are proposed to boost blockchain performance, but today’s reality is that blockchain is not as performant as other centralized technologies.

At this point, you might incline towards giving up on blockchain, but the truth is that there are solutions and practices in place to help you deal with the challenges that you might face. The key takeaway is that blockchain not only disrupts the fields it is used in, but it has similar effects on the way you build your product as well.

So, is it worth it?

As with every technology, the answer is: it depends. Blockchain can indeed bring innovation to a whole series of industries and it has a lot of potential. In some cases, it really is unparalleled and offers advantages that simply cannot be matched by any other technology on the market. But we should use the right tool for the job. This technology is particularly good at making sure that information cannot be tampered with and there is a complete and immutable history of events, a permanent record of sorts. If that is something that you are after and you can build value on it then blockchain will prove to be a great fit for you.