Field notes
Notes from the trenches: React Native, Flutter, JavaScript, and the occasional dive into security tooling.
Apr 21, 2026 · 4 min read
Less a tutorial, more a set of opinions earned the hard way. The things about building and shipping mobile apps that I believe now and didn't when I started, about release engineering, performance, and where time really goes.
Mar 18, 2026 · 3 min read
The debugging story changed when Flipper was dropped and React Native DevTools became the default. What the new tools are good at, how I actually debug a React Native app day to day, and what I stopped reaching for.
Jan 22, 2026 · 3 min read
E2E tests for mobile have a reputation for being flaky and miserable to maintain. Maestro changed that for us. What the flows look like, what it does well, and the honest limitations.
Nov 19, 2025 · 4 min read
Nine minor versions in one project. The strategy that kept it sane - incremental not big-bang, the upgrade-helper diff, dependency triage, and turning on the New Architecture - plus the specific things that broke.
Sep 25, 2025 · 4 min read
Discover how keyboard handling in React Native has transformed from clunky workarounds to fluid, cross-platform solutions.
Sep 18, 2025 · 5 min read
Learn how to effectively monetize your React Native app using in-app purchases.
Sep 11, 2025 · 2 min read
Struggling with high CPU usage in Visual Studio while running Angular + MVC + API projects? Learn how to reduce CPU load from 100% to under 30% by running M
Jun 18, 2025 · 4 min read
Users get on the subway, the network drops, and your app should keep working. Building offline-first with a local database, an outbox for writes, and a sync strategy that survives conflicts - plus where the genuinely hard parts are.
Apr 24, 2025 · 3 min read
React Native shipped React 19. Most of it is quietly nice, some of it changes habits, and a couple of things will surface in your app on upgrade. A practical rundown for mobile developers.
Feb 13, 2025 · 4 min read
Microsoft is retiring App Center, which is where CodePush lived. If your app relies on over-the-air updates, here are the real options, how they differ, and how to think about the migration before the lights go out.
Dec 11, 2024 · 4 min read
Taking an old bridge-style native module to the New Architecture: the spec file, codegen, and the iOS and Android changes - using a small real module as the worked example.
Oct 29, 2024 · 4 min read
The New Architecture is now the default. Past the buzzwords - Fabric, the JSI, TurboModules, codegen - here's what genuinely changes for app developers and what to check before you flip it on.
Aug 21, 2024 · 3 min read
Certificates, provisioning profiles, identifiers, and why your build fails with a useless error. A mental model for iOS code signing, and how Fastlane match makes it stop being your problem.
Jun 19, 2024 · 4 min read
Redux gets blamed for problems that are really about how it's used. What disciplined Redux looks like in a big React Native app, the boilerplate cure that is Redux Toolkit, and the honest question of whether you need it at all.
Apr 17, 2024 · 3 min read
Cold-start time is the first impression your app makes, and it's measurable and fixable. How I profile React Native startup, what actually moves the needle, and the wins that are mostly free.
Feb 21, 2024 · 4 min read
Over-the-air updates let you ship a JS fix in hours instead of waiting on app review. They also let you brick your app for everyone in minutes. How we used CodePush safely - staged rollout, mandatory rules, and automatic rollback.
Dec 14, 2023 · 4 min read
How we went from a crash-free rate we were embarrassed by to one we were proud of - not with one heroic fix, but with boring, repeatable triage. The process, the tooling, and what the numbers actually mean.
Oct 25, 2023 · 4 min read
Getting a link like myapp.com/product/42 to open the right screen in your app, across cold starts, warm starts, iOS universal links and Android app links. The full picture, including the parts that silently fail.
Aug 30, 2023 · 3 min read
Manual builds are where release days go to die. Here's the CI setup I use to go from a git tag to TestFlight and the Play Store internal track without touching Xcode or a terminal.
Jun 14, 2023 · 2 min read
To share an iOS IPA file for installation over the air with a custom domain server set up, we first need to prepare the build.
May 22, 2023 · 3 min read
Two features every commerce app needs, and two features where the happy path in the docs hides the real work. Notes on getting payment gateways and push notifications to behave in production.
Mar 28, 2023 · 3 min read
Reanimated 3 is out and the upgrade from 2 is smaller than the version bump suggests - but there are a few real breaking changes and one dropped compatibility mode worth knowing before you bump the version.
Dec 12, 2022 · 3 min read
When no library exists for the native feature you need, you write the bridge yourself. A walkthrough of a simple iOS + Android native module and the gotchas that aren't in the docs.
Nov 14, 2022 · 2 min read
React Native and Flutter are both popular frameworks for building mobile apps, but they have some key differences.
Sep 13, 2022 · 3 min read
Why animating through React state stutters, and how Reanimated 2 worklets and the gesture handler keep a draggable, swipeable UI running on the UI thread at 60fps.
Jul 21, 2022 · 2 min read
Mobile app development is a constantly evolving field, and it can be difficult to keep up with the latest best practices.
Jun 9, 2022 · 2 min read
React-Native is a popular framework for building mobile apps using JavaScript and React. Follow these best practices to ensure that your apps are efficient, maintainable, and free of bugs.
Apr 19, 2022 · 3 min read
Tabs with their own histories, a login flow that sits outside everything, modals over the top - how to lay out React Navigation so it scales past the toy-example stage.
Feb 15, 2022 · 3 min read
Moving from React web to React Native, most of your React knowledge comes with you - but layout, navigation, and "it works on my machine" all change. A field guide for the jump.
Dec 20, 2021 · 6 min read
Log4j
Oct 26, 2021 · 3 min read
I spent years building UIs by grabbing elements and poking at them with jQuery. Moving to React meant unlearning that habit. Here's the mental shift that finally made it make sense.
Aug 17, 2021 · 3 min read
Two functions that sound similar and get mixed up constantly. Here's the difference, when to reach for each, and small implementations you can read in one sitting.
Jun 27, 2021 · 2 min read
Enable the GPG-agent ssh support
Jun 24, 2021 · 7 min read
Here we will create a key to Certify and then create sub-keys to sign, encrypt and Authenticate.
Oct 8, 2020 · 3 min read
We needed to send order updates and the occasional newsletter to a few thousand users. Here's how I set up Amazon SES, and the SPF/DKIM/DMARC work that kept us out of the spam folder.
Aug 19, 2020 · 1 min read
AWS CLI Usage
Apr 16, 2020 · 3 min read
Notes from putting a CDN in front of an S3 bucket for an e-commerce site - what CloudFront actually does, the cache headers that matter, and the invalidation mistake that cost me an afternoon.
Dec 18, 2019 · 1 min read
Many people fall for those bogus emails which range from attractive shopping offers to fake emails telling you to secure your online accounts. Identifying a phishing email might not be easy as you think. You may only realise that you clicked a malicious link after it’s done.
Nov 10, 2019 · 1 min read
JavaScript and TypeScript are both programming languages that are widely used for web development, but they have some key differences.
Sep 15, 2019 · 1 min read
Data is anything meaningful to the computer. Javascript provides 7 different datatypes to use within Javascript.
Jul 20, 2019 · 3 min read
Cybersecurity threats are constantly evolving and can come in many forms. Understanding the types of threats that exist and knowing how to prevent them is crucial for protecting sensitive information and systems from attack.
May 12, 2019 · 2 min read
Cryptography is the practice of securing information through the use of codes and ciphers.
Mar 5, 2019 · 2 min read
Cybersecurity is the practice of protecting computer systems, networks, and sensitive information from unauthorized access, use, disclosure, disruption, modification, or destruction.