A modern cross-platform application for viewing and extracting ZIP archives, built with SwiftUI. Available for macOS and iOS/iPadOS.
- Hierarchical File Browser: Navigate through zip contents with a Finder-like view
- File & Folder Selection: Select single or multiple items for extraction
- Quick Look Preview: Press spacebar to preview files without extracting (text, images, PDFs, etc.)
- Search & Filter: Quickly find files and folders within the archive
- Flexible Extraction: Extract individual files, folders, or the entire archive
- Drag & Drop Support: Simply drag a zip file into the app to open it
- File Picker: Use the traditional file picker dialog to open zip files
- User-Controlled Extraction: Choose the destination folder for each extraction
- Progress Tracking: Visual feedback during extraction operations
- macOS 14.0 (Sonoma) or later
- Xcode 15.0 or later (for building from source)
- Swift 5.9 or later
- iOS/iPadOS 17.0 or later
- Xcode 15.0 or later (for building from source)
- Swift 5.9 or later
- Go to the Releases page
- Download the latest
Grizzly-X.X.X.dmg - Open the DMG file
- Drag
Grizzly.appto the Applications folder - Right-click the app and select "Open" the first time to bypass Gatekeeper
git clone https://github.com/YOUR_USERNAME/Grizzly.git
cd Grizzly/ZipViewer
swift build
swift run./build-app.shThis creates a full .app bundle at .build/release/Grizzly.app with:
- Custom app icon
- File associations for .zip files
- Proper bundle structure for distribution
To install:
open .build/release/Grizzly.app # Run the app
# or
cp -r .build/release/Grizzly.app /Applications/ # Install to Applicationsopen Package.swift
# Then press Cmd+R to run
# For iOS: Select an iOS destination in Xcode before buildingSee IOS_BUILD_INSTRUCTIONS.md for detailed instructions on building and deploying to iOS devices and simulators.
Key differences on iOS/iPadOS:
- Files extract to the app's Documents folder
- Use document picker instead of drag & drop
- Optimized touch interface
- Share extracted files via iOS share sheet
- Drag & Drop: Drag a .zip file onto the application window
- File Menu: Use Cmd+O or File → Open to select a zip file
- Double-click: Associate .zip files with Grizzly and open them directly
- Double-click folders to navigate into them
- Double-click files to extract and open them with default application
- Back button or breadcrumb navigation to go up directories
- Single-click to select a file or folder
- Cmd+Click to toggle selection (multi-select)
- Shift+Click to select a range of items
- Arrow keys (↑/↓) to navigate between items
- Return to open selected file or enter folder
- Double-click a file to extract and open it with the default application
- Press Spacebar to Quick Look preview without extracting
- Preview supports: images, PDFs, text files, code files, and more
- Select the files/folders you want to extract
- Click the "Extract" button in the toolbar or right-click and select "Extract..."
- Choose the destination folder
- Click "Extract" to confirm
Use the search bar at the top of the sidebar to filter files and folders by name.
↑/↓- Navigate between itemsShift+↑/↓- Extend selection (range select)Cmd+↑- Navigate up to parent folderCmd+↓- Navigate into selected folderReturn- Open file or enter folderDelete/Backspace- Clear selection or go up
Cmd+A- Select all in current viewEscape- Clear selectionCmd+C- Copy selected file paths
Cmd+O- Open zip file / Open selected filesSpacebar- Quick Look previewCmd+E- Extract selected itemsCmd+Shift+E- Extract allCmd+F- Focus search field
The app is built using modern SwiftUI patterns with async/await:
- Models:
ZipEntryfor representing archive contents,ZipArchiveManagerfor memory-efficient archive operations - ViewModels:
AppState(@MainActor) for managing application state with async operations - Views: SwiftUI components with comprehensive keyboard navigation and accessibility support
For detailed technical information, see PROJECT_SUMMARY.md
- ZIPFoundation 0.9.0+: Memory-efficient zip archive handling with streaming support
Contributions are welcome! Please feel free to submit a Pull Request.
To create a new release:
-
Tag your commit with a version number:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions will automatically:
- Build the app
- Create a DMG installer
- Publish a new release with the DMG attached
-
The release will appear on the Releases page
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have suggestions, please open an issue on GitHub.