Thunkable Docs
Build an AppDrag and Drop DocsSnap to Place DocsAcademy
Drag and Drop
Drag and Drop
  • What is Thunkable?
  • 🗺️Getting Started
    • Getting Started Guide
    • Keyboard Shortcuts
    • Undo Redo
    • Thunkable Account
      • Account Management
    • Preview and Test your App
    • Versioning
    • Data Sources
      • Google Sheets Data Source
      • Airtable Data Source
      • Webflow Data Source
      • Local Table Data Source
    • Project Collaboration
      • Organizations
    • 🎓Sample Apps & Tutorials
      • Thunkable Community Forums
      • Sample Apps
      • Video Tutorials
        • Thunkable Live App
          • How to Test and Troubleshoot with Thunkable Live App
        • Data Source Tutorials
          • Connecting to Data Sources
            • Google Sheets
            • Local Table
          • Create Data in a Thunkable Data Source
          • Read Data in a Thunkable Data Source
          • Update Data in a Thunkable Data Source
          • Delete Data in a Thunkable Data Source
        • User Auth & Management
          • Firebase
            • User Sign-Up, Sign-In, and Auth
            • User Sign Out and Password Reset
          • Google
            • User Sign-Up, Sign-In, Sign-Out, and Auth
          • Apple
            • User Sign-Up, Sign-In, Sign-Out, and Auth
        • Projects
          • How to Save Versions of Your Thunkable Project
          • How to Copy and Customize Public or Sample Thunkable Projects
        • User Interface & Design
          • Screens
            • Save and Reuse Thunkable Screens
            • Change Thunkable Screens with a Button Click
            • Create Scrollable Screens in Your Thunkable App
          • Navigators
            • How to Use the Thunkable Stack Navigator
            • How to Use Thunkable Top and Bottom Tab Navigators
            • How to Use the Thunkable Drawer Navigator
            • Combine Figma Frames with Thunkable Navigators
          • Components
            • How to Use the Visibility Property to Create Modals in Thunkable
          • Data Visualization
            • Customize a Data Viewer
          • Text
            • Implement Text Input Validation
        • Alerts & Notifications
          • Display Alert Messages in Your Thunkable App
          • How to Create Three-Button Alert Messages
        • Files
          • Cloudinary
            • Store and Access Cloudinary Files in Your Thunkable App
        • Camera
          • How to Use the Device’s Camera
          • How to Use the Device’s Video Camera
          • Use the Device’s Camera as a QR or Barcode Scanner
        • Realtime Databases
          • Firebase
            • How to Read Data in a Firebase Realtime Database
            • How to Update Data in a Firebase Realtime Database
        • Advanced Blocks
          • Connect Your Thunkable App to a Web API
        • Thunkable Academy
          • Building Your First Thunkable App
            • Getting Started with Thunkable
            • How to Design a Thunkable App
            • How to Connect a Thunkable App to a Data Source
            • How to Make A Thunkable App Interactive with Blocks
          • Thunkable No Code App Creation Basics
            • Thunkable UI Components and App Features
            • Understanding Thunkable's Drag and Drop Block Builder
            • Design, Develop, Debug, and Deploy Your App
        • Hour of Code
          • 2021 - Build an Informational App
          • 2022 - Build a Scavenger Hunt App
          • 2023 - Build a Translator and Text-to-Speech App
        • App Building
          • How to Build a Translation App in Thunkable
          • How to Create an Image Recognition App with Thunkable
          • How to Create a Text-to-Speech App in Thunkable
  • 🎨App Design
    • User Interface (UI) Components
      • Basic Components
        • Button Component
        • Label Component
        • Rich Text Component
        • Image Component
        • Text Input Component
        • Layout Component
        • Group Component
      • Data Components
        • Simple List Component
        • Data Viewer Components
          • Data Viewer List Component
          • Data Viewer Grid Component
          • Custom Data Viewer
      • Input Components
        • Switch Component
        • Slider Component
        • Checkbox Component
        • Date Input Component
        • Time Input Component
      • Media Components
        • Animation Component
        • Video Component
        • Loading Icon Component
      • Embed Components
        • Web Viewer Component
        • Map Component
        • Canvas Component
        • PDF Reader Component
        • Rating Component
      • Modules
        • Introduction
        • User Guide
      • Generative AI
    • Screens
      • Save and Reuse Screens
      • Improve Thunkable Load Time
    • Navigators
      • Top Tab Navigator
      • Bottom Tab Navigator
      • Drawer Navigator
      • Stack Navigator
    • Figma Integration
  • 🛠️Blocks
    • Thunkable Blocks Overview
    • Core Blocks
      • Control Blocks
      • Logic Blocks
      • Math Blocks
      • Text Blocks
      • Lists Blocks
      • Color Blocks
      • Device Blocks
      • Objects Blocks
      • Variables Overview
        • Connect a Firebase Realtime Database
        • Variables Blocks
      • Functions Blocks
    • App Features Blocks
      • Speech Blocks
      • Sound Blocks
      • Share Blocks
      • Camera Blocks
      • Files Blocks
      • Sign In Blocks
        • User Sign Up, Sign In, and Authentication with Firebase
        • User Sign Up, Sign In, and Authentication with Google
        • User Sign Up, Sign In, and Authentication with Apple
      • Location Blocks
      • Push Notification Blocks
      • In-App Purchase Blocks (with RevenueCat)
      • Data Sources Blocks
      • Alerts Blocks
      • Timer Blocks
      • Sensors Blocks
        • Gyroscope
        • Magnetometer
        • Accelerometer
        • Location Sensor
      • Ads by AdMob
    • Advanced Blocks
      • Web APIs Blocks
        • CORS Policy
        • 🆓No Auth APIs
          • Update Data in a Data Source
          • CRUD Operations
          • Setting Headers
        • 📊Charting APIs
          • Create a chart template
          • Charting in Thunkable
      • Bluetooth Low Energy Blocks
      • OpenAI Services ChatGPT Integration Blocks
      • "Any Component" Blocks
      • JavaScript Web Bridge
  • ⚙️Settings
    • App Settings
      • Tablet View
    • Assets
    • Cloud Variable Viewer
    • Manage your Projects
      • My Projects Page
      • Thunkable Projects
      • Duplicate Project
      • Share Your App
      • Download Your App
        • Download Your App on iOS
        • Download Your App on Android
      • Add to Home Screen
      • Managing Project Storage
      • App Data Privacy
      • Delete Project
  • 📱Publishing
    • Overview
    • Publish to the Apple App Store
      • User Guide
      • Troubleshooting
      • Review Process
      • Tracking Usage Description
    • Publish to Google Play Store
      • User Guide
      • Troubleshooting
      • Review Process
    • Publish as a Web App
      • User Guide
      • Custom Domains
      • Troubleshooting
    • Testing
      • Testing on iOS via TestFlight
      • Testing on Android
    • Troubleshooting
      • Publishing Checklist
      • Generate Screenshots
  • 🎮Gaming
    • Gaming Overview
      • Canvas Label
      • Sprites
      • Sprite Gallery
    • Gaming Blocks
      • Events
      • Motion
      • Looks
      • Direction
      • Sensing
      • Add & Remove
      • Stage
  • 🗃️Additional Resources
    • Release Notes
      • Release Notes 2025
      • Release Notes 2024
      • Release Notes 2023
    • Troubleshooting
      • Can't Sign in to Thunkable?
      • FAQs
    • Minimum Requirements
    • Bugs and Product Feedback
    • App Services and Emulators
Powered by GitBook
On this page
  • Before you publish your first app
  • Create an Apple Developer Account
  • Generate an app-specific password
  • Create an iOS Distribution Certificate
  • Each time you create a new app
  • Set a Version Number
  • Review your App Permissions
  • Register Your App with Apple
  • Create a Provisioning Profile
  • Start the Publishing Process in Thunkable
  • To update your app
  • After each successful build

Was this helpful?

Export as PDF
  1. Publishing
  2. Publish to the Apple App Store

User Guide

PreviousPublish to the Apple App StoreNextTroubleshooting

Last updated 5 months ago

Was this helpful?

Before you publish your first app

Create an Apple Developer Account

You need an Apple Developer Account to publish an app to the App Store. To get a Developer Account you must enroll in the . Enrollment is approximately $99 USD (or in local currency where available) per membership year.

Generate an app-specific password

You only need one app-specific password for Thunkable to send any build to App Store Connect on your behalf.

You do not need separate app-specific passwords for separate Thunkable projects.

  1. Navigate to the .

  2. Enter the email address and password associated with your Apple ID.

  3. If prompted, enter your two-factor authentication code.

  4. On the Sign-In and Security page, select App-specific passwords.

  5. Click Generate an app-specific password if this is your first time creating an app-specific password or the plus icon if you've created an app-specific password previously.

  6. Give your app-specific password a meaningful name so you can recognize it later.

    Remember:

    • You can use the same app-specific password for all of your Thunkable projects.

    • Creating a new one every time you publish a new project is unnecessary and not recommended.

    • Creating a new one when you want to update an existing project is unnecessary and not recommended.

  7. Your app-specific password is provided. You cannot retrieve this password once you close this modal, so make sure you save it somewhere safe.

  8. Click Done.

Create an iOS Distribution Certificate

A CSR is an encoded file containing information about your app, which Apple uses to create a certificate to encrypt traffic to your app. The following instructions walk you through how to:

  • Download a certificate signing request (CSR) from Thunkable

  • Use the CSR to generate a certificate from Apple

  • Download the certificate from Apple

  • Upload the certificate in Thunkable

To generate an Apple certificate and upload it to Thunkable:

  1. Click Click to download CSR to download a certificate signing request (CSR) file.

  2. Under the Certificates, IDs & Profiles heading, select Certificates.

  3. Click the blue + icon to add a new certificate to your account.

  4. Choose iOS Distribution (App Store Connect and Ad Hoc) from the list.

  1. Click Continue.

  2. Click Choose file.

  3. From your computer, select the Certificate Signing Request (CSR) you download from Thunkable.

  4. Click Continue.

  5. Click Download to save a copy of the certificate to your computer.

  6. Return to Thunkable.

  7. Click Upload Certificate.

  8. From your computer, select the .cer file you just downloaded.

  9. Click Next.

Each time you create a new app

Set a Version Number

  1. Open your Thunkable project.

  2. Navigate to the Design tab.

  3. Click the Settings gear icon in the sidebar.

  4. Under the iOS header, set your app's Version Number.

    • If this is your first time sending this app to App Store Connect, set the version number to 1.

    • You need to increment your version number, or increase it by 1, every time you submit a build to App Store Connect.

Review your App Permissions

iOS Permissions

Apple requires that you explain to users why you need access to sensitive services like the device's camera, photo library, and microphone.

To add these explanations:

  1. Open your Thunkable project.

  2. Navigate to the Design tab.

  3. Click the Settings gear icon in the sidebar.

  4. Under the iOS Permissions heading, add your explanations. (Note: This section is only visible if your project utilizes these features.)

Tracking Usage Description

If your app utilizes one of the following features, you must provide user tracking usage details (UTUD):

  • AdMob

  • Location Sensor

  • Push Notifications

  • Web Viewer

  • Open Link Block

These features share (or open links that may share) trackable data with third parties, and you must tell your users what data is being shared and why. If you don't provide this and your app engages in tracking, Apple will reject your submission and ask you to resubmit with an appropriate tracking string.

The field should be left blank if:

  • You do not use one of the features listed above (i.e. no trackable data is shared with third parties).

  • Your app contains a Web Viewer component that only accesses a local HTML file.

There are two locations where you can set your Tracking Usage Description:

  1. Publishing Wizard We'll explore the iOS publishing wizard in more detail in future steps.

Register Your App with Apple

Every app published on the App Store must have a unique name. For example, there can only ever be one app called Thunkable Sample App. You can register your App ID to reserve the name you want.

To register an App ID:

  1. Under the Certificates, IDs & Profiles heading, select Identifiers.

  2. Click the blue + icon to add a new identifier to your account.

  3. Choose App IDs from the list of options.

  4. Click Continue.

  5. Select App.

  6. Click Continue.

  7. On the Register an App ID screen, complete or take note of the following fields:

    1. Description - This is the name you want to give your app. It appears next to the app icon when downloaded on a user's device. It must be unique to the App Store and cannot use special characters such as @, &, *, "

    2. Bundle ID - This is also unique to your app, but not visible to your app users. Apple recommends reversing your domain name to create your bundle ID, i.e. com.yourDomainName.yourAppName to avoid conflicts with other apps.

      Uploading apps to the App Store requires an Explicit Bundle ID. Wildcard bundle IDs are no longer accepted.

    3. App ID Prefix (Team ID) - Record your App ID Prefix or Team ID. This automatically created, unique identifier is linked to your Apple Developer Program membership. The same ID can be used for every app you publish.

  8. Click Continue.

  9. Confirm that the details are correct.

  10. Click Register.

  11. The new App ID you created is included in your list of Identifiers. Click the app's name to review its Description, App ID Prefix (Team ID), or Bundle ID.

Create a Provisioning Profile

Apple requires a provisioning profile to install an app on a device. You need to create a .mobileprovision file in your Apple account and then return to Thunkable to upload this file.

  1. Under the Certificates, IDs & Profiles heading, select Profiles.

  2. Click the blue + icon to add a new certificate to your account.

  3. Under the Distribution heading, select App Store Connect.

  4. Click Continue.

  5. Select the App ID for the app you want to publish.

  6. Click Continue.

  7. Select the certificate you wish to include in this provisioning profile.

  8. Click Continue.

  9. Name your provisioning profile.

  10. Click Generate.

  11. Click Download to save the provisioning profile to your computer.

Your provisioning profile name should only contain letters (A-Z, a-z), numbers (0-9), or spaces.

Start the Publishing Process in Thunkable

Thunkable enables you to send your build directly to the App Store without the need for any specialized software or hardware. To begin the process:

  1. Within your Thunkable project, click the Publish and Download icon.

  2. A publishing modal is provided to guide you through the publication process.

  3. Click Get Started.

  4. Click Next.

Register app

  1. Input your App Name, Team ID, and Bundle ID from when you completed these steps: Register Your App with Apple.

  2. Click Next.

These values will remain the same every time you publish or update this app, so record them somewhere safe.

App Credentials

Upload the Distribution Certificate created created in Create an iOS Distribution Certificate

  1. Click Upload Certificate.

  2. From your computer, select the .cer file you just downloaded.

  3. Click Next.

Upload the Provisioning Profile created created in Create a Provisioning Profile

  1. Click Upload Profile.

  2. From your computer, select the .mobileprovision file you just downloaded.

  3. Click Next.

Enter your App Specific Password as created in Generate an app-specific password

  1. Paste your app-specific password into the provided field in the Thunkable publishing modal.

  2. Click Next.

App Store Connect

Create an App Listing on App Store Connect

Your app listing on App Store Connect is where you will manage your submission to the App Store.

  1. Click Apps.

  2. Click the blue + button next to the heading Apps.

  3. Select New App from the provided menu.

  4. Complete the New App modal.

    1. Platforms - iOS

    2. Name - The name you gave your app when you registered it. This is how it will appear on the App Store. It can't be longer than 30 characters.

    3. Bundle ID - Select the Bundle ID you registered previously.

    4. SKU - A unique ID for your app that is not visible on the App Store. This is an identifier you create to track your apps on the App Store. You should stick to a pattern with your apps' SKU numbers to better organize them and keep track of app versions. Characters a-z, A-Z, 0-9, underscores, periods and dashes are all allowed.

    5. User Access - You can limit which users see the app in App Store Connect. If you select Full Access, all users will have access to the app. Users with the Admin, Finance, and Reports roles cannot have their app access limited.

  5. Click Create.

  6. Return to Thunkable.

  7. Click Next to confirm you've created a new app with App Store Connect.

App Info

  • App icon: This app icon appears when a user downloads your app from the App Store. Recommended size: 1024x1024 px. This icon must not have any transparent pixels.

  • Version Number: The version number is visible to your users when they download a new version of your app. See here for additional information: Set a Version Number.

  • User Tracking Usage Description - If your app utilizes one of the following features, you must provide user tracking usage details (UTUD): AdMob, Location Sensor, Push Notifications, or Web Viewer (but not if your Web Viewer component only accesses a local HTML file). See here for additional information: Tracking Usage Description.

When the necessary fields are populated, click Submit.

You should shortly receive an email from Thunkable informing you that your build is being sent to the App Store. There are still a number of steps you need to complete on App Store Connect before your app can be published, but that's everything completed from the Thunkable side of things - congratulations!

Because of Apple's thorough review process, app submissions are sometimes not approved on the first attempt. See here to assist you in troubleshooting the issues Apple flags with your submission: #troubleshooting.

To update your app

Repeat the following steps in Each time you create a new app:

  1. Set a Version Number

  2. Start the Publishing Process in Thunkable, except for App Store Connect

When you update your app, Thunkable will automatically load in your iOS Distribution Certificate and Provisioning Profile.

After each successful build

Once your build has completed, you will receive several emails from Thunkable or Apple. The email from Thunkable will tell you if your build has been successfully sent to App Store Connect or if there is an issue. If there is an issue, follow the instructions in the email or Contact Support with your Reference ID for assistance.

The uploaded build for <App Name> has one or more issues.

This is merely a notice from Apple, no further action is necessary on your part. They send this because they detect a snippet of code for Push Notifications that is present, but always deployed, in every Thunkable app.

App Store Connect: Version # (<Build ID>) for <App Name> has completed processing.

This email from Apple tells you that your built is now completed processing and is either

Open your .

To learn more about what to say in your Tracking Usage Description, see here:

Project Settings

Open your .

Open your .

Select Publish iOS from the drop-down menu.

Enter the Apple ID associated with your .

Go to the and log in.

Primary Language - If localized app information isn’t available in an App Store country or region, the information from your primary language will be used instead. .

Ready for testing on

Ready to add to your builds on App Store connect and ready to .

📱
Apple Developer account page
What should I say in my Tracking Usage Description?
Apple Developer account page
Apple Developer account page
App Store Connect website
Learn more
TestFlight
submit for review
Apple Developer Program
Apple ID account website
Apple Developer account