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...

Offline Principles

Many of us design and build apps in air-conditioned offices in major cities, using the latest devices with perfect internet connections. We don’t often think about how apps should work without a strong internet connection.

It's no wonder so many apps feel clunky or broken with a flaky internet connection, or none at all...

We decided to question ourselves, and to start treating the offline state as a core part of the experience rather than an edge case. While not everything can happen offline, plenty of tasks like writing a blog post should still work regardless of your connection...

WordPress API Challenges

WordPress powers over 30% of all web sites, but not all websites using WordPress are the same. Since WordPress is open source software that anyone can download and install on their server, there are countless versions of WordPress running unique configurations.

This creates a unique challenge for the WordPress mobile apps: Instead of having a single server with a defined API that we control and manage, we need to support multiple APIs from different WordPress versions and we can never complete trust the data being given back to us...

WordPress Mobile Apps: the Heartbeat release process

A new great feature, an important bug fix, a UI improvement, a subtle but effective change; whenever the latest development is complete, the next step is to ship it to users.

As developers, we want to deliver improvements quickly, but we have to strike a balance. We like to release bug fixes as soon as possible, but we also want to avoid annoying users with too-frequent updates...