# Teabyte A blog by Alexander Weiß about app development for Apple`s platforms (iOS, iPadOS, watchOS, visionOS and macOS) and Swift ## Blog - [Concentric Buttons with OS 27's SwiftUI APIs](https://alexanderweiss.dev/blog/2026-08-09-concentric-button-os-27-swiftui-apis) - [The Anatomy of a Reusable SwiftUI View](https://alexanderweiss.dev/blog/2026-07-12-the-anatomy-of-a-reusable-swiftui-view) - [Multi-Version Multi-Framework DocC Documentation](https://alexanderweiss.dev/blog/2026-06-28-multi-version-multi-target-docc) - [@_exported import VS public import](https://alexanderweiss.dev/blog/2026-01-16-exported-import-vs-public-import) - [Adaptive sheet presentation in SwiftUI](https://alexanderweiss.dev/blog/2025-12-30-adaptive-sheet-presentation-in-swiftui) - [SwiftUI's editMode environment](https://alexanderweiss.dev/blog/2025-03-16-swiftui-reacting-to-edit-mode) - [DocC for Multi-Platform Documentation](https://alexanderweiss.dev/blog/2025-03-09-docc-for-multi-platform-documentation) - [Effortless SwiftUI Theming](https://alexanderweiss.dev/blog/2025-01-19-effortless-swiftui-theming) - [The Power of ShapeStyle for Colour theming in SwiftUI](https://alexanderweiss.dev/blog/2024-12-27-the-power-of-shapestyle-for-colour-theming-in-swiftui) - [Using TextRenderer to create highlighted text](https://alexanderweiss.dev/blog/2024-06-24-using-textrenderer-to-create-highlighted-text) - [Style your TipKit Tips](https://alexanderweiss.dev/blog/2023-09-16-style-your-tipkit-tips) - [Push Notifications in SwiftUI](https://alexanderweiss.dev/blog/2023-08-13-push-notification-in-swiftui) - [AppStore Connect: Manage Version and build number](https://alexanderweiss.dev/blog/2023-07-04-appstore-connect-manage-app-version-and-build-number) - [AppIntents for Widgets](https://alexanderweiss.dev/blog/2023-06-10-appintents-for-widgets) - [Double Protocol Conformance](https://alexanderweiss.dev/blog/2023-04-23-double-protocol-conformance) - [LPMetadataProvider - Extract URL metadata](https://alexanderweiss.dev/blog/2023-04-16-lpmetadataprovider-extract-url-metadata) - [SwiftUI's .task modifier](https://alexanderweiss.dev/blog/2023-03-05-swiftui-task-modifier) - [Widget Intent recommendations on watchOS and a bug](https://alexanderweiss.dev/blog/2023-02-22-widget-intent-recommendations-and-a-bug) - [iOS UI Testing with maestro](https://alexanderweiss.dev/blog/2023-02-11-ios-ui-testing-with-maestro) - [Detect watchOS app state changes](https://alexanderweiss.dev/blog/2023-02-01-detect-watchapp-state-changes) - [Accidental Multiple Push with SwiftUI NavigationStack](https://alexanderweiss.dev/blog/2023-01-24-accidental-double-push-with-swiftui-navigationstack) - [Three Ways to communicate via WatchConnectivity](https://alexanderweiss.dev/blog/2023-01-18-three-ways-to-communicate-via-watchconnectivity) - [Modify Long Look Notification View on watchOS](https://alexanderweiss.dev/blog/2022-12-18-modify-long-look-notification-view-on-watchos) - [Redact Lock Screen Widgets when the device is locked](https://alexanderweiss.dev/blog/2022-11-19-redact-your-lockscreen-widgets-when-the-device-is-locked) - [Scale up your app with Microfeatures](https://alexanderweiss.dev/blog/2022-01-12-scale-up-your-app-with-microfeatures) - [Add test data to SPM packages](https://alexanderweiss.dev/blog/2021-05-15-add-test-data-to-spm-packages) - [From UIImage to searchable PDF Part 3](https://alexanderweiss.dev/blog/2021-03-29-from-uiimage-to-searchable-pdf-part-3) - [Empty state with diffable datasource](https://alexanderweiss.dev/blog/2021-03-14-empty-state-with-diffable-datasource) - [From UIImage to searchable PDF Part 2](https://alexanderweiss.dev/blog/2021-01-24-from-uiimage-to-searchable-pdf-part-2) - [SPM tests on GitHub Actions](https://alexanderweiss.dev/blog/2020-12-13-spm-tests-on-github-actions) - [From UIImage to searchable PDF Part 1](https://alexanderweiss.dev/blog/2020-11-28-from-uiimage-to-searchable-pdf-part-1) - [Create your app with SwiftUI only](https://alexanderweiss.dev/blog/2020-06-28-swiftui-only-app) - [AppBuilders 2020 @ 🌍](https://alexanderweiss.dev/blog/2020-05-17-appbuilders-2020) - [Using Firebase with Combine](https://alexanderweiss.dev/blog/2020-04-18-Firebase-and-Combine) - [Use UITextView in SwiftUI](https://alexanderweiss.dev/blog/2020-04-10-uitextview-in-swiftui) - [Bitrise: Let Bitbot do the work](https://alexanderweiss.dev/blog/2019-10-21-bitrise-let-bitbot-do-the-work) - [Conditionally disable an UIView](https://alexanderweiss.dev/blog/2019-09-24-quick-tip-conditionally-disable-uiview) - [Fulfill your promises](https://alexanderweiss.dev/blog/2019-08-31-fulfill-your-promises) - [Swift Conf 2019 @ 🇩🇪](https://alexanderweiss.dev/blog/2019-08-29-swift-conf-2019) - [Automate Your Xcode Project Setup](https://alexanderweiss.dev/blog/2019-08-10-automate-your-xcode-project-setup) - [Swift's Result Type](https://alexanderweiss.dev/blog/2019-07-21-swifts-result-type) - [A simple generic UIPickerDataSource](https://alexanderweiss.dev/blog/2019-07-07-a-simple-generic-uipicker-datasource) - [Custom .xib component for iOS](https://alexanderweiss.dev/blog/2019-06-28-custom-xib-component-ios) - [Write a custom Gradle Kotlin DSL task](https://alexanderweiss.dev/blog/2019-06-20-write-a-custom-gradle-kotlin-dsl-task)