The Best JavaScript Frameworks for Mobile Development

javascript-frameworks

JavaScript frameworks are great tools for building mobile apps. They’re efficient, lower development costs, and tend to have the security benefits that come with large, active communities of developers.

Deciding to use a framework is an easy choice. The harder question is, which framework fits the project at hand?

Here’s Concepta’s take on four of the best JavaScript frameworks for mobile development.

jQuery Mobile

This lightweight mobile framework is based on the popular jQuery library. Developers use jQuery Mobile for mobile website development as well as apps. It’s touch-optimized with a focus on broad compatibility (Android, iOS, Windows Phone, and Blackberry).

Eliminating cross-browser issues is one of jQuery Mobile’s biggest draws. The framework supports a huge variety of platforms, devices, display sizes, and screen resolutions. There’s no need to use a device-specific programming language. Instead, developers can use standards like JavaScript, HTML5, CSS3, or AJAX.

Designing is simplified with the ThemeRoller customization toolkit. ThemeRoller offers a lot of tools that make editing themes easy, including drag and drop color and component changes. There are plenty of options for manipulating page layouts, headers and footers, and other design details.

Limitations

While jQuery Mobile makes it possible to perform complex scripting operations with little code, there are drawbacks. Performance varies by device. For example, jQuery Mobile apps lag noticeably on Android but run more smoothly on iOS.

Although the framework can outperform other mobile websites, it doesn’t outperform native apps. jQuery also lacks the full access to device features offered by other mobile app development tools.

NativeScript

NativeScript aims for a “write once, use everywhere” philosophy and comes very close. It’s an open-source framework for building Android, iOS, and Windows apps. With access to native API, it creates applications that behave like native apps on those platforms. Heavy code reuse between platform versions cuts the overall development time, too.

The framework supports the use of Angular, Vue.js, TypeScript, and Javascript. There are hundreds of NativeScript plugins, but developers aren’t limited to that toolset. They can integrate Node Package Manager, CocoaPods for iOS, and Gradle for Android.

Being open-source and free lowers the cost of working with NativeScript. Companies see extra savings through shorter development timelines.

Limitations

NativeScript aims for native performance. In practice, though, users experience some lag when opening apps. Also, critics point out that there are many inefficiencies in the NativeScript core that make debugging unnecessarily complicated.

It’s worth noting that plugins aren’t 100% verified and vary widely in quality. An inexperienced developer could accidentally introduce a vulnerability if they aren’t careful to check every plugin before use.

React Native

Facebook created this cross-platform native app development tool for its own use before releasing it to the public in 2015. Like NativeScript it features heavy code reuse, though the philosophy here is “learn once, write everywhere”. Once the tools are learned they can be applied to any platform.

React Native provides the native performance missing with NativeScript. It renders native UI elements for a “true to platform” feel that appeals to device loyalists while being less expensive to develop than a native app.

Real-time reloading leads to a smoother, more responsive development process where users can get faster feedback on changes as they work. This is one of the developer-friendly aspect of React Native that attract its large, active community of developers.

Limitations

Despite matching native apps in performance, React Native doesn’t fully support all native features yet. Users have to wait for Facebook to add those capabilities. There are generally fewer specialty and custom modules than some frameworks, as well.

The different design styles of Android and iOS will result in unpolished apps if a designer isn’t careful. Navigation is sometimes a little irregular regardless of skill.

Aside from technical considerations, some developers are wary of being totally reliant on Facebook. All signs point to a long future for React Native and Facebook is still putting resources into it, but the platform does still own the license and can theoretically revoke it.

PhoneGap

PhoneGap is a hybrid app development framework that is open source version of Apache Cordova. Users can build for multiple platforms with a single codebase, writing in HTML, CSS or JavaScript. Apps built with PhoneGap have decent access to device hardware. There are allowances for offline capabilities as well.

PhoneGap has a healthy library and a robust backend that makes development fast and easy. Developers don’t need specialty skill sets to use it; web development skills will give them access to all the framework’s features. Those qualities combine to make it a great tool for rapid prototyping on a budget.

Limitations

PhoneGap doesn’t offer a lot of UI widgets, but performance is far and away its biggest limitation. It suffers from noticeably lower performance than other frameworks.

Making the call

There’s no single framework that’s best in every case.

  • PhoneGap is great for rapid prototyping, but the performance issues may frustrate end users in the long run.
  • React Native and NativeScript take opposite approaches to cross-platform development which should factor into their choice for a specific project.
  • jQuery provides slightly lower performance but much wider compatibility, making it useful when end users can be expected to access the app through many kinds of devices.

Try not to go into a project with a favorite framework in mind. Look at the specific needs of the app, consider its purpose and who the end users will be, and discuss options with an experienced developer.

The wrong framework can lead to a frustrating, “square peg in a round hole” development process. The right one saves enough time and money to make it worth a little extra forethought.

Mobile Development Company in Orlando

As one of Orlando’s most renowned mobile development agencies, Concepta has a collection of clients who need fast, economical development.

Our developers stay on top of emerging JavaScript frameworks to be sure they have the right tool for any job, whether it’s building a client-facing app for The Learning Company or a sales portal for Anago.

Getting ready to build your next mobile app? Concepta has more than a decade’s experiences building dynamic enterprise apps for everyone from state-wide chains to national celebrities. We can guide you through the JavaScript frameworks that will help you meet- and beat- this year’s business goals. Reserve your free consultation today!

Request a Consultation

Why you should (or shouldn’t) use React Native

use-react-native

React Native is a powerful platform for building cross-platform apps that have the native look and feel users love, though it can struggle with CPU-intensive tasks.

Perfect cross-platform development is a hot topic in the software world. It’s essentially El Dorado: everyone argues about whether it really exists, and if anyone were to discover it they’d be rich beyond their wildest dreams.

Hybrid solutions are closer than ever- but they still can’t compare to the performance and reliability of native apps.

Enter React Native, a relative newcomer that aims to live up to the “write once, run everywhere” promise. React Native apps are native apps, just built using a different toolset, and their popularity is booming with developers and businesses alike.

Of course, while React Native is an incredible and promising tool it isn’t the long-awaited “map to El Dorado”. There are still limitations when it’s held up against native apps.

Read on to explore the power of React Native, find out where its limitations lie, and decide where it fits in a modern enterprise technology stack.

What is React Native?

React Native is a framework for building natively-rendered mobile apps using ReactJS, a JavaScript code library developed and maintained by Facebook.

The framework’s main selling point is its ability to create cross-platform apps that provide a much better user experience than the current hybrid options on the market, closer to that of native apps.

The Case For React Native

React Native takes a different approach than other hybrid and mobile web models. Instead of trying to simulate native performance, it takes actual native user interface (UI) building blocks and assembles them with React’s special brand of JavaScript.

Because these are the same building blocks iOS and Android use, React Native apps render like native apps. They have the same native look and feel device loyalists expect.

Developers have the option to write and embed custom native code, as well as writing in a mixture of native and React to get the exact function desired while maintaining the native appearance.

Native rendering is a huge benefit. Besides the obvious boost to user experience, it gives React Native a host of additional perks.

Cross-platform development

With React Native, one codebase runs on iOS, Windows, and Android. Only a small portion of the app needs to be customized for each operating system. It provides faster, more reliable performance than hybrid or web apps, too.

Development Speed 

In theory developers build their code once, in JavaScript, and React Native takes care of creating platform-specific versions. In reality the translation between operating systems isn’t perfect, but there’s still a huge chunk of the codebase shared between platforms.

That cuts development time for an app by as much as half while still supporting multiple platforms. If there’s already a web app, much of that code can be used with React Native to trim development timelines even more.

Developer productivity

React Native is a dynamic toolset with a lot of productivity features, like integrated components that provide “shortcuts” to common tasks. The framework also uses hot reloading, so developers don’t have to recompile the entire app every time they make a change.

Besides playing a role in React Native’s fast development speed, these features create an enjoyable, productive developer experience. Cutting out unnecessary interruptions helps developers stay engaged, which leads to better end products.

Cost

There are clear savings in both time and money when one app can be repurposed to cover all devices. There are fewer overall development costs and a lower up-front investment. Maintaining one code base lowers long-term maintenance expenses.

Even when the additional code to tailor the app for each operating system is considered, there’s much less work involved than in building multiple independent native apps. Plus, more efficient development means that the single React Native app is done sooner than comparable apps.

Add in the shorter time to market (and the ability to begin working towards ROI) and it’s easy to see how the savings add up.

The Case Against React Native

There’s a strong argument to be made that React Native comes closer to mimicking native apps that any of its current competitors. The idea to use natively-rendered components is an innovative approach with a lot of promise.

However, there are tradeoffs involved in making it work that mean React Native apps still fall short of native ones. Here are the major issues critics have with the framework:

Performance

The number one drawback to React Native is performance. It is better than other hybrid tools and web apps, but there’s no getting around the large overhead framework that slows down performance when measured against native apps.

For straightforward, simple apps and proof-of-concept work, the reduction in performance isn’t noticeable enough to have a huge impact. Using React Native for anything more complex could mean taking a hit to user experience.

“Reusable” codebase

As mentioned earlier, the “write once, use anywhere” motto isn’t entirely accurate. Developers have to configure the app for each platform. The size of that extra bit of code depends on the app’s function and the relevant operating system (some are more React-friendly than others).

In practice anywhere from 60-90% of the codebase can be fully shared. Although this still cuts development time by a significant amount, it does mean React Native isn’t a perfect platform-agnostic solution.

Size

React Native apps are bigger than native apps. This has a few unfortunate side effects. Users with older or economy model devices might not be able to handle it.

Those in developing markets often don’t have reliable access to 3G networks, so downloading large apps takes too much time. Finally, customers don’t like to use all their device storage on apps.

They might not download a large app, and when they start to run out of room for photos larger apps are the first to get deleted. Good developers have a few tricks for reducing the size of a React Native app, but it’s still something to keep in mind.

Quality Assurance Issues 

Debugging React Native gets complicated. Apps can be made with a mixture of custom native code, third party plug-ins, and regular React Native components.

It takes experience to navigate the app when tracking down the source of a problem.

Growing pains

The downside of being new and innovative is that React Native still has maturing to do. Facebook is actively tweaking and updating in response to user feedback, but they tend to be slow to update the software development kits (SDKs) when Android or Apple does.

Also worth mentioning is that as a younger tool, the documentation isn’t as user-friendly as it could be. It varies between highly dense in some places and too loose to be helpful in others.

That’s something that will ease over time, but right now it can be a hassle. New third-party libraries springing up are a mixed blessing: they offer more options for shortcuts but can introduce vulnerabilities into an app if they aren’t vetted carefully.

Exploring Alternatives

Looking at alternatives is a useful way to define a project’s priorities and decide whether React Native is the best fit. Here’s how it stack up against other formats:

  • Native apps: Native apps are the only practical option for graphics- and processing-intensive apps. They outperform every other type of app on the market. It takes time and money to build native apps, though, and most enterprise apps don’t need that level of performance to be successful.
  • Hybrid apps: Hybrid apps are essentially web apps with a native “wrapper”. They have the same advantages as React Native when it comes to development speed and cost savings. However, most hybrid apps can’t fully access device hardware, and their UIs don’t have a native feel.
  • Progressive Web Apps (PWA): PWAs operate within a browser. They can be given the feel of a native app and even can access some device features with the user’s permission. Their biggest draw is that users don’t need to download anything before use. On the flip side, PWAs don’t have full device access and use battery faster than other app formats. Without an app store presence they suffer in mobile search rankings, too.

use-react-native

Making the Call

When used for an app that plays to its strengths, React Native is a serious force-multiplier. It enables faster development, more responsive update cycles, and that all important “native UI” feel that consumers respond to.

It’s simple to build a basic, flexible app and scale it as usage grows. A lot of major players (besides Facebook and Instagram) use React Native in their apps, including:

  • Walmart
  • Airbnb
  • Wix
  • UberEATS
  • Soundcloud
  • Skype

Used outside its strengths, however, React Native adds an unnecessary layer of complexity. Developers unfamiliar with it can wind up with a large, convoluted, hard to manage codebase.

It isn’t well-suited to CPU-intensive apps, either. Trying to substitute React Native where a truly native app is needed leads to performance issues and the resulting degraded user experience. (It should be noted that a growing number of lighter VR/AR apps are being built with React Native, so the lines are blurring.)

Making the call on whether to use React Native depends on the app at hand. As a general rule it should be considered for projects where user experience and budget are equally important and when development speed is critical.

It should be ruled out for apps that are expected to be CPU-intensive (which is still the wheelhouse of native apps) or where the download barrier is a major concern (which might be better suited to Progressive Web Apps).

Best Mobile App Development Company in Orlando

When in doubt, consult with an experienced developer.

Orlando mobile development leader Concepta has experience with working with some of the biggest names in various industries to help them overcome business challenges, grow sales, and improve processes.

They know that each problem calls for a specific solution.

For example, the solution Concepta created for Kaluah Tours was very different from the one they built for FEMA (and vice versa).

Consultations take time, but they’re worth it. React Native has a host of benefits to offer if a specific app does fall within its “sweet spot”.

Are you ready to harness the power of React Native? Set up a complimentary appointment with one of Concepta’s developers to upgrade your mobile presence today!

Request a Consultation

React Native vs. Objective-C: The Right Tool for Software Development

react-native-objective-c

Choosing the right tools for software development is a tricky proposition. Each language and framework has its own strengths and weaknesses.

To complicate the matter, it can be hard to see where newcomers like React Native fit with old standbys like Objective-C.

Read on to learn how these tools stack up against each other- and which is right for your next software project.

What is Objective-C?

Objective-C is a general purpose programming language used in iOS and OS X operating systems and APIs.

It’s a superset of the C programming language and can call C++ code.

Programmers describe the language as a cross between C and Smalltalk, from which it derives its object-oriented capabilities.

Though Objective-C is one of the earliest programming languages, it can still be useful.

It’s still needed when working before iOS 7+, Mac OS 10.9+, and in all versions of tvOS and watchOS.

In Objective-C categories offer the ability to add functionality to an object without changing the actual object.

Programmers can define new methods and add them to classes for which the source code isn’t available.

Rather than calling methods, Objective-C uses message passing. It interacts with objects by sending messages.

The object then has options for how to interpret the message.

For example, it can invoke a method that matches the message, broadcast the message to a group of objects, forward it to a single object, or introspect it & apply custom logic.

Messages are implemented at runtime and don’t throw runtime errors when they go unexecuted.

Memory management is reasonably simple, with limited options for how to accomplish it.

Objective-C is entirely geared towards simplicity, in fact. There are no templates, multiple inheritance, or other features which lead to complexity.

Benefits of Objective-C

Simplicity

Objective-C is small, direct, and easy to learn.

Dynamic typing

There’s also support for static typing when desired.

Intuitive message syntax

Message patterns read much like spoken sentences interspersed with colons.

Automatic garbage collection

This is optional; programmers can use a reference counting system if they prefer.

Limitations of Objective-C

Steep learning curve

Developers need to have a grounding in C, so they effectively must learn two languages.

Mainly for iOS applications

Other platform implementations exist but aren’t really used

Older language

Objective-C is vulnerable to being phased out as Swift gains more attention and usage.

React Native: A Better Path to Cross-platform?

React Native is a mobile app development framework that allows cross-platform apps to be written entirely in JavaScript.

It’s an open source project started by Facebook. React Native works a lot like React, which excels at single page web apps.

Apps built with React Native don’t run in a web view like hybrid apps.

They’re cross-platform mobile apps from the ground up and when finished are similar to those built using Objective-C or Java.

Developers can reuse the codebase (or at least part of it) between Android and  iOS. Actually, about 90% of the codebase can be reused across platforms.

Another benefit of React Native is interoperability.

Developers may write components in Objective-C, Java, or Swift. It features hot reloading, too, so apps can simply be reloaded instead of needing to be recompiled.

Components are simple to build if developer can’t find one for a particular use.

They can be edited without affecting child components thanks to React Native’s downward data flow.

Benefits of React Native

Faster development

Smaller teams are needed, and development timelines are shorter.

Mobile-focused

React Native apps perform better than many hybrid apps.

Active and engaged community

The huge community of enthusiastic React Native developers is constantly adding to their catalogs of freely-available components.

Limitations of React Native

Newer framework

React doesn’t have a component for everything yet, and there aren’t as many skilled developers available.

Not suited for heavy graphics and calculations

Objective-C outperforms it here.

Slow

Performance can be lower than with native apps. Developers can get around this by incorporating native modules.

Technically in beta

Some developers fear React will be abandoned, like Parse was.

How They Stack Up

Comparing Objective-C and React Native is a bit of a mis-step. They’re different tools for different jobs.

Objective-C is mainly for iOS and OS X while React Native is meant for cross-platform mobile development.

Objective-C has its loyalists and is still a decent choice for iOS apps. However, there are very few reasons not to move to Swift when working solely for Apple devices.

When going cross-platform, React Native is a solid alternative to hybrid. The concern now is longevity.

All signs indicate Facebook will continue to maintain React Native but longevity is always something to consider when using a new tool.

No tool is always the best for every project. If your company is working on a mobile app, set up a complimentary appointment with Concepta’s developers to discuss the best tools for your specific purposes.

Request a Consultation

How Does ReactJS Solve the Problem of Data Changing Over Time?

reactjs

In the five years since React was introduced by Facebook developers, more and more industry players such as Netflix, Yahoo and Atlassian are using it. What these enterprises have in common is a need to handle vast amounts of data that changes over time, especially when a company’s value proposition depends on flawless handling of streaming video.

How Does ReactJS Work?

First of all, it’s important to understand the differences between the new React Native framework and the original React.js library.

The original React.js was created as a JavaScript library, primarily as a front-end interface that ran on your server.

React creates composable user interfaces with reusable components that react to data changes. Instead of working with templates or HTML directives, React components call a render method that produces a string of markup, then injects this directly into your document.

Whenever the data changes, React calls a new render method.

As it grew, it expanded capabilities for building full web applications. Creative programmers discovered how React.js solves problems of better handling of dynamic data for faster response times. It lets you design simple views for every application state.

React.js, as its name implies, responds to data changes instantly and renders the right components for a smooth user experience.

How Does React Native Work?

Initially, problem-solving with React.js was limited because it’s not a full mobile framework. In response, React Native was released in 2015. React Native compiles to native app components so you can build your apps in native iOS or native Android.

It’s committed to the “learn once, write anywhere” model, although you have to come in with some app-building experience.

In addition to having strong JavaScript knowledge, you should have experience developing wrappers for native components and APIs in the target natural language. Of course, you can still use React.js for building out these components because React Native implements React.js behind the scenes.

What Does React.js Solve Other Than X-Platform?

Netflix programmers explained why they chose React early last year. The problem was that users, particularly those on mobile platforms, tend to have variability in their networks.

Latency and slow load times were causing users to bounce, even though Netflix didn’t have any control over the networks they used.

Users needed a faster way to download and process initial markup, scripts and style sheets as data streams changed. On top of network latency, the app startup performance was slowed down by DOM elements based on the parsed JSON payloads.

What attracted Netflix to React.js was the way it handled customized user interactions and rendered code for A/B testing of its streaming services. Netflix saw huge improvements in the initial load time of its applications, the performance during runtime and rapid scalability of new apps.

React.js delivered isomorphic JavaScript (on both the server and the client), virtual DOM rendering with a diff algorithm and support for compositional design patterns using Mixin APIs to deal with frequent changes in the data.

Where Can You Go to Learn More?

Here’s a great React.js tutorial directly from Facebook developers, with a link to source code on GitHub. One thing you can be sure of is that your apps will have to handle more data, from more sources and in tighter refresh cycles.

You should get ahead of the curve now to avoid server overloads and downtime from the flood of data coming to an app near you, sooner than you think.

If you’re looking for someone to build an app for you or if you still have questions, contact our team at Concepta and we’ll be able to help.

Request a Consultation