A modern, SwiftUI-native "What's New" presentation framework designed for all Apple platforms. Featuring beautiful animations, gradient backgrounds, remote data loading, and comprehensive customization options for creating engaging release notes and feature announcements.
- โจ Features
- ๐ฏ Quick Start
- ๐จ Preview & Gallery
- โ๏ธ Configuration
- ๐ง Data Sources
- ๐ ๏ธ Platform Support
- ๐ Installation Guide
- ๐ง Troubleshooting
- ๐ Project Structure
- ๐ค Contributing
| Light Native | Dark Native |
![]() | ![]() |
|---|---|
| History View (2.0.0+) | App Icon Support (3.9.6+) |
![]() | ![]() |
|---|---|
| VisionOS Support (4.1.0+) | Mesh Gradient Background (5.3.0+) |
| Feature | Version | Description |
|---|---|---|
| ๐จ Glass Morphism Effects | 5.5.0+ | Modern glass blur effects with customizable transparency |
| ๐ Mesh & Linear Gradients | 5.3.0+ | Beautiful animated gradient backgrounds |
| ๐ฅฝ visionOS & Vision Pro | 4.1.0+ | Native spatial computing support |
| ๐ Auto-trigger on Version Change | 4.0.0+ | Automatically shows when app version or build changes |
| ๐ Flexible Version Numbers | 4.0.0+ | Supports semantic versioning (x.y.z) and simplified (x.y) formats |
| ๐ Special Effects | 3.9.0+ | Seasonal animations (Christmas snowfall) |
| ๐ฑ Drop Notifications | 3.5.0+ | iOS-style notification banners |
| ๐ฅ Firebase Real-Time Database | 3.0.0+ | Live content updates from Firebase |
| ๐ Remote JSON Support | 3.0.0+ | Load content from any REST API endpoint |
| ๐ Version History | 2.0.0+ | Browse all previous releases with navigation |
Add SwiftNEW to your project by adding the package URL in Xcode:
https://github.com/1998code/SwiftNEWKit - Import the framework
import SwiftNEW- Create a simple "What's New" view
struct ContentView: View { @State private var showNew = false var body: some View { VStack { Text("My App") .font(.largeTitle) SwiftNEW(show: $showNew) } } }- Add your content Create a
data.jsonfile in your app bundle with your release notes:
[ { "version": "1.0", "new": [ { "icon": "star.fill", "title": "Welcome", "subtitle": "Get Started", "body": "Thanks for downloading our app! Here's what's new." } ] } ]struct ContentView: View { @State private var showNew = false var body: some View { SwiftNEW( show: $showNew, color: .constant(.blue), size: .constant("normal"), label: .constant("What's New"), labelImage: .constant("sparkles"), history: .constant(true), mesh: .constant(true), glass: .constant(true) ) } }| Light Native | Dark Native |
![]() | ![]() |
|---|---|
| History View (2.0.0+) | App Icon Support (3.9.6+) |
![]() | ![]() |
|---|---|
| VisionOS Support (4.1.0+) | Mesh Gradient Background (5.3.0+) |
| Parameter | Type | Default | Description |
|---|---|---|---|
show * | Binding<Bool> | false | Controls the presentation state |
align | Binding<HorizontalAlignment> | .center | Content alignment (.leading, .center, .trailing) |
color | Binding<Color> | .accentColor | Primary theme color |
size | Binding<String> | "simple" | Button size: "invisible", "mini", "simple", "normal" |
labelColor | Binding<Color> | System color | Button text color |
label | Binding<String> | "Show Release Note" | Button display text |
labelImage | Binding<String> | "arrow.up.circle.fill" | SF Symbol icon name |
history | Binding<Bool> | true | Enable version history navigation |
data | Binding<String> | "data" | Local JSON filename or remote URL |
showDrop | Binding<Bool> | false | Use iOS drop notification style |
mesh | Binding<Bool> | true | Enable mesh gradient backgrounds |
specialEffect | Binding<String> | "" | Special effects: "Christmas" or "" |
glass | Binding<Bool> | true | Enable glass morphism effects |
*Required parameter
SwiftNEW(show: $showNew)SwiftNEW( show: $showNew, color: .constant(.purple), size: .constant("normal"), mesh: .constant(true), glass: .constant(true) )SwiftNEW( show: $showNew, data: .constant("https://api.example.com/releases.json") )SwiftNEW( show: $showNew, label: .constant("New Update"), labelImage: .constant("bell.badge"), showDrop: .constant(true) )SwiftNEW supports multiple data sources for maximum flexibility:
Create a JSON file in your app bundle (typically named data.json):
[ { "version": "1.2.0", "new": [ { "icon": "hammer.fill", "title": "Bug Fixes", "subtitle": "Stability Improvements", "body": "Resolved critical issues and improved overall app performance across all supported platforms." }, { "icon": "sparkles", "title": "New Features", "subtitle": "Enhanced Experience", "body": "Introduced exciting new capabilities including improved animations and modern UI components." }, { "icon": "shield.checkered", "title": "Security Updates", "subtitle": "Enhanced Protection", "body": "Strengthened security measures and updated encryption protocols for better data protection." } ] } ]Load content from any REST API endpoint:
SwiftNEW( show: $showNew, data: .constant("https://api.myapp.com/releases.json") )Direct integration with Firebase:
SwiftNEW( show: $showNew, data: .constant("https://your-project.firebaseio.com/releases.json") )The JSON structure follows this model:
// Reference only - you don't need to implement this public struct Vmodel: Codable, Hashable { var version: String // Version number (e.g., "1.2.0") var subVersion: String? // Optional sub-version or build info var new: [Model] // Array of release items } public struct Model: Codable, Hashable { var icon: String // SF Symbol name (e.g., "star.fill") var title: String // Feature title var subtitle: String // Brief description var body: String // Detailed explanation }- Local Files: Best for static content and faster loading
- Remote APIs: Ideal for dynamic content and A/B testing
- Firebase: Perfect for real-time updates and content management
- Version Format: Use semantic versioning (1.2.3) for better organization
- Content Length: Keep titles short, use body for detailed descriptions
| Platform | Latest Tested | Minimum Required | Key Features |
|---|---|---|---|
| iOS | 18.2 | 15.0+ | Full feature support, drop notifications, glass effects |
| iPadOS | 18.2 | 15.0+ | Optimized layouts, multitasking support |
| macOS | 15.2 | 14.0+ | Native macOS styling, menu bar integration |
| visionOS | 2.1 | 1.0+ | Spatial computing, immersive presentations |
| tvOS | 18.2 | 17.0+ | Remote-friendly navigation, living room UI |
| Tool | Version | Notes |
|---|---|---|
| Xcode | 15.0+ | Required for building and development |
| macOS | 14.0+ | Host development environment |
| Swift | 5.9+ / 6.1+ | Language compatibility and features |
| Feature | iOS | iPadOS | macOS | visionOS | tvOS |
|---|---|---|---|---|---|
| Basic Presentations | โ | โ | โ | โ | โ |
| Mesh Gradients | โ | โ | โ | โ | โ |
| Glass Effects | โ | โ | โ | โ | โ |
| Drop Notifications | โ | โ | โ | โ | โ |
| History Navigation | โ | โ | โ | โ | โ |
| Remote JSON | โ | โ | โ | โ | โ |
| Special Effects | โ | โ | โ | โ | โ |
| Auto-versioning | โ | โ | โ | โ | โ |
Follow these steps to add SwiftNEW to your Xcode project:
| Step | Action | Screenshot |
|---|---|---|
| 1 | Open your Xcode project and select the project file | ![]() |
| 2 | Select your project target | ![]() |
| 3 | Go to "Package Dependencies" tab | ![]() |
| 4 | Click "+" and paste the repository URL | ![]() |
| 5 | Choose your data source approach | See Data Sources section |
https://github.com/1998code/SwiftNEWKit - Import the framework in your Swift files:
import SwiftNEW-
Create your data source (choose one):
- Local: Add
data.jsonto your app bundle - Remote: Use any JSON API endpoint
- Firebase: Configure Firebase Realtime Database
- Local: Add
-
Add to your view with minimal configuration:
SwiftNEW(show: $showNewVersion)- Ensure the
showbinding is set totrue - Check that your data source (JSON file or URL) is accessible
- Verify the JSON format matches the expected structure
- For local files: Ensure
data.jsonis added to your app bundle - For remote URLs: Check network connectivity and URL validity
- Verify JSON structure matches the sample format
- Clean build folder (โ+Shift+K)
- Update to latest Xcode version
- Ensure minimum platform requirements are met
- For large datasets, consider pagination
- Optimize image assets in your JSON data
- Use remote loading for better memory management
- Check GitHub Issues for known problems
- Search GitHub Discussions for community solutions
- Create a new issue with detailed information about your problem
Sources/SwiftNEW/ โโโ SwiftNEW.swift # Main struct with initializers โโโ Model.swift # Data models (Vmodel, Model) โโโ Bundle+Ext.swift # Bundle extensions โโโ Localizable.xcstrings # Localization support โโโ ๐ Views/ โ โโโ SwiftNEW+View.swift # Main body view implementation โ โโโ ๐ Sheets/ โ โ โโโ CurrentVersionSheet.swift # Current version display โ โ โโโ HistorySheet.swift # Version history display โ โโโ ๐ Components/ โ โโโ HeaderView.swift # Header components โ โโโ ButtonComponents.swift # Button components โโโ ๐ Extensions/ โ โโโ SwiftNEW+Functions.swift # Utility functions โโโ ๐ Styles/ โ โโโ AppIconView.swift # App icon display โ โโโ MeshView.swift # Gradient backgrounds โ โโโ NoiseView.swift # Noise effects โโโ ๐ Animations/ โโโ SnowfallView.swift # Special effects (Christmas) SwiftNEW is built with a modular architecture that separates concerns for better maintainability:
- Core Components: Main struct and data models
- View Layer: Presentation components organized by functionality
- Extensions: Utility functions and framework extensions
- Styles: Visual components and gradient effects
- Animations: Special effects and interactive elements
We welcome contributions to SwiftNEW! Here's how you can help:
- ๐ Report Bugs: Open an issue with detailed reproduction steps
- ๐ก Request Features: Suggest new features or improvements
- ๐ง Submit Pull Requests: Fix bugs or implement new features
- ๐ Improve Documentation: Help make our docs clearer
- ๐ Add Translations: Help us support more languages
- Fork the repository
- Clone your fork locally
- Open
Package.swiftin Xcode - Make your changes
- Test thoroughly across platforms
- Submit a pull request
- Follow Swift naming conventions
- Maintain compatibility with minimum platform versions
- Add appropriate documentation comments
- Test on multiple platforms when possible
- Keep changes focused and atomic
- ๐ฌ GitHub Discussions - Questions and community support
- ๐ GitHub Issues - Bug reports and feature requests
- ๐ง Contact the maintainer for complex questions
SwiftNEW is available under the MIT License. See the LICENSE file for details.
This documentation is available in multiple languages:
English | ็นไธญ / ็ฎไธญ / ็ฒต่ช | ๆฅๆฌ่ช | ํ๊ตญ์ด
Help us add more languages by submitting translation pull requests!









