Wooji Juice

Wooji Juice create apps for iPhone and iPad, including the popular podcast editor Ferrite Recording Studio.

If you need support for one of our apps, look in the Tools menu of the app for a Contact Support link and email us from there. Thanks!

2026-02-07

@caseyliss oh yeah, I wasn’t referring to you! just a vibe I often see on mastodon

2026-02-07

@caseyliss but the tl;dr is: (UI/NS)ViewRepresentable wraps (UI/NS)ScrollView used for gesture handling/bounce physics/etc *only* (no rendering, no views contained within), feeding scroll/zoom data back out to SwiftUI bindings. Custom layout view uses those for the actual rendering. Scroll/zoom is tracked in “domain” values which the layout understands, e.g. a calendar app might do something like `CalendarEventView(event).layout(between: event.start…event.end)` & the layout makes it Just Work™️

2026-02-07

@caseyliss It's even more fun when you need different zoom ratios on X & Y axes. And X axis can zoom in to be literally many millions of pixels (technically, billions are supported) wide.

(SwiftUI can't do this natively. Nor can UIKit or AppKit, so… *shrug*. Once again, I appear to be out-of-lockstep with all the SwiftUI haters. I have my own reusable cross-platform solution, it’s… unusual, and wouldn't fit in a toot. At least CGFloat is Double these days, running out of FP precision sucks…)

Wooji Juice boosted:
Stephen Roblesstephenrobles
2026-02-02

📣 Podcast News!

Honored to announce I’m joining David Sparks on Mac Power Users as regular co-host! I have big shoes to fill as @ismh86 steps back to focus on Relay, Cross Forward, and continues on Connected, but I look forward to the challenge 💪

Primary Tech, my YT channel, and everything else will continue as normal. Excited for this next season!

2025-12-23

@paul I've also seen this, also in the iPhone 13 mini simulator. Even beyond the status bar/safe area, things get real weird when that’s visible. Can't remember how I fixed it, but once I did, it stayed fixed. I _think_ it was some kind of simulator window frame change thing? Like rotating the virtual screen to landscape & back, or changing the window pixel settings, or toggling device bezel, something like that maybe?

2025-12-15

How? You need to implement the `RoundedRectangularShape` protocol. This defines a `func corners(in size: CGSize?) -> Corners?` method you need to implement, and those are the corner radii the glass highlight will use.

It’s pretty straightforward once you know, but I haven’t seen it documented anywhere as affecting interactive Liquid Glass.

2025-12-15

iOS 26 Liquid Glass + SwiftUI thing I recently discovered: If you're using `glassEffect(in:)` with a custom Shape, and you're using "interactive" glass, it'll render the interaction highlight as a capsule, _not_ your custom shape. This will often look bad because of the mismatch, esp. at corners.

But you can force it to use a roundrect of arbitrary radius — limited, but great if you're rendering (say) a "speech bubble" shape, as you can at least get it to highlight everything except the "tail”…

Wooji Juice boosted:
2025-11-18

Just posted on Six Colors: Traveling with the iPad Pro, 10 years on

sixcolors.com/post/2025/11/tra

2025-11-05

A lot's changed since then! From MP3 export to multichannel recording to Apple Pencil and mouse support, customisable keyboard shortcuts, windowing, auto levelling, advanced search and smart folders, and much more!

A screenshot of Ferrite’s main library/recording screen, running on iPad, back in 2015 — in the days before Split View or windowing, before multichannel recording, MP3 export, mouse or pencil support, and so much more.A screenshot of Ferrite 3’s main library/recording screen, as of the latest release running on iOS 26.
2025-11-05

Exactly 10 years ago today, Ferrite 1.0 was released to the App Store! It's been a pretty wild decade. Here's to 10 years of Ferrite, and many more to come…

2025-10-24

@caseyliss This is a widespread one, I filed it in August with FB19608275 (“Recent Similar Reports: None" — suuure…). There is, however, a workaround. This code (from the repro project I attached to the feedback) shows how:

Screenshot of Swift source in Xcode describing a SwiftUI Menu with a primaryAction. It demonstrates that Label() works, Image() does not, but as a workaround, Image() can be made to work using allowHitTesting().
2025-10-13

@ptjtsubasa Both two-finger tap and the Zoom command will zoom to the selection, unless you're already zoomed to the selection/don't have a selection, in which case they will zoom out to the whole project. They're useful for quickly zooming out to get an overview of the project, then back in to the part you're working on. In my tests (iPad Pro, iOS 26.0.1) this is working correctly, as does +/- to zoom in/out by 0.5x/2x.

2025-10-01

By “low quality”, I mean phone-call level: mono, low sample rate, low bit rate — all-round bad. Ferrite will detect this & warn you, but, it’s still not ideal. So Ferrite only enables this when requested. Otherwise, anyone trying to edit (not record) using non-AirPods Bluetooth headphones would hear their sound quality trashed.

2025-10-01

Ferrite 3.2.1 is out today, with support for high-quality recording from AirPods (with H2 chip: AirPods 4, AirPods Pro 2 or 3)!

Note: this requires iOS 26, and you’ll need to enable the feature in Ferrite, Tools → Settings → Recording.

Why? Well, an iOS 26 bug means high-quality AirPods recording doesn’t work unless you also enable *low-quality* Bluetooth recording. And enabling *that* destroys the audio quality of *both* recording *and* playback if you connect any other Bluetooth headphones.

2025-09-16

@upgrade Thanks for mentioning Ferrite's new background export! That update was released to the App Store yesterday, so folks should be able to try it out now.

2025-09-05

@mackarous It's 100% a bug, not a feature. Label() is a useful tool, is accessible, and has been my default choice for buttons for years — but there are many situations where you need custom rendering. Breaking button-presses in those situations is a bug.

2025-09-04

@simonbs I have a feedback filed with a 100% repro project (no response, of course). Although the case I’ve seen is quite specific: menu buttons with a primary action where the menu's label content is not a Label() but instead some other kind of view. The action won't fire if you tap on the label content, but will if you tap on the surrounding area (Pencil, trackpad or Universal Control are good for testing this). Workaround: disable hit testing on the label content (only).

2025-08-23

@_inside @stroughtonsmith In August & September 2023, I received ~50 blank emails via my apps “Contact Support” features, from iCloud email addresses (random, obviously machine-generated, similar to “hide my email”). Was worrying as they were from unreleased TestFlight builds. Was less worrying when I saw the timestamps corresponded to hits to our update-checking web servers from Apple-owned IP addresses. Concluded it was _probably_ some kind of automated Apple-internal UI fuzzing. But still.

2025-08-06

@stephenrobles Don't currently have plans for that, but if you drop me an email with some idea of what kind of thing, then maybe?

2025-08-06

And finally, there's one more thing I hope to be able to announce soon…

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst