If you want to start making mobile apps, there are three main languages to choose between: Java for Android apps, Swift for iOS apps, or JavaScript for cross-platform apps.

But wait, isn't JavaScript for web development? Yes, it started off that way, but has evolved quite a bit over the last decade. You can now create a web app in JavaScript and bundle it with a browser engine that acts like a mobile app. These are called "hybrid" apps.

More recently, some JavaScript frameworks can take JavaScript code, compile to a mobile platform's inherent language, and run as a true mobile app. These are called "native" apps and are preferable to hybrid apps because they often have better performance.

In this article, you'll learn about seven battle-tested JavaScript frameworks that are equipped to create mobile apps using one of the two methods mentioned above.

1. React Native

React, developed and maintained by Facebook, is one of the most popular JavaScript web frameworks currently available. If you haven't given it a try yet, check out these awesome React tutorials to get started. There's a bit of a learning curve, but it's absolutely worth it.

React Native is a related framework, also by Facebook, that lets you create mobile apps in JavaScript using React principles. App UIs are designed with HTML-esque layout tags and CSS-like stylesheets, so if you're a web developer who wants to try a hand in the mobile arena, this is the best way to do it.

As implied by the name, React Native creates native mobile apps. It's one reason why so many modern developers love React Native, because its apps tend to outperform apps written in other JavaScript frameworks. The downside? You'll have to maintain separate branches for each mobile platform with platform-specific tweaks. It isn't "write once, run everywhere."

2. Angular

Angular is the most popular JavaScript web framework available right now. Created by Google and first launched back in 2009, it has amassed a huge community of users with its unique but easy-to-learn approach to single-page web app development.

If you stick to Angular proper, you can make hybrid apps that offer native-like speeds and experiences. The two-way data binding is one of its most notable features, and the framework is robust enough for enterprise-level use. After all, it's maintained by the esteemed Google!

While you can use Angular for native mobile apps, you'll have to couple it with another framework like NativeScript or Ionic. Both of them are covered below.

3. NativeScript

NativeScript is a JavaScript-to-native framework for mobile apps with a big emphasis on code reusability. But perhaps the most interesting thing about it is that you can use one of three languages for NativeScript projects: JavaScript, TypeScript, or Angular.

If Angular is your framework of choice but it's too slow for your particular app and you need to wring out more performance, then NativeScript may be the solution. Don't like Angular? That's fine. Use the NativeScript Core framework to write once and deploy to both iOS and Android.

To create and design interface elements, you'll use a special HTML-like language for laying out various components and CSS for customizing the look and appearance of components.

4. PhoneGap

PhoneGap is an open source framework that allows for fast development of hybrid mobile apps using JavaScript (for the app logic) and HTML + CSS (for the interface and design). It's based on Cordova, which is also open source but lacks many of PhoneGap's bells and whistles.

Two things make PhoneGap great for mobile development: first, the PhoneGap Developer app (which lets you test and preview builds on mobile devices), and second, the PhoneGap Build service (which packages and deploys apps for you). You only have to write once and PhoneGap can deliver apps to iOS, Android, and Windows Phone.

While PhoneGap Build is free for open-source projects (code must be pulled from a public GitHub repository), you only get 1 private app with a 50 MB size limit. For $10/mo, you can bump that up to 25 private apps up to 100 MB in size each. Creative Cloud subscribers get 25 private apps up to 1 GB in size each!

5. Ionic

The Ionic framework is considered by many to be the easiest framework to learn for JavaScript mobile development. Because it creates hybrid mobile apps, you don't have to worry about platform-specific tweaks (you can customize if you want). Write once, run everywhere.

Ionic also comes with a tool called Creator, which lets you create and design interfaces for your mobile app using drag-and-drop placements. This is much easier than trying to piece together a UI in HTML or an HTML-like markup language. As such, Ionic is great for newbies.

Once you've built the front-end of your app in Ionic, the framework deploys to each mobile platform using Cordova. Most of this process is handled behind the scenes and it's very easy even for first-timers, so don't worry if it sounds complicated. It isn't.

6. Meteor

Meteor's claim to fame is two-fold: first, it's a full-stack solution (integrates frontend, backend, database, clientside, and serverside development), and second, it offers real-time two-way data binding (if something changes in the backend, it's immediately updated in the frontend).

And while it's mostly used for web apps, Meteor can be used for hybrid mobile apps. Like Ionic, it uses Cordova the build your project and deploy for iOS and Android. Unfortunately, as of this writing, mobile export is only available on Mac and Linux (unsupported by Meteor for Windows).

7. Phaser

If you'd rather create mobile games, you'll need a framework meant for game development. Such frameworks do all the hard work so you can do complex tasks in one or two lines of code (e.g. load an image or move the world camera). And Phaser is easily one of the best in its class.

Phaser is opinionated -- you have to structure your code in a certain way -- but its opinions are based on decades of tried-and-true game development practices. The learning curve is relatively shallow and you can have your first game up and running within hours.

Exporting to mobile isn't a built-in feature so you'll have to do it through a tool like Cordova. However, plenty of Phaser tutorials exist so it shouldn't be too difficult to figure out once your game is ready to deploy.

What Kind of Mobile App Are You Making?

I want to be clear: these are NOT simply gimmicks that exist for newbies who can't bother to learn "real" languages like Java and Swift. JavaScript mobile frameworks are used more often than you think by real companies for real apps with real customers.

And that's testament to how good these frameworks are. Look through a list of popular Android apps or popular iOS apps and you probably won't be able to tell which ones are written natively or written in JavaScript.

One last tip: once your mobile app is done, check out these tips for helping it go viral. After all, what good is making an app if no one ends up using it? Good luck!

Which frameworks appeal most to you? Did I miss any good ones? What kind of app are you hoping to make? Share your thoughts and endeavors with us down below!