noted.do

🍁

@hhuishiu

Building an Offline Quotes App in SwiftUI: a 50,000-Quote Library, a Daily Quote Without a Server, Honest Streaks and Share-as-Image

Originally published at https://bestlatestapps.com/blog/building-an-offline-quotes-app-in-swiftui/ Bundling and importing a large library into SwiftData, picking a "quote of the day" deterministically, search with recent queries, collections, time-zone-safe streaks, rendering shareable quote cards with ImageRenderer, and Light/Dark/Auto themes Facts and Quotes app icon A quotes app looks like the simplest thing in the App Store: a list of text and a share button. Then you build one and the real questions show up. Where do 50,000 quotes live, and how do they get onto the phone without a…

Read post

Building an Offline eBook Reader for iOS: Downloads, Typography Settings, Reading Progress That Survives Font Changes, and Highlights in the iOS 26 Text APIs

Originally published at https://bestlatestapps.com/blog/building-an-offline-ebook-reader-for-ios/ Downloading and storing public-domain books, previewing before you download, a UITextView-based reader with font, line height, margin and theme settings, saving your place as a character offset instead of a page number, bookmarks and highlights (including iOS 26's multi-range selection), reading time estimates and reading statistics Novels Club app icon There's something special about reading a classic on your phone at night, when the book is more than a century old and the screen is the…

Read post

Building an Offline-First Bible Reader on iOS: Bundled SQLite, Full-Text Search and iCloud-Synced Notes

Originally published at https://bestlatestapps.com/blog/building-an-offline-first-bible-reader-on-ios/ How I'd structure a scripture app that works on a plane: a read-only text database, fast search, user data that follows you between devices, read-aloud and a verse-of-the-day widget Bible Study AI app icon The first app I ever published under my App Store developer name was a Bible reader. It went live on 20 April 2020, a day ahead of the next few apps I shipped that month, and today it's called Bible Study AI – Read Offline. It has grown a lot since then: reading plans, devotionals, a…

Read post

Convert-As-You-Type Currency Conversion in Swift: Decimal Maths, Cached Rates and Locale-Aware Formatting

Originally published at https://bestlatestapps.com/blog/convert-as-you-type-currency-conversion-in-swift/ Why Double is the wrong type for money, how to derive any cross rate from one base, keeping rates fresh without a refresh button, and formatting 150+ currencies correctly Currency Converter : Fast app icon A currency converter is used at the worst possible moments: at a market stall abroad, at a checkout page in another currency, in a taxi with a meter running. Nobody wants to tap "Convert". Nobody wants a spinner. And nobody wants to see 0.30000000000000004 on the screen. Currency…

Read post

Drag-to-Connect and Game Center Leaderboards in a SwiftUI Puzzle Game, Updated for iOS 26

Originally published at https://bestlatestapps.com/blog/drag-to-connect-and-game-center-leaderboards-in-a-swiftui-puzzle-game/ A dot-matching board drawn with Canvas and TimelineView, drag gestures that chain same-colour dots, speed-based scoring and rising difficulty, pause and resume, and modern Game Center: authentication, submitting scores, the access point, and what iOS 26 deprecates Speck Match app icon Speck Match is a puzzle game about speed. You tap and drag to connect matching coloured dots and clear them from the board, and the faster you match, the higher your score. New dots…

Read post

From Barcode to PDF: Building a Private, Offline Medication Tracker with VisionKit, WidgetKit and PDFKit

Originally published at https://bestlatestapps.com/blog/from-barcode-to-pdf/ Scanning a box to add a medication, a SwiftData model shared with widgets, adherence statistics, a doctor-ready PDF report, and CSV/JSON export that keeps everything on the device Track Your Pills app icon I have two medication apps on the App Store. The first, Daily Pills | Reminder, does one thing: remind you on time and count your supply. I've written about its notification engineering separately. The second, Track Your Pills, came out of what people asked for next: "Can I just scan the box?" "Can I show my…

Read post

Medication Reminders That Actually Fire: Local Notifications, the 64-Notification Limit and Supply Math

Originally published at https://bestlatestapps.com/blog/medication-reminders-that-actually-fire/ Repeating calendar triggers, a notification budget, "Taken" and "Snooze" actions, run-out dates and on-device privacy, from building a pill reminder app Daily Pills | Reminder app icon Most apps can afford a missed notification. A medication reminder can't. If the 9 p.m. reminder silently doesn't arrive, someone misses a dose, and they stop trusting the app the same evening. Daily Pills | Reminder is my take on the simplest version of this problem, live since May 2020: set the times you take…

Read post

Shipping a 4K Wallpaper App Without Running Out of Memory: ImageIO Downsampling, Core Image Blur and Add-Only Photos Access

Originally published at https://bestlatestapps.com/blog/shipping-a-4k-wallpaper-app-without-running-out-of-memory/ Decoded-image maths, thumbnails that don't decode the full file, a blur editor that keeps edges clean, saving with the minimum permission, and why your app can't set the wallpaper itself Wallpapers HD: Exotic 4K app icon A wallpaper app looks like the simplest kind of app there is: a grid of pictures, tap one, save it. Then you load forty 4K images into a scrolling grid on an older iPhone, and the system terminates your app for using too much memory. My app Wallpapers HD:…

Read post

Stop Hand-Rolling Unit Conversions: Foundation's Measurement, Dimension and MeasurementFormatter in Practice

Originally published at https://bestlatestapps.com/blog/stop-hand-rolling-unit-conversions/ Built-in units, custom dimensions, non-linear converters, locale-aware input and output, and the temperature trap that catches everyone Units Converter & Calculator app icon Every unit converter I've seen in a code review starts the same way: a dictionary of conversion factors, a switch on the category and a special case for temperature that someone added after the bug report. It works, until the third person adds a unit and gets one factor upside down. My app Units Converter & Calculator…

Read post

Text Plus Audio, Fully Offline: Building a Prayer App with AVAudioPlayer and Lock-Screen Controls

Originally published at https://bestlatestapps.com/blog/text-plus-audio-fully-offline/ Bundled recitation audio, verse-by-verse highlighting from a cue sheet, background playback, Now Playing controls and the interruptions you must handle, on an app that still supports iOS 11 Hanuman Chalisa app icon Some apps are used in a very particular moment. A prayer app is opened in the morning, often before anything else, frequently by someone older who isn't interested in settings screens, and sometimes somewhere with no signal at all. It has to open instantly, play immediately and never ask for…

Read post

The Device Side of APNs: Building a Push Notification Test Client in Swift

Originally published at https://bestlatestapps.com/blog/the-device-side-of-apns/ Permission, registration, device tokens, foreground presentation and payload inspection, plus the exact HTTP/2 request your backend needs to send Push Notification – Client app icon Every backend developer who has implemented Apple push notifications knows this moment. The server code is written and the request goes out. APNs answers 200, and nothing appears on the phone. Or APNs answers 400 BadDeviceToken, and you have no idea whether the problem is your token, your certificate, your environment or your…

Read post

The Sending Side of APNs: A Mac Push Tester with Keychain Certificates, URLSession Client Auth and HTTP/2

Originally published at https://bestlatestapps.com/blog/the-sending-side-of-apns/ Finding push certificates in the Keychain, importing .p12 files, answering APNs's client-certificate challenge in URLSession, building the exact request (path, headers, payload), sandbox vs production, silent pushes, and reading APNs's error responses, all without a server Push Notification In my article on Push Notification – Client, I covered the device side of APNs: permission, registration, device tokens and showing what arrives. This is the other end of the pipe. When you're building push notifications,…

Read post

Tic Tac Toe in SwiftUI, Done Properly: Value-Type Game State, Win Detection and an Unbeatable Minimax Opponent

Originally published at https://bestlatestapps.com/blog/tic-tac-toe-in-swiftui-done-properly/ The smallest game worth architecting: an immutable board, testable rules, a view that just renders state, and the classic AI you can bolt on in 40 lines Tic Tac Toe : Time Pass app icon Tic tac toe is the "hello world" of game development, which is exactly why it's worth doing properly. It's small enough to hold in your head, but it still has every piece a real game needs: state, rules, turns, an end condition, a UI that reflects state, and, if you want it, an opponent that thinks. One of my…

Read post

Unlocking subscriber portability

Privacy by default is the way the internet should be. But it's beneficial to publish thoughts we're ready and comfortable sharing with the world. Listed was founded as the public-facing counterpart to the very private Standard Notes. With Listed, you share and publish select thoughts to the world wide web. But there's a catch. You're locked in. Once you build an audience of email subscribers on Listed, you'll never be able to take them with you if you decide to move on and use a different tool. Savvy customers recognize this early and this prevents them from starting to use Listed in the…

Read post

PSAs

“microfiber” isn’t some revolutionary fabric technology. It’s plastic. If your bedsheets are microfiber, you are sleeping on a bed of plastic water bottles. it’s not so much the dryer or washer shrinking your clothes. It’s probably also the detergent. I’ve washed on delicate cold water cycles with no spin and have had clothes still shrink and degrade in quality. Use very low amounts of detergent. A little goes a long way. if you spray soap water on an ant, it kills the ant and disintegrates its body. Soap is serious stuff. Unless you’re a car mechanic, you don’t need to use it ten times a…

Read post