An Adventure with Swift Charts

As you all may already know, one of the cool new things introduced in WWDC 2022 was Swift Charts, a framework to create charts with SwiftUI. To learn more about the Swift Charts' potential, let's go on a thrilling adventure to replace the chart in WooCommerce iOS with this ✨✨ shiny new framework ✨✨. To …

Swift: Why is my @MainActor code running in the background?

@MainActor was introduced introduced in Swift 5.5 by SE-0316 as a way to tell the compiler that certain code should always be run on the main thread. However, we have seen some cases where functions annotated with @MainActor were still being called on a background thread. This post explores what was happening, and how it …

Breaking down large pull requests

When working in a software development team, reviewing pull requests (PRs) is part of our everyday work. It is best practice to keep PRs small and concise, just so we can avoid missing potential issues and spending too much time understanding code changes - thus ensuring productivity. At WooCommerce Mobile, we have several teams working …

Clean config files with YAML anchors

Some context Recently we have been working on migrating our CI infrastructure from CircleCI to Buildkite. As a result, we are manipulating and creating a lot of YAML config files across our various apps, libraries, and tools. Given that we have many similar and common values and nodes across pipelines, jobs and steps in each …

Building an Editor by Sharing Code Between Android, iOS, and Web with React Native

When WordPress began rolling out the powerful new Gutenberg editor for building web pages (and, soon, entire websites), we were excited to bring that power to our users on mobile.  Why React Native We know firsthand how hard it is to make a great editor. We have built native editors for Android and iOS before …

Two simple techniques to make your release process more asynchronous and decentralized

How following simple conventions can remove the need for unscheduled synchronous meetings to release new versions of your apps.

Automattic Apps Division has team members distributed across 22 timezones. When it comes to shipping new versions of our apps, that spread makes the traditional synchronous and meeting-driven approach impossible.

Being a distributed team forced us to put processes in place that allow work to happen in an asynchronous and decentralized way without the need for everyone to be online simultaneously and with no ad hoc decision-making...

How We Use Feature Flagging on iOS

Great features take time to build. We release a new version of the WordPress for iOS app every two weeks. But sometimes a feature takes more than two weeks to develop. In those cases, we use feature flagging to gate in-progress features so we can continue to build and test them without exposing them to regular users before they’re ready.

With a feature flag in place, you can present different user interface elements or different menu options to a user based on which build of the app they’re running — whether that’s a local debug version, an internal testing version, or an App Store version. And it’s not just limited to UI. You can also swap out entire sections of backend logic using a feature flag.

In this post, we’ll look at how we implement feature flags in WordPress for iOS...

Screenshot Script

When I make pull requests for user interface changes, I include screenshots so everyone else involved in the product can see what I see.  It’s especially helpful for designers to quickly compare their mockups with the final result.  Folks have asked me if I use a particular program to create them — I don’t! It’s a fairly manual process, which I’ve now automated to make life easier. Read on to learn how to create screenshot images with a single terminal command...

Improving Offline Posting

The best technology is invisible and reliable. You almost forget it’s there, because things just work. Bad technology never disappears into the background — it’s always visible, and worse, it gets in your way. We rarely stop to think “My, what good Wifi!” But we sure notice when the Wifi is iffy.

Good technology in an app requires solid offline support. A WordPress app should give you a seamless, reliable posting experience, and you shouldn’t have to worry whether you’re online or offline while using WordPress Mobile. And if we’ve done our jobs right, you won’t any more...