Systems | Development | Analytics | API | Testing

iOS Push Notifications: Complete APNs & Swift Setup Guide

Whether you’re building your first iOS app or improving user engagement, understanding push notifications is essential. They’re how apps stay connected with users, delivering updates, reminders and alerts even when the app itself isn’t running. In this guide, you’ll learn how to implement iOS push notifications from setup to debugging, using Swift and Apple Push Notification Service (APNs) in a real app.

JavaScript Exception Handling: try, catch, throw, async & Best Practices

Exceptions are inevitable. It’s how we deal with them that matters. An effective exception handling regime is the difference between an app that only works in sandbox and one that can adapt and scale in the real world. JavaScript can throw up all kinds of weird and wonderful exceptions, because it runs in inherently unpredictable environments. So we’ve put together this guide to give you a clear, repeatable plan for handling them.

JavaScript Debugging: How to Find and Fix Bugs in JS

An effective JavaScript debugging regime is essential if we want to build responsive, reliable and highly-rateable Android apps. JavaScript doesn’t enforce types at compile time (unlike Swift) and this means errors often happen quietly, when users are already feeling them. So it’s vital that we debug pre-emptively, using knowledge rather than guesswork.

Kotlin Annotations Explained: Guide for Android Developers

Kotlin annotations allow compilers or libraries to understand our code. These metadata tags don’t directly change code logic, but they help modify how it is interpreted, optimized, or validated. This simplifies Android development by automating repetitive tasks and ensuring consistent code behavior. It also improves code readability, reduces boilerplate code, and introduces automated checks and generation.

How to Remotely Debug Mobile Apps

Remote debugging is the most reliable way to grasp what’s really happening inside a mobile app once it’s out in the wild. We’re talking crashes that never appear in development, and issues from users that can’t be reproduced locally. If you ship mobile apps, you’ve been vexed by these problems at some point.

Chrome Developer Tools: The Ultimate Overview

Chrome developer tools, or Chrome DevTools, give us a window on how our websites working in the wild. Built for developers of all experience grades, they provide powerful ways to inspect, debug and optimize our projects. However the sheer breadth of functionality can be a mind-melt if you’ve not worked with DevTools before, and there are lots of advanced features that even experienced users find tricky.

How to Migrate Legacy Swift Code to Modern Concurrency Without A 'Big Bang' Rewrite

Concurrency means running multiple tasks at the same time, and it’s a great way to ensure our apps stay responsive. Swift 5.5 introduced structured concurrency and the closely related concept of async/await to improve the management of asynchronous code, part of a wave of changes designed to ensure simpler code, improved error handling and automatic task lifecycle management.