This is the official app for try! Swift Tokyo 2024/2026.
We've submitted the app to the App Store as MVP, and it's currently under review. Here's a list of features that are currently available and those that are planned for future releases:
- View the schedule
- View the sponsors
- Check your favorite sessions
- Receive notifications for upcoming sessions
- Localize the app in English and Japanese (partially done)
- macOS support
- watchOS support
- tvOS support
- visionOS support
- Android support (via Skip framework)
- Xcode 15.3 and later (Swift 5.10 and later)
- Skip framework
- Android Studio
- JDK 17 or later
Available on the App Store soon, or you can build the app yourself. See the Getting Started section for more information.
- Clone the repository
- Open
trySwiftTokyo.xcworkspacein Xcode - Build and run the app
The Android version uses Skip to transpile Swift/SwiftUI to Kotlin/Jetpack Compose.
- Install Skip following the official instructions
- Navigate to the Android directory:
cd Android - Build the project:
swift build
- Run on Android emulator or device:
cd .build/plugins/outputs/skipstone/AndroidApp/skipstone ./gradlew installDebug
The Android version includes:
- Schedule viewing (Day 1, Day 2, Day 3)
- Sponsors listing
- Venue information with directions
- About section with organizer information
Note: Some iOS-specific features are not available on Android:
- Live Translation (requires iOS SDK)
- MapKit integration (uses static venue information instead)
- Install the Ignite command-line tool by following the instructions at twostraws/Ignite
- Open
trySwiftTokyo.xcworkspacein Xcode - Select the
Websitescheme in Xcode - Run the project (⌘+R) and verify the build succeeds in the console
- Run
ignite run --previewfrom the command line
We welcome contributions to the app! Please refer to the Contributing Guidelines for more information.
This project demonstrates how Skip enables code sharing between iOS and Android with nearly identical SwiftUI syntax.
The Shared/ module contains UI components that work on both platforms:
SessionRowView- Session list itemSessionDetailView- Session detail screenSponsorGridView- Sponsor grid layoutSpeakerAvatarView- Speaker avatar component
| Aspect | iOS | Android (Skip) |
|---|---|---|
| UI Framework | SwiftUI | SwiftUI → Jetpack Compose |
| State Management | TCA (@Reducer) |
@Observable ViewModel |
| Navigation | NavigationStack |
NavigationStack |
| Data Models | SharedModels |
SharedModels |
// This code runs on BOTH iOS and Android
ForEach(conference.schedules, id: \.time) { schedule in
Text(schedule.time, style: .time)
.font(.subheadline.bold())
ForEach(schedule.sessions, id: \.title) { session in
SessionRowView(session: session)
}
}try-swift-tokyo/
├── App/ # Xcode project wrapper
├── iOS/ # iOS app (SwiftUI + TCA)
│ └── Sources/
│ ├── AppFeature/
│ ├── ScheduleFeature/
│ ├── SponsorFeature/
│ ├── GuidanceFeature/
│ ├── LiveTranslationFeature/
│ └── trySwiftFeature/
├── Android/ # Android app (Skip)
│ └── Sources/
│ ├── AndroidApp/
│ ├── ScheduleFeature/
│ ├── SponsorFeature/
│ ├── VenueFeature/
│ └── AboutFeature/
├── Shared/ # Shared UI components (iOS + Android)
│ └── Sources/
│ └── SharedViews/
├── SharedModels/ # Shared data models
├── DataClient/ # Data fetching client
├── Server/ # Vapor backend
└── Website/ # Ignite static site
The first try! Swift app (a repository named final) was released in 2016. At the time, it was written in Swift 3. Now is a good time for a new app, so We rebuilt it based on TCA and SwiftUI. Please take a look and enjoy. https://github.com/tryswift/trySwiftAppFinal
This project is licensed under the MIT License - see the LICENSE file for details.