phone_fill 0591 - 794 120 list_dash phone_fill0591 - 794 120 envelope_fillmail@alwinlubbers.nl
WA for Legacy iOS Beta starts on August 31

WA for Legacy iOS

WA for Legacy iOS Beta starts on August 31

After months of blood, sweat, and tears, I'm finally able to say that we're launching a beta for WA for Legacy iOS!

What took you so long?

In January, I posted a single screenshot on Reddit with the title: "I'm working on bringing back WhatsApp. Does anyone even want this?" To my surprise, it gained almost 200 upvotes, 48,000 views, and 75 shares. The reaction was insane. I've already explained my love for legacy iOS devices in a previous post. In this post, I want to explain a bit about the development process.

The Beginning

I have years of experience with HTML, CSS, JavaScript, SQL, PHP, and many other web-focused languages. Professionally, I'm a web developer first and foremost. I had dabbled in designing custom Linux distros and used Electron with bash scripts to hook into the native OS side of things. That's exactly how I approached WA for Legacy iOS originally. It was supposed to be a three-month project, but it snowballed into me learning Objective-C for the first time. I already knew a lot about how iOS worked behind the scenes, but not at a code level.

Cordova

What is Cordova?
Cordova was all the rage back in the pre-iOS 7 days. It's essentially a website disguised as a native app. With Cordova, you can install plugins to access native elements (like UIAlertViews).

Let's start
So, I installed Cordova on a virtual machine running OS X Mavericks, with an old version of NodeJS. Everything went relatively smoothly until I needed to scroll a large list of items. I only had an iPhone 4 running iOS 6 at the time, and it struggled constantly. I managed to create the 'all chats list' and some setup screens, along with a very early server prototype with basic functionality. Despite trying every optimization trick I knew, it just wasn't enough.

A week prior, I had posted on Reddit about wanting to bring WhatsApp back to legacy iOS devices, so I had a commitment now. Do you know the feeling that you can create something truly unique? That you can see the light at the end of the tunnel, even if the tunnel is very, very long? I wanted to do this. I wanted to use my iPhone 4 as my daily driver. I knew WhatsApp was the only thing holding me back.

After a week of research and consideration, I bit the bullet. I was going to ditch Cordova and learn Objective-C, the native language for iOS devices.

Objective-C

On February 15, I decided to learn Objective-C, a language that's not really relevant anymore. Most new apps today are written in Swift. Objective-C is still valid for modern iOS, but it seems Apple is slowly phasing it out.

I spent one full day and night, without any sleep, getting the gist of Objective-C. Some things caught me off guard, but I wrapped my head around most of it.

The next day, I got a simple table view working with a tab bar and header. No syncing, no server connection, just a plain table view. Two days later, I got syncing to work. It wasn't displaying anything on the screen yet, but at least chats, messages, and contacts saved to my iPhone. A week later, the table cells showed the last sent message with the acknowledgment checkmarks. By the end of April, you could tap on a chat to see its messages (only text messages at that point).

The journey wasn't smooth. I had only used standard SQL servers and SQLite for data management. For iOS, Core Data is the best option, but it's a pain if you don't understand it. Core Data is vastly different from standard SQL, and I only learned to appreciate it last month. It's truly an experience in and of itself.

On June 12, I implemented a revolutionary feature: sending text messages. I know, it's truly remarkable. I also did the 'contact info' page and minor reworks of things I did when first starting with Objective-C. By the end of June, I started implementing some 'settings' pages (who doesn't love settings?). Around that time, I also created some minor views for the setup process.

In the past few weeks, I primarily worked on fixing bugs, making things faster, and plotting out everything that still needed to be done. In this post, I only talked about the iOS app development, not the server side. There are still things left to do, but we'll get there.

Beta Release

The WA for Legacy iOS Beta will start on August 31. The private beta will be limited to 20 people. As the Beta nears, I'll reach out to those who left their email addresses here.

I will ask about your iPhone model and iOS version to ensure a diverse set of devices to catch most bugs.

WA for Legacy iOS will offer two options to connect your WhatsApp account:

For this beta, all testers will get free access to the pre-hosted plan. The server portion of WA for Legacy iOS will be available closer to the official release.

Privacy

I will allow select people to review the source code to ensure there are no privacy concerns. These reviewers will be independent of Alwin Lubbers Software and encouraged to speak out in a public Discord server if they find any issues.

A support document detailing the security and privacy practices of WA for Legacy iOS will be available later. If you're Dutch and explore this website, you'll see that I take privacy very seriously. If you find any issues with the app or server, contact me via Twitter, Reddit, or Discord DM. If I don't address the issue within a month, you have my permission to go public with it.