The TestApp.io app is available on both platforms:
Open the app and sign in using the same account you use on the portal. You can sign in with:
If you don't have an account yet, you can create one directly in the app. Once signed in, the app will remember your last login method for faster access next time.
After signing in, you need to be part of a team to see apps and releases. There are two ways to join:
Once you've joined a team, the dashboard will show your apps, recent releases, and team activity.
From the dashboard, tap Apps to see all the apps your team is testing. Each app shows its name, platform (iOS or Android), and the number of active releases.
Tap an app to open its detail view, which has several tabs:
Tap any release to open its details. From there you can install the build directly to your device.
On Android, tap the Install button on the release card. The app will:
Once installed, the button changes to Open, letting you launch the app directly.
On iOS, the app displays a QR code or an install link. Scan the QR code with your camera or tap the link to begin installation through the standard iOS provisioning flow.
Note: iOS installations require that your device's UDID is registered in the app's provisioning profile. If installation fails, ask your team admin to add your device.
When a new release is uploaded, you'll receive a push notification on your phone. Tapping the notification takes you directly to the release so you can install it right away.
Push notifications are also sent for:
You can customize which notifications you receive in Settings → Notification Preferences.
If your team uses task management, you'll see tasks assigned to you in the app. Open any app and go to the Tasks tab to see:
You can update task status directly from the app — mark tasks as in progress, blocked, or done as you test. If a task is linked to a specific release, tap through to install and test that build.
Tasks synced from Jira or Linear will also appear here, with a link back to the original ticket.
Found a bug or want to share feedback? Open the release and go to the Comments tab:
Attachments upload in the background, so you can keep testing while files are being processed. Your team will see the comment with all attachments in both the app and the portal.
Need to check if a bug exists in a previous build? The Releases tab shows your complete version history. You can:
This is especially useful for regression testing — install the old build, reproduce the issue, then install the new build to confirm the fix.
The app uses a side menu (accessible from the top-left icon) for navigation:
Need help? Contact us and we'll get back to you shortly.
]]>A version represents a single release cycle of your app (for example, v2.1.0). It brings together all the work needed to ship that release: the tasks your team is working on, the builds uploaded for testing, quality metrics like blocker counts, and the launches that track store submissions.
v2.1.0 or Sprint 14 Release).Each version moves through a defined lifecycle. Here is what each status means:
Every version has a dashboard with five tabs that give you full visibility into the release:
A summary of the version's current state. See the current status, key metrics at a glance, and a high-level snapshot of progress across tasks, builds, and quality.
View and manage all tasks linked to this version. This is where you define what work needs to be completed before the version ships.
Browse all builds that have been uploaded for this version. Each build includes its upload date, platform, and distribution details. This tab gives you a clear history of every build your team has tested.
Track the quality health of your version. See the current blocker count, test completion rates, and other quality metrics. This tab helps you decide whether the version is ready to ship.
Configure version-level settings such as the version name and other properties specific to this release.
Advancing a version through its lifecycle is straightforward:
TestApp.io enforces quality gates to prevent premature releases:
Need help? Contact us and we'll get back to you shortly.
]]>TestApp.io gives you four distinct methods for creating tasks, each suited to different workflows:
The most direct approach. From your app's Tasks tab:
When you encounter a critical issue during testing, you can report it as a blocker. This creates a task with the priority automatically set to Blocker. You can report blockers from the release detail page using the Report Blocker button. For full details, see Blocker Tracking: Report and Resolve Critical Issues.
If your team uses project management tools such as JIRA or Linear, you can pull existing issues into TestApp.io as tasks. This is useful when your development team has already logged issues that need QA attention. The imported tasks maintain a link back to the original issue.
When two-way sync is enabled with JIRA or Linear, new issues created in those tools automatically appear as tasks in TestApp.io. This eliminates the need to manually import issues and keeps both systems in sync.
Every task in TestApp.io has the following properties:
TestApp.io offers two ways to view your tasks:
The default view organizes tasks into columns by status (Open, In Progress, Done, Closed). You can drag and drop task cards between columns to update their status instantly. The Kanban board gives you a visual overview of work distribution and progress at a glance.
The table view presents tasks in a sortable, spreadsheet-like format. Each row is a task, and columns display properties such as title, priority, status, assignee, and due date. Click any column header to sort by that property. The table view is ideal when you need to scan a large number of tasks quickly or export a structured overview.
Both views support filtering to help you find exactly what you need:
Click on any task to open its detail page, which includes:
Need help? Contact us — we're happy to assist!
]]>The Leaderboard is a gamification feature built into TestApp.io that rewards team participation. As you and your teammates perform actions across the platform — uploading releases, creating tasks, resolving blockers, and more — you earn points. These points are tallied and displayed on a leaderboard so everyone can see who is contributing the most.
It is designed to encourage engagement, recognize active team members, and make the testing and release process more enjoyable.
Different actions earn different point values. Higher-impact actions are worth more points, rewarding the work that moves your project forward. Here are the types of actions that earn points:
Point values vary by action type. Actions that have a bigger impact on your team's workflow — like uploading a release or resolving a blocker — earn more points than lighter actions like adding a comment.
The leaderboard is displayed on your Home Dashboard in the TestApp.io portal. When you log in, you will see the Leaderboard widget showing the top contributors on your team.
The leaderboard displays:
This gives you a quick snapshot of who has been most active and how your own contributions compare.
Points update in real time as you work. When you upload a release, resolve a blocker, or perform any point-earning action, your score changes immediately. There is no delay or batch processing — you see the result of your contribution right away.
This real-time feedback loop makes it satisfying to complete tasks and encourages consistent participation throughout the day.
The leaderboard serves several purposes for your team:
Tip: Testers can also use the TestApp.io mobile app (iOS / Android) to install builds and receive push notifications for new releases.
Need help? Contact us and we'll get back to you shortly.
]]>By default, TestApp.io stores your uploaded builds securely. However, some teams need their data stored in specific locations or under specific controls. Common reasons to use External Storage include:
Note: External Storage requires a Pro plan. Visit testapp.io/pricing for plan details.
TestApp.io supports three cloud storage providers. Choose the one that matches your existing infrastructure.
To connect an Amazon S3 bucket, you will need:
us-east-1, eu-west-1).We recommend creating a dedicated IAM user with limited permissions scoped only to the target bucket. The user needs s3:PutObject, s3:GetObject, and s3:ListBucket permissions.
To connect a Google Cloud Storage bucket, you will need:
Create a dedicated service account with the Storage Object Admin role on the target bucket for least-privilege access.
To connect a Backblaze B2 bucket, you will need:
We recommend creating an application key scoped to the specific bucket rather than using a master key.
Follow these steps to configure External Storage for your team:
After saving, all new app builds will be stored in your bucket instead of TestApp.io's default storage.
Once configured, you have several options for managing your External Storage.
You can toggle External Storage on or off without losing your configuration. When disabled, builds revert to TestApp.io's default storage. When re-enabled, your saved credentials are used again automatically. This is useful for testing or temporary changes.
Update your credentials, bucket name, or region at any time. Navigate to Team Settings → Storage and click Edit to modify your configuration. After editing, TestApp.io will re-validate the connection before saving.
Your External Storage configuration shows a status indicator so you always know the current state:
Tip: Testers can also use the TestApp.io mobile app (iOS / Android) to install builds and receive push notifications for new releases.
Need help? Contact us and we'll get back to you shortly.
]]>To access the Activity Feed, navigate to any app in your TestApp.io portal and click the Activity tab in the sidebar. Each app has its own dedicated feed, so you see only the activity relevant to that project.
The Activity Feed captures a wide range of team actions, including:
The Activity Feed is not just a read-only log. You can interact directly with any item in the stream.
Click Reply on any activity item to add a comment directly in context. This is useful for asking quick questions about a release or acknowledging a completed task without navigating away from the feed.
Type @ followed by a teammate's name to mention them. They will receive a notification, making it easy to pull someone into a conversation or flag something for their attention. For example, you might reply to a release upload with @Sarah can you test this on Android 14?
React to any activity item with an emoji. Reactions are a quick, lightweight way to acknowledge an update without adding a full comment. Use them to signal approval, celebrate a milestone, or simply let your team know you have seen an update.
The Activity Feed updates in real time. When a teammate uploads a release, creates a task, or posts a comment, the new activity appears in your feed instantly — no page refresh needed. This makes the feed a reliable, always-current view of what is happening across your app.
Need help? Contact us — we're happy to assist!
]]>What's New is a built-in feature update feed inside the TestApp.io portal. It provides a chronological list of new features, improvements, bug fixes, and platform updates. Think of it as a changelog that lives right inside your workspace, so you do not need to check external blogs or release notes pages.
To open the What's New feed:
The icon may show a badge or indicator when there are new, unread updates waiting for you.
The What's New feed presents updates in a scrollable list, organized by date with the most recent items at the top. Each entry typically includes:
Scroll through the list to catch up on everything that has changed since your last visit.
Your feedback matters. Each item in the What's New feed includes an option to rate the feature — you can indicate whether the update was helpful or not helpful.
This feedback goes directly to the TestApp.io team and helps prioritize future improvements. If a feature is particularly useful to your workflow, rating it positively helps signal that similar enhancements are valuable.
As you review items in the What's New feed, you can mark them as read to keep your list clean. Dismissing items you have already reviewed ensures that the next time you open the feed, you can quickly spot genuinely new updates without scrolling past items you have already seen.
Tip: Testers can also use the TestApp.io mobile app (iOS / Android) to install builds and receive push notifications for new releases.
Need help? Contact us and we'll get back to you shortly.
]]>Head to portal.testapp.io and create your account. You can sign up with your email address or use an existing Google account for faster onboarding. Once signed in, you will land on the home dashboard.
Your team is the workspace where all your apps, releases, and tasks live. To create one:
With your team in place, create an app entry for each mobile project you want to test:
Once created, you will be taken to the app overview page where you can upload builds, manage releases, and track tasks.
Uploading a build to TestApp.io is straightforward:
ta-cli, the TestApp.io command-line tool. This lets you automate distribution as part of your build process.Once your release is uploaded, share it with your team and external testers. TestApp.io gives you multiple ways to distribute:
With your first release distributed, explore the full platform:
Need help? Contact us — we're happy to assist!
]]>The Install feature lets you take an app build that has been uploaded to the TestApp.io portal and install it directly onto a physical device. This is essential for manual testing, QA review, stakeholder demos, and any situation where you need to run a build on real hardware.
When you are working on a desktop or laptop computer, the portal uses a QR code to bridge the gap between your screen and your phone.
The entire process takes just a few seconds from scan to install.
If you are already browsing the portal on your phone, you can skip the QR code step entirely.
This is the fastest path when you are already on your phone — one tap and the build starts installing.
To install builds from the portal, you need:
Here is a quick reference for where the Install action is available:
Both paths lead to the same result — choose whichever is more convenient based on where you are in the portal.
Need help? Contact us and we'll get back to you shortly.
]]>This guide walks you through connecting Linear, configuring field mappings, importing issues, migrating tasks, and monitoring sync activity.
To get started, you need to authorize TestApp.io to access your Linear workspace via OAuth:
Tip: Only team admins can connect or disconnect integrations. Make sure you have the necessary permissions in both TestApp.io and Linear before proceeding.
After connecting, you need to choose which Linear team to sync with:
This determines which Linear team’s issues will be synced, imported, or migrated within TestApp.io.
Field mapping lets you define how statuses and priorities translate between TestApp.io and Linear:
Map each TestApp.io task status to its corresponding Linear status. For example:
Similarly, map priority levels between the two platforms to ensure issues maintain the correct urgency when synced.
To configure mappings:
You can update these mappings at any time without disconnecting the integration. See Integration Power Features for more on field mapping management.
Once connected and configured, TestApp.io and Linear stay in sync in real time through webhooks:
Sync happens automatically — there is nothing additional to configure. Both platforms reflect changes within seconds of an update being made.
Note: Only tasks that are linked between the two systems will sync. Unlinked tasks remain independent.
If your team already has issues in Linear that you want to bring into TestApp.io, use the import feature:
Imported issues become TestApp.io tasks and are automatically linked to their Linear counterparts for ongoing 2-way sync.
If you have tasks created locally in TestApp.io that you want to move to Linear:
Migrated tasks will be created as new issues in Linear and automatically linked for bidirectional sync going forward.
TestApp.io maintains a complete audit trail of all sync events between your workspace and Linear:
Regularly reviewing sync history helps you catch and resolve any issues before they impact your workflow.
If you encounter issues with your Linear integration, try the following:
For more advanced features like toggling integrations, bulk imports, and detailed sync management, see Integration Power Features: Disable, Pull, Migrate, Sync History.
To learn more about how tasks work in TestApp.io, visit our Task Management guide.
Need help? Contact us and we’ll get back to you shortly.
]]>This guide covers the key power features available for both the JIRA and Linear integrations.
Sometimes you need to pause an integration without fully disconnecting it — for example, during a major reorganization or when troubleshooting an issue.
TestApp.io lets you toggle your JIRA or Linear integration on and off:
Tip: Disabling is different from disconnecting. Disconnecting removes the OAuth authorization entirely and requires you to go through the setup process again. Disabling simply pauses sync while keeping everything configured.
The Pull Tasks feature lets you import existing issues from JIRA or Linear into TestApp.io on demand. This is useful when you want to bring over issues that were created before the integration was set up, or when new issues are added to a specific project or team that you want to track in TestApp.io.
Imported issues become TestApp.io tasks and are automatically linked to their source issues in JIRA or Linear. Once linked, they participate in real-time bidirectional sync — any future changes in either platform will be reflected in the other.
If your team has been creating tasks locally in TestApp.io and now wants to move them into JIRA or Linear, the Migrate Tasks feature handles this seamlessly.
Note: Migration does not delete the original TestApp.io task. It creates a linked counterpart in your external tool.
Every sync event between TestApp.io and your connected JIRA or Linear instance is logged in the Sync History. This gives you full visibility into what is happening with your integration at all times.
Each sync event entry includes:
If a sync event has failed, you can retry it with one click:
Common causes of failed syncs include temporary network issues, permission changes in the connected tool, or field mapping mismatches. Reviewing error details usually points you directly to the fix.
Field mapping controls how statuses and priorities translate between TestApp.io and your connected tool. You can update these mappings at any time without disconnecting or disrupting your integration.
Updated mappings take effect immediately for all future sync events. Previously synced tasks are not retroactively updated — they will pick up the new mappings on their next change.
For detailed setup instructions specific to each integration, see:
Need help? Contact us and we’ll get back to you shortly.
]]>This guide covers everything from initial connection to importing issues, migrating tasks, and monitoring sync activity.
The JIRA integration uses OAuth 2.0 via Atlassian for secure authorization:
Tip: You need admin-level permissions in your TestApp.io team to connect integrations. Ensure you also have the appropriate access in your Atlassian workspace.
After authorization, choose which JIRA project to sync with:
All sync, import, and migration operations will target this selected project.
Field mappings define how task data translates between TestApp.io and JIRA. Proper mapping ensures that statuses and priorities remain accurate when synced.
Map each TestApp.io task status to the corresponding JIRA status. For example:
Map TestApp.io priority levels to JIRA priority levels to ensure issues retain the correct urgency across platforms.
To configure your mappings:
Mappings can be updated at any time. For more details, see Integration Power Features.
With JIRA connected and field mappings configured, TestApp.io and JIRA stay synchronized in real time via webhooks:
Sync is continuous and automatic. There are no manual steps required once the integration is configured. Changes typically appear within seconds.
Note: Only linked tasks and issues are synced. Creating a new task in TestApp.io does not automatically create a JIRA issue unless it was imported or migrated.
Bring your existing JIRA issues into TestApp.io with the import feature:
Imported issues become TestApp.io tasks and are linked to their JIRA counterparts for ongoing bidirectional sync.
If you have tasks that were created locally in TestApp.io and want to push them to JIRA:
Each migrated task will be created as a new JIRA issue and linked for real-time sync going forward.
If your team previously used an older version of the JIRA integration, you can migrate to the new OAuth-based integration:
After migration, you will benefit from improved reliability, better sync performance, and the full set of integration features.
TestApp.io logs every sync event between your workspace and JIRA in a detailed audit trail:
Monitoring sync history regularly helps you identify and resolve issues quickly.
If you run into problems with your JIRA integration, here are common issues and solutions:
For advanced features like toggling integrations, bulk imports, and detailed sync management, see Integration Power Features: Disable, Pull, Migrate, Sync History.
To learn more about how tasks work in TestApp.io, visit our Task Management guide.
Need help? Contact us and we’ll get back to you shortly.
]]>AI task generation starts with good release notes. When you upload a build to TestApp.io, you will see a release notes field. Fill this in with a description of what changed in the build:
The more specific your release notes are, the better the AI-generated tasks will be. For example:
Vague notes (less helpful):
Bug fixes and improvements.
Detailed notes (much better):
Added dark mode support for the settings screen. Fixed crash when uploading images larger than 10MB on Android. Improved onboarding flow with new progress indicator. Updated push notification handling for iOS 17.
Tip: Treat release notes as instructions for your QA team. If a tester could not figure out what to test from your notes alone, the AI will have the same problem.
After your release has been uploaded:
The AI reads three sources of information to generate relevant tasks:
The AI will present up to 15 task suggestions. Each suggestion includes a title, description, and suggested priority level. Before creating any tasks, review each one carefully:
You can edit any field on any suggestion before creating the task. You are in full control of what ends up on your task board.
Once you have reviewed and refined the suggestions:
You can assign team members, set due dates, and link additional releases to the tasks after creation, just like any manually created task.
To get the most useful task suggestions from the AI, follow these best practices:
The single most important factor is the quality of your release notes. Include specific feature names, describe what changed, and mention any edge cases you are aware of. Avoid generic phrases like "bug fixes" without specifying which bugs were fixed.
Instead of writing "Updated the profile screen," write "Added phone number field to profile screen with country code picker and validation." The AI will generate much more targeted test cases when it knows the specifics.
If a change only affects one platform, say so explicitly. For example: "Fixed iOS-specific issue where notifications were not cleared after opening" or "Added Android widget support for the dashboard summary." This helps the AI generate platform-appropriate test cases.
The AI uses your app description as background context. If your app has evolved significantly since you first created it, update the description in your app settings. An accurate app description helps the AI understand the domain and generate more relevant tasks.
If the initial suggestions are not quite right, update your release notes with more detail and generate again. Over time, you will develop a feel for the level of detail that produces the best results for your specific app and workflow.
Note: AI-generated tasks work with all the same features as manually created tasks — comments, attachments, activity logs, filtering, and integration sync. For a complete overview of the task system, see Task Management: Creating and Managing Tasks. If an AI-generated task reveals a critical issue, you can escalate its priority to Blocker. See Blocker Tracking: Report and Resolve Critical Issues.
Need help? Contact us and we'll get back to you shortly.
]]>Comments are available in two places:
To access either, navigate to the relevant release or task in your TestApp.io portal and scroll to the comments section.
To add a comment:
Your comment appears immediately and is visible to all team members with access to the app. Comments also support markdown-like formatting, so you can use bold, italics, lists, and code snippets to structure your messages clearly.
Keep discussions organized by replying directly to a specific comment instead of posting a new top-level message.
Your reply appears nested under the original comment, creating a clear thread. This is especially useful when multiple conversations are happening on the same release or task — threads prevent discussions from getting tangled.
Sometimes a full reply is not necessary. Emoji reactions let you quickly acknowledge a comment without adding noise to the conversation.
Reactions appear beneath the comment, similar to how reactions work on GitHub. They are a lightweight way to signal agreement, approval, or acknowledgement. Multiple team members can react to the same comment, and you can see who reacted by hovering over the emoji.
Need to pull a specific teammate into a discussion? Use @mentions to notify them directly.
The mentioned teammate receives a notification, ensuring they see your message even if they are not actively watching the page. This is particularly useful for:
Attach files directly to your comments to share evidence, context, or supporting materials.
Image attachments display an inline preview directly in the comment, so teammates can see screenshots without downloading them. Other file types appear as downloadable links.
Common use cases for attachments include:
Tip: These features are also available in the TestApp.io mobile app (iOS / Android). Testers can install builds, manage tasks, and submit feedback with attachments directly from their phone.
Need help? Contact us and we'll get back to you shortly.
]]>A blocker is a task with the highest priority level in TestApp.io. It signals a critical issue that prevents a build from being released to production. Common examples include:
Blockers are treated differently from other tasks throughout the platform. They appear in dedicated widgets, trigger visual warnings, and are surfaced prominently so no one on your team can miss them.
There are two ways to report a blocker in TestApp.io:
The task will immediately appear as a blocker across the platform.
TestApp.io surfaces blockers in multiple places to ensure maximum visibility:
Each app displays a blocker count badge on its dashboard card. If an app has open blockers, the badge is immediately visible, drawing attention to the fact that critical issues exist.
When viewing a specific version of your app, a warning indicator appears if there are open blockers associated with that version. This prevents anyone from assuming a version is ready to ship when critical issues remain unresolved.
In the releases list view, releases that have associated blockers are flagged with a visual marker. This makes it easy to scan your release history and identify which builds have known critical issues.
The home dashboard includes two places where blockers appear:
For more about the dashboard, see Home Dashboard Overview.
When a blocker has been fixed and verified, resolve it with these steps:
The system automatically tracks:
This audit trail is important for QA accountability and for understanding the history of critical issues across your releases.
TestApp.io tracks key metrics around your blockers to help you improve your QA process over time:
Need help? Contact us — we're happy to assist!
]]>