stackotter's Avatar

stackotter

@stackotter.dev

Aussie software developer & uni student; Rock climber; Loves Swift, Rust and Svelte; Creator of SwiftCrossUI, Swift Bundler and Delta Client. https://stackotter.dev https://mastodon.social/@stackotter

156
Followers
173
Following
132
Posts
25.11.2024
Joined
Posts Following

Latest posts by stackotter @stackotter.dev

Preview
Release v0.2.0 - 2.5 years later Β· moreSwift/swift-cross-ui Overview The headline feature of the past 2.5 years of work is probably the new layout system for most users. It standardizes layout behaviour across all backends, making it much easier to make you...

I've just released SwiftCrossUI v0.2.0 (two and a half years after v0.1.0), and I'm aiming to begin making regular releases now that I'm focusing on SwiftCrossUI full time.

492 commits, 127 PRs, and 77k changed lines.

github.com/moreSwift/sw...

04.03.2026 03:48 πŸ‘ 7 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0
Preview
Swift.org Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.

If you'd like to try it out, follow the Swift Android getting started guide, then use the command in the screenshot to build SwiftCrossUI's CounterExample (on the android_support branch); www.swift.org/documentatio...

18.02.2026 06:48 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Add Android support by stackotter Β· Pull Request #136 Β· moreSwift/swift-bundler This is a WIP. I'll fill out the description once things are bit more complete. Todo Resolve Android Swift SDK path ourself, cause SwiftPM isn't good at choosing when there are multiple A...

This is all in the as-of-yet unmerged Android support PR: github.com/moreSwift/sw...

18.02.2026 06:48 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

Swift Bundler can now automatically locate compatible Swift Android SDK + Swift toolchain pairs on the user's behalf. It also supports automatically installing and launching apps on Android devices and emulators.

18.02.2026 06:48 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

If you know anyone who might be interested in the project, I'd love if you could share the video with them!

09.02.2026 12:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
SwiftCrossUI development update (Dec 2025 & Jan 2026)
SwiftCrossUI development update (Dec 2025 & Jan 2026) YouTube video by moreSwift

The Ladybird browser project has inspired me to begin making regular SwiftCrossUI development update videos. The first one is up on YouTube now and covers the last two months of SwiftCrossUI development. Let me know what you think! youtu.be/HgRO7eIHkyE

09.02.2026 12:53 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The talk is 10 minutes long, and covers the basics of SwiftCrossUI, Swift Bundler, hot reloading, and Mia’s Swift Data alternative called Amethyst Vein.

07.02.2026 01:53 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
SwiftCrossUI: Swift apps, everywhere
SwiftCrossUI: Swift apps, everywhere YouTube video by Swift Meetups

One of SwiftCrossUI’s amazing contributors, Mia Koring, recently presented a lightning talk about SwiftCrossUI at the Swift Pre-FOSDEM Community Event. Go check out the recording on YouTube if you missed it! youtu.be/EC9qVCYBVyk?...

07.02.2026 01:53 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Wrote it in Swift (rather than my usual Python for scripting) with as many libraries as I wanted, and it was relatively enjoyable! The annoying part was using an oddly structured library for interacting with the GitHub API (which was missing bindings for the Actions part of the GitHub API).

04.02.2026 13:56 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Made a small utility for checking in on my repositories at a glance. It solves something that has bothered me for a while, which is that GitHub doesn't display a diff from the latest review to current changes (instead it shows which *files* changed since the last review but diffs against the base).

04.02.2026 13:56 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image Post image

I've been working on Android support for Swift Bundler this past week or so, and it can now bundle SwiftCrossUI applications into Android APKs fully automatically πŸŽ‰

To finish off basic Android support, I still have to implement Android device/emulator discovery and automatic APK running.

03.02.2026 02:59 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
moreSwift moreSwift helps developers to build cross platform apps with Swift - moreSwift

As SwiftCrossUI and Swift Bundler have grown, it’s become clear that they deserve to live under their own org.

For that reason, I’ve created the moreSwift org and transferred SwiftCrossUI and Swift from my personal account to the org.

β€œCreate your next app with moreSwift” πŸ˜‰

github.com/moreSwift

16.01.2026 09:08 πŸ‘ 5 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

They should also make it easier for people to port existing native apps to SwiftCrossUI by incrementally replacing native view implementations with cross-platform SwiftCrossUI implementations. FooHostingView implementations will also be very useful in that space, and are planned.

09.01.2026 08:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

These interoperability features will be great for allowing developers to hack together features that SwiftCrossUI doesn't have yet, which will be useful even once SwiftCrossUI is more mature (just look at SwiftUI).

09.01.2026 08:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The first example shows off the new `inspect(_:)` family of modifiers, by using the one for Text to reimplement the textSelectionEnabled modifier. And the second shows off the new …Representable family of protocols.

09.01.2026 08:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image Post image

I've just merged a bunch of native interoperability features into SwiftCrossUI; namely native widget inspection modifiers, and …Representable protocols similar to NS/UIViewRepresentable from SwiftUI; github.com/stackotter/s...

09.01.2026 08:25 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
limitsLayoutForSuspiciousContents | Apple Developer Documentation A Boolean value that indicates whether the layout manager avoids laying out unusually long or suspicious input.

Any ideas what exactly the NSLayoutManager.limitsLayoutForSuspiciousContents does? I feel like it probably attempts to filter out content that looks like it could be trying to trigger memory corruption bugs in the text engine?

developer.apple.com/documentatio...

02.01.2026 03:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

I feel like Google slightly misinterpreted the sentiment of my search query...

01.01.2026 04:20 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Layout system rewrite by stackotter Β· Pull Request #278 Β· stackotter/swift-cross-ui This PR addresses SwiftCrossUI's biggest layout performance issues. It contains quite a few structural changes that pave the way for future optimisations as well. Optimisations Splitting View.u...

I've merged my SwiftCrossUI layout performance PR, and I've updated the PR description with a detailed write-up of the optimisations that it contains in case anyone is interested: github.com/stackotter/s...

01.01.2026 03:38 πŸ‘ 5 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Exactly! And we get good API consistency guarantees that we wouldn’t get if we instead wrote each view (e.g. Text) once for each platform, like I believe Tokamak does.

01.01.2026 00:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

There's a bit of boilerplate atm, but once I have another unit test using DummyBackend I'll abstract that out (no use abstracting from one example).

31.12.2025 00:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I also just used DummyBackend to make SwiftCrossUI’s first proper cross platform UI-related unit test: github.com/stackotter/s...

The test reproduces an issue where my new ScrollView impl didn’t notify the underlying scroll widget of changes to scroll bar presence when processing layout updates.

31.12.2025 00:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The benchmarks that I've been using to measure my layout system optimisation progress use DummyBackend to simulate basically everything involved in handling a view update other than the backend-specific part of displaying the results on screen. Great for a wholistic view of performance!

31.12.2025 00:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

A great thing about SwiftCrossUI's backend-based architecture, is that it was relatively easy to implement a DummyBackend specifically made for cross platform unit testing and layout performance benchmarks.

31.12.2025 00:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Dependency tracking affects window resizing performance a great deal because you can be sure that none of the content has changed, and thus can reuse basically any useful previous computations. I want to add state dependency tracking to SwiftCrossUI, but for now am focusing on the layout algorithm.

30.12.2025 23:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I did some quick testing against SwiftUI, and it appears that for my benchmarks, SwiftCrossUI's initial layout speed (when SwiftUI isn't caching results) is within a factor of 2 of SwiftUI. The advantage that SwiftUI still has is that it can cache across updates due to state dependency tracking.

30.12.2025 23:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Layout system rewrite by stackotter Β· Pull Request #278 Β· stackotter/swift-cross-ui This PR addresses SwiftCrossUI's biggest layout performance issues. It contains quite a few structural changes that pave the way for future optimisations as well. Optimisations Splitting View.u...

I've been working on a whole heap of performance improvements for SwiftCrossUI's layout system over the past two weeks, and they're almost ready to merge.

One of my benchmarks is 68x faster, and an app that I've been testing against is now 28x faster at window resizing.

github.com/stackotter/s...

30.12.2025 23:58 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

For context, I didn't touch SwiftCrossUI for about 3 weeks (to finish uni), and came back to failing Windows CI (without changing anything) thanks to upstream vcpkg issues.

28.11.2025 11:39 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
3 commits with failing workflows, and a 4th in progress

3 commits with failing workflows, and a 4th in progress

4th time's a charm? πŸ₯²

28.11.2025 11:37 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

OMG OMG OMG

This built on Linux (Ubuntu with gnome) using SwiftCrossUI @stackotter.dev. It should build happily on windows once I get a fresh VM set up.

Fake data at the moment. But the guts won’t be hard to port from a previous project github.com/boberito/jam...

14.11.2025 21:49 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0