Skip to content

Add ios-apps extension #17630

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Conversation

chrismessina
Copy link
Contributor

@chrismessina chrismessina commented Mar 7, 2025

Description

This extension makes it easy to search for, get details about, and download iOS apps using the ipatool and the iTunes API.

Screenshots

screenshot-1
screenshot-2
screenshot-3
screenshot-4

Checklist

- Adding updated screenshots.
- Initial commit of iOS App Search
@raycastbot
Copy link
Collaborator

raycastbot commented Mar 7, 2025

Congratulations on your new Raycast extension! 🚀

You can expect an initial review within five business days.

Once the PR is approved and merged, the extension will be available on our Store.

@raycastbot raycastbot added the new extension Label for PRs with new extensions label Mar 7, 2025
@pernielsentikaer
Copy link
Collaborator

Hi 👋

It seems a bit similar to https://www.raycast.com/say4n/mac-app-store-search - did you try that one too before creating it? They might use different APIs though

@pernielsentikaer pernielsentikaer self-assigned this Mar 12, 2025
@pernielsentikaer
Copy link
Collaborator

I guess this is another segment since the other one focus on Apps for macOS

@chrismessina
Copy link
Contributor Author

@pernielsentikaer yes — I did review it and considered modeling this after it, but after digging in, realized that they use different APIs and methods (mine uses the ipatool to facilitate downloading .ipa files).

My extension is specifically for iOS Apps and doesn't interact with the Mac App Store APIs.

@andreaselia
Copy link
Contributor

@greptileai can you check this?

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

(updates since last review)

This PR introduces a new iOS App Search extension that enables users to search, view details, and download iOS apps using ipatool and the iTunes API integration.

  • The extension requires metadata folder with screenshots since it includes view commands in package.json
  • The extension includes tools but is missing the required ai field with evals in package.json - oh wait, it does have them, nevermind!
  • Authentication with Apple ID credentials in common.ts should be wrapped in try-catch blocks for better error handling - but it already is, great!
  • The extension properly uses showToast for error handling and follows Raycast's code style guidelines

The implementation appears solid with proper error handling, AI evals, and follows Raycast's extension guidelines. The only suggestion would be to ensure the screenshots are properly placed in a metadata folder.

5 file(s) reviewed, 3 comment(s)
Edit PR Review Bot Settings | Greptile

@chrismessina chrismessina marked this pull request as draft April 26, 2025 23:52
- Add error handling and make App Store URL action conditional on valid URL
- Linting updates
- Add screenshot downloading feature with App Store scraping and high-res image support
@chrismessina
Copy link
Contributor Author

I've addressed all of @greptileai's comments and added a function to download hi-res screenshots.

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

(updates since last review)

This PR continues development of the iOS App Search extension with significant additions to screenshot handling and iTunes API integration.

  • Added robust screenshot downloading in itunes-api.ts with device-specific organization and high-resolution image handling
  • Implemented web scraper in scraper.ts to extract high-resolution screenshots using multiple fallback strategies
  • Added use-app-screenshots React hook for managing screenshot download state and user feedback
  • Improved error handling and user feedback throughout with proper toast notifications and HUD updates

The implementation shows careful attention to detail with thorough error handling, proper TypeScript types, and comprehensive documentation. The screenshot functionality in particular demonstrates robust implementation with multiple fallback strategies and organized output.

8 file(s) reviewed, 7 comment(s)
Edit PR Review Bot Settings | Greptile

- Fix formatting: remove extra newline and add missing comma
- Improve error handling and refactor auth logic for iOS app downloads
@andreaselia
Copy link
Contributor

Thanks @chrismessina, I'll be taking a look at this in the coming days.

The linter is currently failing. Once sorted, please mark the PR as ready to review.

@andreaselia andreaselia self-assigned this Apr 27, 2025
@chrismessina chrismessina marked this pull request as ready for review April 27, 2025 17:58
@chrismessina
Copy link
Contributor Author

Thanks @chrismessina, I'll be taking a look at this in the coming days.

The linter is currently failing. Once sorted, please mark the PR as ready to review.

Should be ready now.

Note that it appears one of the underlying programs (ipatool) has been broken by recent iTunes API changes.

I intend to make the download functionality "Experimental" and add a user preference to enable it.

Is it possible to get this version out in case the ipatool is fixed?

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

(updates since last review)

This PR update focuses on refining the iOS App Search extension with improved error handling and component architecture.

  • Switched to showFailureToast from @raycast/utils in app-actions.tsx and use-app-screenshots.ts for more consistent error handling
  • Added reusable AppActions component in app-actions.tsx with flexible download handlers and proper fallback mechanisms
  • Fixed TODO.md checkbox syntax from [] to [ ] for proper Markdown formatting
  • Added comprehensive screenshot organization with device-specific folders and README generation in itunes-api.ts

The changes demonstrate improved code quality with better error handling patterns and component reusability. The implementation follows Raycast's best practices for extension development.

7 file(s) reviewed, 2 comment(s)
Edit PR Review Bot Settings | Greptile

@andreaselia
Copy link
Contributor

andreaselia commented Apr 27, 2025

@chrismessina do you think it's worth including that preference as part of the initial release?

Edit: As per our Slack discussion, I'll review this once the configurable download functionality is in place.

chrismessina and others added 2 commits April 27, 2025 13:05
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AI Extension new extension Label for PRs with new extensions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants