TJ VanToll

TJ VanToll

TJ VanToll is a front-end developer, author, and a Principal Developer Advocate for Progress. TJ has over a decade of web development experience, including a few years working on the jQuery team. Nowadays, he spends his time helping web developers build mobile apps through projects like NativeScript. TJ is @tjvantoll on Twitter and tjvantoll on GitHub.

Recent Articles


How to Launch Android Emulators and iOS Simulators From the Command Line

I use the iOS Simulator and AVDs (Android Virtual Devices) heavily, and was getting frustrated with the need to manually launch the two from Xcode and Android Studio, respectively. So I spent a little time setting up commands that let me launch these tools from my terminal. I named them ios-simulator and android-emulator, and here’s […]

  • August 8, 2017

Building Native iOS and Android Apps With Vue and NativeScript

Vue is a popular JavaScript framework for handling the view layer of your application. NativeScript is technology that lets developers use JavaScript to drive completely native iOS and Android applications. Together the two technologies let you build mobile apps with the simplicity you expect from Vue, and the power you expect from NativeScript. The NativeScript […]

  • July 17, 2017

A Love Letter to CSS

When I tell coworkers of my unabated love for CSS they look at me like I’ve made an unfortunate life decision. “Let’s sit down TJ, and talk about the poor choices you made during childhood that set you up for failure.” Sometimes I feel that developers, some of the most opinionated human beings on the […]

  • May 30, 2017

Why Do You Need NativeScript?

There are more ways to build mobile apps than there are Nicholas Cage DVDs in the bargain bin at your local Walmart. Because there are so many choices, it can be difficult to tell which frameworks will improve your development processes, and which will turn out worse than Nicholas Cage’s twelve <=10% Rotten Tomatoes movies. […]

  • May 22, 2017

A Step-By-Step Guide for Building Master-Detail User Interfaces with Angular

NOTE: This article was updated to support Angular 5 on December 14th, 2017. The master-detail design pattern is an incredibly popular way to build mobile apps, regardless of whether you’re building for native or for the web. Angular is well suited for implementing master-detail interfaces, as it has a number of the necessary features you […]

  • March 2, 2017

JavaScript in 2017 – Beyond the Browser

This is the third part of a 3 part series on what to expect from JavaScript in 2017 taken from our whitepaper, “The Future of JavaScript: 2017 and Beyond“. You can download the entire whitepaper for free at To read about our predictions for 2018, please refer to our newest whitepaper, The Future of […]

  • February 15, 2017

In Defense of Large Native Apps

Native mobile apps binaries can be big, and for developers, especially web developers, it’s easy to poke fun at just how large these applications are. And for good reason. Web developers have been trained to watch every byte they put in their applications like a hawk, as numerous studies have shown that slower web apps […]

  • February 8, 2017

What is Angular?

Every once in a while it’s worth taking a step back and looking at the development world from a beginner’s perspective. Here at Progress, we use Angular a lot. Angular is a fundamental building block in both our web framework Kendo UI, as well as our mobile framework NativeScript. As such, we get a lot […]

  • January 18, 2017

The Benefits of Coding Side Projects and How to Get Started

Here at Progress we’re huge fans of side projects. Most of us have built a variety of projects for many software ecosystems over the years. So for today’s Slack we wanted to talk about what we’ve learned from our side project experiences, and what we can recommend to developers who want to get started. Specifically, […]

  • December 19, 2016

Cross-Browser HTML5 Form Validation is Finally Here! Now What?

Last week the Safari team released a new Technology Preview, and the release contained a feature that caught my eye. OMG, THE NEW SAFARI TECH PREVIEW HAS FORM VALIDATION SUPPORT! — TJ VanToll (@tjvantoll) December 7, 2016 I’m irrationally excited because this is more than just a mundane feature shipping in a random […]

  • December 13, 2016

The Diminishing Use Case of Hybrid Apps

PhoneGap is the most comprehensive, and most influential polyfill in the history of web development. PhoneGap had the audacity to envision the web as a first-class citizen on mobile, and did so in an era when we were hacking around the bug-laden iOS 4 and Android 2.2 browsers. But like all polyfills, PhoneGap was built […]

  • November 14, 2016

Is jQuery Still Relevant?

Although jQuery's heyday may have passed, the library is still used at a staggering rate. But how of much of that usage is legacy? And how many developers are choosing to use jQuery in new applications? In today’s Slack chat we’ve invited a few industry experts to talk about these questions and more. The topics […]

  • October 12, 2016

Should You Use Angular 2 in Your NativeScript App?

One common question new NativeScript users often ask is whether they should use Angular 2 or not to build their app. In today’s Slack chat, we’ve invited a few of our Telerik Developer Experts to help you decide. The questions for today’s chat are: What are the advantages of using NativeScript with Angular 2? What […]

  • August 23, 2016

How to Write NativeScript Plugins and Why They’re Easier Than Cordova Plugins

Last week, Max Lynch from Ionic wrote an excellent guide on how to write Cordova plugins, detailing the specific steps you need to take to build and distribute a plugin in the Cordova ecosystem. Here at Progress the article really resonated with us, because through our Telerik background we have a lot of experience in […]

  • August 18, 2016

How to Successfully Contribute to Large Open Source Projects

Open source can be a lot like prison. (Stick with me.) In prison there’s an old adage that, on your first day, you should find the biggest inmate and punch them in the face. The idea is that you’ll immediately establish your credibility as the biggest guy/gal in the place, and no one will want […]

  • August 9, 2016

NativeScript or Hybrid? How to Choose.

Two of the more popular options for building mobile apps today are hybrid apps built with Cordova, and frameworks for building apps with native user interfaces such as NativeScript. In today’s Slack chat we’ve invited in a few of our Telerik Developer Experts that have experience in both worlds to help you decide which framework […]

  • August 1, 2016

Some Advice for Companies Fighting Ad Blockers

About 7% of the 5,000 most popular websites now either block, or present a message to visitors using ad blockers. And most of them are pretty bad at it. Example #1: There are several problems with this page, but the biggest is that Forbes, like so many other sites that take this tactic, exhibits […]

  • July 6, 2016

Web Clips – A Hidden, But Useful, OS X Feature

Do you run OS X (soon to be macOS)? Are there graphs or charts that you check daily or weekly? If you answered yes, you might want to try a powerful, yet completely hidden feature of OS X: web clips. Web clips let you take a clip of a web page and save it as […]

  • June 30, 2016

Will Angular 2 Take Off?

Angular 2 released a third release candidate this week, which means that we are getting very close to a final release. So the question(s) for today’s Slack chat are: Do you expect Angular 2 adoption to take off? Will it achieve the level of adoption that Angular 1 had? Why or why not? How do […]

  • June 23, 2016

Quick Angular Hosting with the Angular CLI and GitHub Pages

NOTE: This article was updated to support Angular 5 on December 15th, 2017. Hosting an AngularJS app is easy; you FTP a handful of files to a static web server and call it a day. But hosting an Angular 2+ app—with its TypeScript code, node_modules dependencies, and “production mode”—is far more complex, and not as […]

  • June 2, 2016

How I Build For Proprietary Platforms and Sleep at Night

I’ve spent the last three years of my life helping web developers build apps for iOS and Android. As such, I hear this sentiment a whole lot: React Native is amazing and cool tech. But it’s still building for closed platforms, which doesn’t interest me. — Henrik Joreteg (@HenrikJoreteg) January 25, 2016 I think Henrik’s […]

  • April 14, 2016

Cordova Plugin Roundup – PhoneGap Day 2016 Session

In last few years Cordova plugins have become the cornerstone of many high-quality Cordova and PhoneGap applications. In just the last year, we at Telerik have grown our curated Cordova plugins marketplace from small handful of plugins to now 65 and counting. In my talk from PhoneGap Day 2016 you’ll learn about the latest greatest […]

  • April 11, 2016

Building Polished Mobile Apps with Telerik UI for NativeScript

Telerik UI for NativeScript is a set of Telerik-built premium components for building high-quality NativeScript apps. Now that UI for NativeScript has officially been released, let’s look at some of the cool things you can build with the component suite, starting with a quick look at how to get up and running. Note: The hands-on […]

  • March 30, 2016

What To Expect From JavaScript In 2016 – Beyond the Browser

This is the third part of a 3 part series on what to expect from JavaScript in 2016 taken from our whitepaper, “The Future of JavaScript: 2016 and Beyond“. Today’s post focuses on the future of the JavaScript language itself. Part 1, which covered the future of JavaScript frameworks, can be found here and part […]

  • February 2, 2016

What Progressive Web Apps Mean for the Web

As a developer I approach new platform features with a healthy amount of skepticism. You don’t have to look too far into this blog’s archives to find me complaining about the Apple Watch, web components, and plenty of other trendy technologies. The latest of these trendy technologies seems to be progressive web apps, which the […]

  • December 14, 2015

Fixing Stupid Mistakes in Git Pull Requests

I have a penchant for submitting pull requests with silly grammatical and/or technical errors, like this gem I submitted the other day with a simple wording flub: In this commit I talk about a repo’s “master” branch, and then link to its “end” branch. Nice one TJ. Nailed it. Luckily, my grammar-savvy colleague caught my blunder before […]

  • October 29, 2015

You Might Not Need an Apple Watch App

Most Apple Watch apps are useless. There I said it – others have too – and even Google has some pretty harsh things to say. Tell me what you really think Google. — TJ VanToll (@tjvantoll) July 31, 2015 Let me set the stage a little better so you can understand where I’m coming […]

  • September 2, 2015

Safari is Not the New IE, But…

Developers love to hate on browsers. In recent memory that browser has always been Internet Explorer due to Microsoft’s decision to slow down browser development after IE6. The ensuing developer backlash spawned countless comics, clever desktop backgrounds, and witty conference slides. But, as Microsoft has substantially ramped up their work on the web platform and […]

  • August 19, 2015

The Web’s Cruft Problem

The other day I came across this tweet from Kyle Simpson: is there a term (other than "privilege") for hating the web more and more as a user but liking it more as a developer? asking for a friend. — getify (@getify) June 17, 2015 I don’t have a term for Kyle, but I completely agree […]

  • July 7, 2015

A Lap Around NativeScript (Session Recording)

In my session from this year’s TelerikNEXT conference, I presented on how to use NativeScript, a free and open source JavaScript framework for building native iOS, Android and Windows Phone apps. I explain the architecture of NativeScript and walks through how to build an app. You can watch the recording of this session, embedded below, […]

  • June 11, 2015

A NativeScript Development Workflow for Sublime Text

One of the great things about NativeScript is that you can use it in any development environment. By using NativeScript through Telerik AppBuilder, you can build native apps from the browser, a dedicated Windows editor, and even Visual Studio. By using NativeScript through its CLI, you can build NativeScript apps, well, anywhere. I prefer the […]

  • May 19, 2015

The Rise of TypeScript?

The JavaScript community consolidates tools and frameworks about as often as Nicholas Cage makes a good movie. I mean, it happens, but it happens so infrequently that you notice when it does. Which is why I found the Angular team’s decision to switch from their own AtScript language to TypeScript for Angular 2 particularly interesting. […]

  • March 30, 2015

Building Your Own NativeScript Modules for npm

Since releasing NativeScript to the public two weeks ago, we’ve received a flood of feedback and questions, but the most common one we get is “how do I do {{ thing }} in NativeScript?“, where {{ thing }} is one of the thousands of functions that you might want to include in a native mobile […]

  • March 23, 2015

How NativeScript Works

NativeScript is a framework that lets you build native iOS and Android (and eventually Windows Universal) apps using JavaScript code. NativeScript has a lot of cool features, such as two-way data binding between JavaScript objects and native UI components, and a CSS implementation for native apps. But my favorite feature, and the subject of this article, […]

  • February 16, 2015

Building Robust Cordova Apps with AppBuilder and Grunt

JavaScript task runners provide elegant solutions to a number of common problems for web applications, such as asset minification, CSS preprocessing, code linting, and more. Because AppBuilder Cordova projects are web-based, it’s only natural to want to use the same task runners you use for web apps in your hybrid apps. If you’re using the […]

  • February 11, 2015

Icons, Splash Screens, and Screenshots on iOS, Android, and Windows Phone

In the fifth AppBuilder Office Hours episode Michael Crump, Jen Looper, and I talked about icons, splash screens, and screenshots for iOS, Android, and Windows Phone. You can watch the episode in its entirety below: For your reference, here is a list of the tools we demoed in the episode: VectorStock Prepo MakeAppicon Ionic CLI […]

  • February 10, 2015

Adding Telerik Analytics to Cordova Apps

I recently setup Telerik Analytics on my City Search Challenge app, so I’ve spent the last few days looking at cool stats like these: In an effort to share what I learned from this experience, here’s a quick-and-dirty guide to getting Telerik Analytics running in your own apps. Step 1: Install the plugin Step 2: […]

  • February 5, 2015

How I Built an iOS & Android App in a Week

I have a confession to make: although I spent most of last year speaking about mobile and Cordova development, I didn’t have a single app that appeared in the iOS App Store or Google Play. Yes, I’ve worked on a ton of sample and demo apps, but not having something “real” made me feel like […]

  • January 27, 2015

Web vs. Hybrid vs. Native Apps – How to pick in 2015

In the fourth AppBuilder Office Hours episode Michael Crump, Sam Basu, and I discussed talked about the latest in the web vs. hybrid vs. native debate. Among the topics discussed were what’s coming in Windows 10, why developers still need to know Objective-C, the latest in hybrid development, and how NativeScript fits into the picture. […]

  • January 16, 2015

The 300 ms Click Delay and iOS 8

Oh the 300 ms click delay. It’s my second favorite arcane web development problem—right behind determining which element has focus within an iframe. If you have no idea what the 300 ms click delay is you can start by reading this guide I wrote to it last year, but here’s the tl;dr version: mobile browsers […]

  • January 6, 2015

Five Tips to Build Fast Hybrid Apps

In the third AppBuilder Office Hours episode John Bristowe, Rob Lauer, and I gave five tips for building fast hybrid apps. The five tips are: Avoid the network Use a fast web view Use native code where applicable Keep an eye on the state of the art Manage the DOM Here’s the recording for your […]

  • December 17, 2014

Adding Offline Support to Your Kendo UI Mobile App

Kendo UI’s third, and final, release of 2014 has just landed. For Kendo UI Mobile users there’s some awesome stuff—like improved AngularJS support and a new material design theme — but what I’m excited about, and what I’m writing about today, is the new offline support built into Kendo UI. Personally, offline support is one […]

  • December 3, 2014

Cordova Plugin Roundup

AppBuilder Office Hours is an ongoing series of online meetups answering developers’ questions about hybrid mobile development. In this episode (the second), Burke Holland, TJ VanToll and Jen Looper discuss Cordova plugins and demo several from Telerik’s new Verified Plugins Marketplace.

  • November 25, 2014

The State of Hybrid Tooling

A presentation from PhoneGap Day 2014 on the state of hybrid tooling. View this presentation on Blazon

  • November 24, 2014

Building Cross-Platform Apps with the Telerik Platform

A presentation from the 2014 M3 Conference about building apps with the Telerik Platform. Slides View this presentation on Blazon Video

  • November 24, 2014

iOS 8 and Native Transitions

AppBuilder Office Hours is an ongoing series of online meetups answering developers’ questions about hybrid mobile development. In this episode (the first), Burke Holland, TJ VanToll and Jen Looper discuss the latest and greatest in iOS 8 and a native-page-transition Cordova plugin.

  • November 18, 2014

What Android 5.0’s Auto-Updating WebView Means for Mobile Apps

For years, hybrid development has been plagued by the the slow, buggy, and difficult-to-debug Android WebView. Add to that the excruciatingly slow Android upgrade cycle, and you could have a very convincing reason to avoid hybrid development altogether. But things change quickly in the mobile world. With Android 4.4 (October 2013), Google switched its WebView […]

  • November 4, 2014

Adding Native Touches to Your Hybrid App

Designing hybrid apps can be difficult. The challenge is to use HTML, CSS, and JavaScript to build apps that feel at home on multiple mobile platforms with different UI paradigms. As hybrid developers we often argue over the merit of replicating native UIs in JavaScript, and toss around phrases like the uncanny valley effect, but […]

  • October 27, 2014

Starting Hybrid App Development with the AppBuilder CLI

AppBuilder is a set of tools and services that make Cordova development awesome. The AppBuilder CLI packs all that functionality into a simple set of commands. Let’s look at how you can use the AppBuilder CLI to build a mobile app in a few minutes. Step 1. Create a Telerik Platform account AppBuilder is part […]

  • October 16, 2014

Building HTML5 Form Validation Bubble Replacements

I’ve written and spoken about HTML5 form validation over the last few years, and one of the most common questions I get is about bubbles. By bubbles I mean the UI controls browsers display validation errors in. Below you can see Chrome’s, Firefox’s, and IE’s implementations: For whatever reason, we developers (or more likely our […]

  • October 9, 2014

Why the Scroll Event Change in iOS 8 is a Big Deal

If you’ve read any of the “What’s new in iOS 8 guides”, you may have noticed a change to how scroll events work. Although many may consider this a minor change, any developer that has tried to implement scrolling logic on the mobile web knows that this is actually fairly important. In this article I’ll […]

  • September 24, 2014

Supercharge Your App Development with Ionic and AppBuilder

Ionic is slick. If you’re haven’t heard of it, Ionic is a UI framework that helps you build beautiful iOS and Android apps based on Cordova. Go ahead and peruse their UI components to see the powerful UIs you can build with a small amount of code. But although Ionic’s UI is top notch, the […]

  • September 9, 2014

A Comprehensive Guide to Styling File Inputs

Trying, and failing to style an <input type=”file”> control is a twisted rite of passage in the web development trade. If you’re not familiar with the problem, you could read this Stack Overflow thread to get up to speed, but you may consider a new career afterwards. (Law school did seem appealing, and you only […]

  • August 19, 2014

Why Web Components Are Ready For Production

Last month I wrote about how web components weren’t ready for production yet. I stand by my conclusions in that article, but, based on feedback I received, and some subsequent research, I now believe a subset of web components — namely custom elements — are ready for most developers to use. In this article I’ll […]

  • August 7, 2014

Why Web Components Aren’t Ready for Production… Yet

Web components are the new hotness. And now that a complete web components implementation landed in Chrome 36, we finally have stable, unprefixed, unflagged version to try out. But, although web components are certainly something to be excited about, and a technology worth experimenting with, that doesn’t mean that they’re ready to use in your […]

  • July 17, 2014

The Cordova Plugin Ecosystem Is a Mess — This Is What We’re Doing About It

A good plugin ecosystem can make or break a platform. Many of the great development successes of the last decade have been built on top of a vibrant plugin community. Node has npm; Ruby has gems; and jQuery has 574 ways to build a carousel. Unfortunately, that same plugin proliferation has not happened in the […]

  • July 14, 2014

Trimming Down jQuery With Grunt

I’ve previously written about using jQuery’s AMD modules to include only the pieces of jQuery you need. That approach relied on explicitly listing jQuery modules, i.e. whitelisting, which works well if you only need a few modules. The more common case, however, is applications that use numerous jQuery modules. In those applications, micromanaging a list […]

  • July 1, 2014

Adding In-App Feedback to Your Mobile App

I would like to share with you the single greatest bug report I have ever received: “The last time I had something for sizing, my computor didn’t keep things inside other boxes like most others that did resizing.” This sentence was special enough that I immediately saved it in numerous locations; you can’t lose a […]

  • June 19, 2014

jQuery: Using Only What You Need

With the ever-increasing importance of mobile, performance on the web has never been more critical. Because of its popularity, jQuery is often targeted as too big because of its size. Although I’ve argued in the past that the complaints about jQuery’s size are overstated, it’s nevertheless important to include only the code you need. The […]

  • June 5, 2014

Why iOS 8’s WKWebView is a Big Deal for Hybrid Development

Hybrid web apps are notoriously associated with performance problems, and it’s not without reason. Like all software, the performance of a hybrid app is dependent on the platform it runs on, and that platform — the browser in this case — has been subject to a number of performance penalties. Each mobile platform has an […]

  • June 4, 2014

Bringing F5 (or Command+R) to Hybrid Mobile Apps

The most inspiring conference talk I have ever seen was Bret Victor’s 2012 talk “Inventing on Principle”. In it, he talks about the importance of instant feedback during development. Or in his words: Creators need an immediate connection to what they create… [i]f you make a change, or you make a decision, you need to […]

  • May 30, 2014

The State of Hybrid Mobile Development

This article was last updated on July 31st, 2015 by TJ VanToll. Hybrid development, or the approach of building native apps using Web technologies, has gone through its fair share of highs and lows. But, despite high-profile abandonments from the likes of Facebook and LinkedIn, hybrid development continues to be used by a substantial number […]

  • May 5, 2014

Using UI Libraries Without the Bloat

I love UI libraries. I still remember the first time I used jQuery UI’s draggable widget. I would type $(“*”).draggable() in the console for fun (I wrote very practical applications in those days). But recently, these UI libraries I love have been getting a bad rap for being “huge” and “bloated”. And while I don’t […]

  • April 17, 2014

A Concise Guide to Remote Debugging on iOS, Android, and Windows Phone

When I first started developing for mobile, my primary debugging tool was inserting alert() calls like it was 1999. It was nostalgic for about 30 seconds. My DevTools skills, honed during days of watching Paul Irish videos and years of memorizing keyboard shortcuts, were useless for mobile. But things have come a long way since then. With […]

  • April 14, 2014