Reviewing your Shipaton apps
Rating and reviewing your Shipaton app in App Store and Play Store.
111 posts on React Native, app monetization, design and cognitive science, written here and for
RevenueCat and
Expo.
Rating and reviewing your Shipaton app in App Store and Play Store.

AI is useful, but it will happily help you ship average work with a finished-looking surface — here is how to keep it from setting your bar.

A recap of App.js 2026 with a sponsor's, speaker's, and participant's perspective.

You may not need another app. One useful integration, growth experiment, or sharper audience could put the app you're already building in contention for another prize.

How Gurwi turned building in public into millions of views, customer growth, outside funding, and a $15,000 Shipaton award.

Everything you need to get your app approved by the App Store and Play Store review before the Shipaton deadline

A detailed walkthrough of the five Devpost steps, what to prepare, and how to make sure your app gets judged

Shipaton 2026 is here: ship a new iOS or Android app this August–September and compete for over $1 million in prizes. Register now at shipaton.com.

Apple is now rejecting apps that ask for a rating during onboarding. Here's what changed, why it matters, and how to prompt for reviews the right way.

"Always decline" refunds is gone from RevenueCat. Here's why it was working against you.

Learn how to build a “name your price” paywall in React Native using RevenueCat. Create multiple price tiers, connect them to a single entitlement, and let users choose how much they want to pay.

React Native apps consistently earn more than Flutter and native apps. See what 2026 RevenueCat data reveals about conversion, RPI, LTV, and why React Native teams win.
Apple gives you a CSV, not an invoice. Drop in your App Store Connect financial report and get the invoice your accountant needs, in your browser.
An opinionated take on the best Expo stack, what data tells about app monetization, and why you should still choose React Native to win

Check whether another app is installed on iOS from Expo or React Native with Linking.canOpenURL, including the config plugin and URL scheme setup.

Learn how to send trial reminders using RevenueCat and either remote or local push notifications on iOS and Android.

Conditionally show paywall components based on offers, packages, and custom variables. Build smarter, context-aware paywalls without maintaining variants.

AI makes building apps easier than ever. But shipping and monetizing them? That’s where things get hard — lessons from RevenueCat’s internal hackathon.
Make your titles dance in the browser tab with JavaScript using document.title. and setInterval.
Use the HTML5 Canvas API to draw animated favicons — loading spinners, progress indicators, and notification pulses — all in the browser tab.
Mailto links assume everyone has a mail app set up. We swapped ours for a contact modal, and here's how we built it with Next.js and Framer Motion.

Connect Appstack attribution data with RevenueCat subscription events. Measure campaign LTV, target paywalls by acquisition source, and close the loop on paid UA.
ASC CLI lets you manage builds, submissions and localizations from your terminal instead of App Store Connect's web UI. Here's how to get started.

Learn how to use RevenueCat's Custom Variables to personalize paywalls in React Native. Pass customer data from your app to create tailored paywall experiences that convert better.

Explore the winning apps of Shipyard: Creator Contest

Learn how to run a custom built paywall alongside RevenueCat paywalls to enable A/B testing, targeted offers, and advanced onboarding logic while keeping entitlements and purchases fully managed by RevenueCat.

React Native apps can now handle subscriptions across iOS, Android, and web using a single RevenueCat SDK and entitlements system. With React Native Web support, web purchases flow through RevenueCat Web Billing (powered by Stripe) into the same backend as native purchases, so entitlement checks stay consistent across platforms. That means users can subscribe on the web and unlock access instantly on mobile — without custom cross-platform logic or separate billing systems.

Less than a week left to Shipyard? You’re not too late. Explore practical app ideas for three creator briefs, learn how AI tooling speeds up development, and see how to ship a competitive MVP before the deadline.

Learn how to submit your iOS or Android app to Shipyard, including TestFlight and Google Play testing requirements, RevenueCat integration, demo video rules, and judging criteria.

Build a winning MVP for RevenueCat’s Shipyard hackathon. Learn how to pick the right idea, ship fast, get users, and pitch your app.
Overengineered approach to tracking how many books I've read in 2026, with filtering, auto generated images, and progress bars

How to add subscriptions to your Bolt + React Native app using RevenueCat and EAS Build. Full guide to setup, paywall logic, and Android deployment.

Ads rarely pay off for indie apps. Explore proven monetization models like subscriptions, consumables, and in-app currencies to build sustainable revenue.

How to check if another iOS app is installed using canOpenURL and custom URL schemes in SwiftUI. Includes Info.plist setup and working code examples.

How to handle rate limits and memoization when scraping the app-store-scraper package.

Ads, one-time purchases, subscriptions or virtual currencies? The main ways to make money from an Android app, and how to pick the right one for yours.

Netli.fyi is a native iOS app for Netlify: your sites, build logs and domains in your pocket. It's in beta, and I'd love your help testing it.

Stop FlatList flickering and layout shifts when using React Query. Patterns for loading states, skeletons, and keeping the list mounted.

Learn how to plan and launch a holiday subscription sale in Google Play Console using offer phases, promo codes, eligibility rules, and RevenueCat testing.

Apple’s new Mini Apps Partner Program offers a 15% IAP rate for apps hosting third-party mini apps. Here’s what changed and what app teams should know.

Here's how RevenueCat can automate Apple's Retention Messaging API for you, including localization, performance monitoring, and real-time delivery within Apple's 700 millisecond window.

Learn how to use RevenueCat redemption links with Expo Linking and Expo Router to let web billing purchases unlock instantly in your app. Step-by-step tutorial with code examples for seamless cross-platform subscriptions.

Learn how to add a tip jar to your app in under 15 minutes using RevenueCat. This step-by-step React Native guide shows you how to set up Test Store products, build a paywall, and launch your tip jar live on the App Store and Google Play — no subscription required.

Why RevenueCat Paywalls are fully native — not WebViews. Faster load times, better accessibility, safer purchasing, and remote configuration without compromise.

Google Play is rolling out AI-driven search, a new You tab, and curated spaces. Here’s what apps should do to stay discoverable and retain users.

Learn how to build a win-back campaign using RevenueCat Web Billing and Zapier. Automate emails, send discounted web paywall links, and bring churned subscribers back while saving on App Store fees.

Learn how to hack your App Store and Google Play ratings ethically by prompting users at the right time. Discover how ratings affect growth, why good apps don’t always score well, and how to build a happiness engine that captures satisfied users without spamming them.

Learn how to win Shipaton by pitching your app with story-driven videos and descriptions that stand out and meet Devpost submission rules.

From Shipaton project to global business: discover how Mansour Mahamat built BJJ Evolve, grew with TikTok, and turned passion into product.

Learn how to grow your Shipaton app: from acquiring first users to ASO, retention, and feedback loops. Win with momentum, not just big numbers.

Learn how to go from idea to launch fast with the 4-8-24 method. This guide shows how to prototype, polish, and release your app before the deadline.

Three apps, one Shipaton: A behind-the-scenes look at what I’m building during RevenueCat’s 2025 hackathon — from saunas to CMS tools to Netlify on the go.

Learn how to monetize AI apps using RevenueCat's virtual currencies. This guide walks through building a coin-based paywall in React Native, complete with backend logic to securely track and spend credits.

Don’t know what to build for Shipaton? A 45x hackathon winner breaks down how to find and validate app ideas that solve real problems

How indie dev Rudrank Riyam used Shipaton to launch Meshing, build in public, and win the Build in Public Award.

Computer science student Leandro Tolaini had never built an app before joining Shipaton. One year later, he’s a Swift Student Challenge winner and WWDC invitee. Learn how building in public helped him grow fast, ship his first product, and find his place in the iOS dev community.

A step-by-step guide to adding an ad-free subscription to your Flutter app using RevenueCat and AdMob. Includes full code, setup tips, and best practices.

Learn how to implement an ad-free subscription in your React Native app using RevenueCat and AdMob. A step-by-step guide for iOS, Android, and Expo.

Learn how to uild a trust-first paywall like Blinkist using RevenueCat and Zapier. Automate trial reminders without custom code.

A personal recap of App.js 2025: speaking about in-app purchases, highlights from Krakow, favorite talks, and why this conference remains one of my top picks.

RevenueCat's Flutter SDK now supports web apps, enabling cross-platform subscription management from a single codebase.

Build cross-platform subscriptions for iOS, Android, and Web in 30 minutes using one React Native codebase with RevenueCat’s Web Billing SDK.

Vibe coding is closer to prototyping than to engineering. Why that matters, and how it puts domain experts in charge of building software.

Learn how to correctly manage and access environment variables in Netlify Functions.
Comprehensive look at in-app purchases and how to add them to your React Native app

Add in-app purchases and subscriptions to a React Native app with RevenueCat: products, entitlements, customerInfo, and testing on iOS and Android.

Full article version of the talk I gave at RTC.ON Conference 2024 about getting started with WebRTC in React Native

A complete guide to implementing in-app purchases in your Expo app using RevenueCat.

Yes and no: Se7en has a novelization, but the movie came first. How the screenplay changed through rewrites, and how the book compares.

How to skip an Apollo GraphQL query until its variables exist, with a small variablesOrSkip helper that keeps TypeScript happy.

How to style HTML content in React with Tailwind CSS when using dangerouslySetInnerHTML by writing custom selector using arbitrary variants.

How to switch back to the old Slack desktop UI on Mac and say goodbye (at least temporarily) to the current UX catastrophe.

Add your own debug actions to the React Native Dev Menu with DevSettings.addMenuItem(), plus what each built-in option and shortcut does.
Stop hardcoding date formats. How to format dates for each user's locale in React Native with Intl.DateTimeFormat and react-native-localize.

Discover how we enhance system resilience with RC Fortress — shielding our customers from service disruptions.
What usability evaluation means, the three ISO 9241 measures (effectiveness, efficiency and satisfaction), and how to tell if a product really works.
Where the Bayesian brain hypothesis falls short: the critiques of its task selection, its model selection, and what it actually adds to theory.

Four approaches to designing digital services that persuade your user to live a healthier life
What JAMstack is, how prerendering and decoupled services make websites faster and safer, and where the approach falls short.
Introducing Netli.fyi, a React Native app for managing your Netlify-hosted sites from your phone — checking deploys, build status, and site details on the go.

20 things about 2020 from my perspective. I think there are easier ways to brag about your accomplishments than trying to mask them under an annual review.
Does the golden ratio actually predict what people find beautiful? A look at the psychology research, and what it means for UI design.
We open sourced the website of Nyxo, our sleep coaching app. What's in the repo, why we did it, and how you can build on it.
An introduction to user research: how to gather data about your users, check that it holds up, and turn it into insight about what they need.
Make styled-components nicer with TypeScript: IntelliSense in VS Code, typed theme variables through declaration merging, and type-checked props.

Seeing 'VirtualizedLists should never be nested inside plain ScrollViews'? Fix the warning with ListHeaderComponent and ListFooterComponent.

Building a clock face with hour markers in React Native using react-native-svg, with support for both light and dark themes.

How to build and deploy a static website using Publish, a static site generator for Swift. Covers setup, theming, Markdown content, and deploying to Netlify.
Create what is essentially a Spotify for ASMR. For the following reasons:

This article is based on a lighting talk I gave at React Day Berlin in 2019. Learnings are from prototyping Nyxo app.
Eight books that explain how startups, investors and tech companies really work, for anyone getting into tech without an engineering or business degree.
Every investor wants deep tech, so every startup claims to be it. Most are the r/im14andthisisdeep version. One simple question tells them apart.

There is no need to start Xcode to test on different React Native apps on different device simulators. You can do that easily with the simulator flag.

Checklist for publishing React Native app to Apple App Store successfully.
How the Iowa Gambling Task uses a simple card game to study decisions under uncertainty, and what it shows about how we weigh risk and reward.
Why 3D movies sometimes look off: what crosstalk is in stereoscopic displays, what causes the ghosting, and how screens try to reduce it.

Every book I read in 2018, from fiction to biographies, with short thoughts on each. Several came from Business Insider's list of 100 biographies.
If you love somebody enough You’ll follow wherever they go That’s how I got to Memphis
I thought 23 was too old to learn to code. Since then I've founded three companies and won about half of the 70 hackathons I entered.
Most people think a strategy is just a plan. A good one has three parts: a goal, an honest diagnosis of where you are, and a plan to get from one to the other.

I went to over 70 hackathons between 2015 and 2018 and won 40 of them. This is the strategy behind most of those wins, written down.
Learn how to automatically generate Open Graph sharing images for your Gatsby.js blog by building a custom plugin using Jimp for image manipulation.

Exploring solutions for sustainable energy use at the Energy Efficiency Hackathon, with innovative projects focused on energy conservation.

My weekend at Royal Hackaway, a 24-hour hackathon in London: what we built, what I learned, and a few tips if it's your first hackathon.

A journey through the Kuohu Creative hackathon, highlighting creative projects and innovative problem-solving approaches.

An entry from the Hackathon Diaries series, where we explore how technology meets nature with Fiskars and plant communication.

Reflections on the Oulu 5GFWD hackathon, exploring 5G innovations and groundbreaking tech solutions.

Human-centered design is never neutral. How designers' own interpretations shape what gets made, and why that's worth taking seriously.
Touchpoints are where an intangible service becomes something you can see and touch. How service design research defines them, and how they're used today.
Posts written for another publication are marked with its logo and open on that site. I revisit and revise old posts often, so if something here is wrong, unclear, or sparks a thought, tell me.