iOS Luciq Migration
Overview
This guide helps you migrate your iOS project from the Instabug SDK to the Luciq SDK. This change is part of a company-wide rebranding initiative. You can perform the migration manually by following the step-by-step instructions or use our automated migration script for a faster transition.
Prerequisites
Before starting the migration process, ensure your project meets the following requirements and take the necessary precautions.
Supported Instabug Versions
This migration guide supports projects currently using:
- Instabug SDK (Manual & Automated): 16.x.x and above
- Target Luciq SDK: 18.0.0
Pre-Migration Checklist
🔒 Backup Your Project
[ ] Commit all changes to your version control system (e.g., Git).
[ ] Create a dedicated backup branch to allow for a clean rollback if needed.
[ ] Build and run your project to confirm it's in a stable, working state before you begin.
💡 Tip: Assess your project's complexity using our Migration Complexity Assessment to choose the best approach for you.
🔍 Project Assessment
[ ] Identify how the Instabug SDK is integrated (CocoaPods, Swift Package Manager, or Manual).
[ ] Check for an Instabug.plist file if you use an on-premise or dedicated cloud setup.
[ ] Note any custom build scripts that might reference Instabug paths or symbols.
⚙️ Environment Preparation
[ ] Ensure your project builds successfully without any existing errors.
[ ] Clean the build folder in Xcode (Product > Clean Build Folder or Cmd + Shift + K).
[ ] Run pod install or swift package resolve to ensure all dependencies are correctly synced.
Migration Complexity Assistant
| Project Type | Complexity | Recommended Approach | Estimated Time |
|---|---|---|---|
| Single-target, standard setup | 🟢 Simple | Automated script | 15-30 minutes |
| Multi-target, standard config | 🟡 Medium | Automated script + manual review | 1-2 hours |
| Complex setup, on-premise config | 🔴 Complex | Manual migration or script + careful review | 2-4 hours |
When to Use Manual vs. Automated Migration
✅ Use Automated Migration When:
- You have a standard Instabug setup with minimal customization.
- You are using a supported Instabug version.
- Your project doesn't have complex custom build scripts that reference Instabug.
- You are comfortable using command-line tools and have created a backup.
⚠️ Use Manual Migration When:
- You have a heavily customized Instabug implementation.
- You are using an older, unsupported version of the Instabug SDK.
- Your project has complex build logic or dependencies that the script might not handle.
- You prefer granular control over every step of the migration process.
Step-by-Step Manual Migration
Step 1: Migrate Your Dependency
💡 Quick Option: This step can be automated using our migration script. Continue reading for manual instructions.
Update the SDK dependency in your project's configuration based on your dependency manager.
For CocoaPods Users
In your Podfile, change pod 'Instabug' to pod 'Luciq'.
Before:
pod 'Instabug'
After:
pod 'Luciq'
Then, run pod install in your terminal.
For Swift Package Manager (SPM) Users
- In Xcode, navigate to your project's Package Dependencies tab.
- Select the "InstabugSDK" package and click the minus (
-) button to remove it. - Click the plus (
+) button, and in the search bar, enter the new repository URL:https://github.com/luciqai/luciq-ios-sdk. - Follow the prompts to add the new
LuciqSDKpackage.
For Carthage Users
In your Cartfile, change the Instabug dependency to point to the new Luciq repository.
Before:
binary "https://raw.githubusercontent.com/Instabug/Instabug-iOS/master/Instabug.json"
After:
binary "https://raw.githubusercontent.com/luciqai/luciq-ios-sdk/main/Luciq.json"
Then, run the following command in your terminal:
carthage update
Finally, remove InstabugSDK.xcframework from your project in Xcode and drag the newly built LuciqSDK.xcframework from the Carthage/Build folder into your target's "Frameworks, Libraries, and Embedded Content" section.
For Manual Installations
- Locate and remove
InstabugSDK.xcframeworkfrom your project navigator and target's "Frameworks, Libraries, and Embedded Content" section. - Download and add the new
LuciqSDK.xcframeworkto your project.
Step 2: Migrate On-Premise Configuration File (Enterprise Only)
⚠️ Important: This step is only for enterprise customers using a custom Instabug.plist file for on-premise setups. If you do not use this file, you can safely skip this step.
The SDK now looks for a LuciqConfig.plist file. You must rename your existing file and update the keys within it.
- Rename the File
In your Xcode project, find Instabug.plist and rename it to LuciqConfig.plist. - Update the Keys
Open LuciqConfig.plist and update the keys according to the table below. The URL values should remain unchanged.
| Old Key | New Key |
|---|---|
InstabugURL | SDKBaseURL |
InstabugAPMURL | APMBaseURL |
InstabugMonitoringURL | SDKMonitoringBaseURL |
Example Before (Instabug.plist):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>InstabugURL</key>
<string>https://your-on-prem-sdk.com/api/sdk/v3</string>
</dict>
</plist>
Example After (LuciqConfig.plist):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SDKBaseURL</key>
<string>https://your-on-prem-sdk.com/api/sdk/v3</string>
</dict>
</plist>
Step 3: Migrate Your Source Code (Swift & Objective-C)
💡 Quick Option: This step can be automated using our migration script. Continue reading for manual instructions.
Perform the following find-and-replace operations across your entire Xcode workspace.
-
Update Import Statements
Swift:// Before import InstabugSDK // After import LuciqSDKObjective-C:
// Before #import <InstabugSDK/InstabugSDK.h> // After #import <LuciqSDK/LuciqSDK.h> -
Update Code Symbols
Perform these case-sensitive "Find and Replace in Workspace" operations:- Main Class Name: Find
Instabugand replace withLuciq. - Symbol Prefix: Find
IBGand replace withLCQ. - Note: In Swift, most type names that were prefixed with
IBGnow have the prefix removed (e.g.,IBGReportbecomesReport). The script handles this, but for manual migration, refer to the full mapping table.
- Main Class Name: Find
Code Snippet Example (Swift):
Before:
import InstabugSDK
// ...
Instabug.start(withToken: "YOUR_APP_TOKEN", invocationEvents: .shake)
BugReporting.setCommentMinimumCharacterCount(10, forBugReportType: .bug)
After:
import LuciqSDK
// ...
Luciq.start(withToken: "YOUR_APP_TOKEN", invocationEvents: .shake)
BugReporting.setCommentMinimumCharacterCount(10, forBugReportType: .bug)
Automated Migration Script
Introduction
To simplify the migration, our migrate-luciq.sh script automates the entire process. The script performs a comprehensive find-and-replace operation, handling:
- Source Code: Replaces
InstabugandIBGsymbols in all.swift,.m, and.hfiles. - Configuration File: Renames
Instabug.plisttoLuciqConfig.plistand updates all keys within it. - Xcode Project File: Updates the
.pbxprojfile to reflect the renamed.plist, ensuring Xcode finds the new file reference.
Where to find it?
You can find the migration script in Luciq's public GitHub repository here.
Step-by-Step Usage Guide
- Make the Script Executable
Open Terminal, navigate to where you saved the script, and run:
chmod +x migrate-luciq.sh - Run the Migration
⚠️ Warning: This script modifies your files directly and the changes are irreversible. Please ensure you have committed all your work to version control and created a backup branch before proceeding, as recommended in the Pre-Migration Checklist.
Once you are ready, execute the script on your project's root directory:
./migrate-luciq.sh /path/to/your/project
You will be prompted for a final confirmation before the script begins modifying your files. Type y to proceed. - Verify the Migration
After the script finishes, it is crucial to verify the results:- Open your project in Xcode.
- Clean the build folder (Product > Clean Build Folder).
- Build the project (Product > Build or
Cmd + B) to check for any compilation errors. - Use your version control tool (e.g.,
git diff) to meticulously review all changes before committing them to your repository.
Safety Features
🛡️ Version Control Prerequisite: The script should only be run on a project with a clean version control status. This is your primary safety net for reviewing and reverting changes.
🤔 User Confirmation: The script requires explicit user confirmation before modifying any files, giving you a final chance to cancel the operation.
System Requirements
- macOS Environment: The script relies on the
plutilcommand-line tool, which is standard on macOS. - Bash Shell: A standard Bash-compatible shell is required to execute the script.
SwiftUI Integrator Migration
If your project uses our command-line tool to automatically instrument SwiftUI views, you'll need to update your build process. The InstabugSwiftUIIntegrator has been renamed to LuciqSwiftUIIntegrator as part of the rebranding.
What is the SwiftUI Integrator?
The LuciqSwiftUIIntegrator is a powerful command-line tool that automatically adds instrumentation to your SwiftUI code during the build process. It observes UI element states and user interactions (like taps and navigation) to enhance user experience monitoring and debugging. Importantly, all changes are reverted after the build, so your source code remains untouched.
How to Migrate
Before you begin, it is essential that your project's codebase has been fully migrated from Instabug to Luciq. This can be accomplished either by using the automated migration script or by following the manual migration steps outlined previously. The LuciqSwiftUIIntegrator is designed to work on an already-migrated project and depends on the updated symbols and imports to function correctly.
- Clean Up Old Instrumentation Files (Recommended)
Before running the new integrator, delete the old instrumentation cache folder namedInstabugInstrumentationfrom your project's root directory. The newLuciqSwiftUIIntegratorwill automatically create a new folder namedLuciqInstrumentationon its first run. This step prevents retaining outdated files. - Download the New Integrator
You can download the newLuciqSwiftUIIntegratorfrom our public GitHub repository: Here - Update Your Build Phase Script
In Xcode, go to your target's Build Phases and locate the pre-build script that runs the integrator. You only need to change the name of the executable.
Before:
# Pre-build phase in Xcode
/path/to/InstabugSwiftUIIntegrator instrument --directory "${SRCROOT}"`
After:
# Pre-build phase in Xcode
/path/to/LuciqSwiftUIIntegrator instrument --directory "${SRCROOT}"
After updating the script, your SwiftUI instrumentation will work seamlessly with the new LuciqSDK.
Fastlane Plugin Migration
If your project uses the fastlane-plugin-instabug_official plugin to upload dSYM files, you'll need to update your configuration to use the new fastlane-plugin-luciq_dsym_upload plugin. This plugin is responsible for uploading symbolication files to Luciq.
How to Migrate
Follow these steps to update your Fastlane configuration.
Step 1: Update Your Plugin
First, remove the old plugin and add the new one.
- Remove the old plugin by running this command in your terminal:
fastlane remove_plugin instabug_official - Add the new plugin by running this command:
fastlane add_plugin luciq_dsym_upload
Alternatively, if you manage plugins using aPluginfile, update it:
Before:
gem 'fastlane-plugin-instabug_official'
After:
gem 'fastlane-plugin-luciq_dsym_upload'
Then run bundle install.
Step 2: Update Your Fastfile
In your Fastfile, rename the action from instabug_official to luciq_dsym_upload. The available parameters (api_token, dsym_array_paths, eu, end_point) remain the same.
- Environment Variable: If you were providing your API token via the environment variable
FL_INSTABUG_API_TOKEN, you must rename it toFL_LUCIQ_API_TOKEN.
⚠️ Important: If you were using the end_point parameter to point to a custom Instabug URL, you must update it to point to your new Luciq endpoint.
Example Fastfile Lane (Before):
lane :upload_symbols do
instabug_official(
api_token: "<Your Token>",
dsym_array_paths: ["./App1.dSYM.zip", "./App2.dSYM.zip"]
)
end
Example Fastfile Lane (After):
lane :upload_symbols do
luciq_dsym_upload(
api_token: "<Your Token>",
dsym_array_paths: ["./App1.dSYM.zip", "./App2.dSYM.zip"]
)
end
FAQ
Automated Script & File System
- What specific files does the
migrate-luciq.shscript modify? ⚙️
The script is designed to perform a comprehensive search and replace operation. It will modify:- Source Code Files: Any file with a
.swift,.m, or.hextension within the provided project path. - Configuration File: It will rename
Instabug.plisttoLuciqConfig.plist. - Plist Contents: It will use the plutil command to replace the old keys (e.g.,
InstabugURL) with the new keys (e.g.,SDKBaseURL) inside the newly renamedLuciqConfig.plist. - Xcode Project File: It will modify the
.pbxprojfile to update the file reference fromInstabug.plisttoLuciqConfig.plist, ensuring Xcode can find the file after it's renamed.
- Source Code Files: Any file with a
- I ran the script, but it failed or my project has errors. What are the technical debugging steps? 🔧
If you encounter issues after running the script:- Do Not Commit: First, do not commit the changes.
- Review the Diff: Use
git diffto see every single change the script made. This is the most effective way to spot incorrect replacements or unintended modifications, especially in your.pbxprojfile. - Check Script Permissions: Ensure the script was made executable with
chmod +x migrate-luciq.sh. - Revert and Go Manual: If the diff is too noisy or the errors are complex, the safest option is to revert all changes (
git checkout .orgit stash) and perform the migration manually. The script is a powerful tool, but manual migration gives you granular control.
Code & Symbol Migration
- What is the most common pitfall when migrating Swift code symbols? 🐛
The most common mistake is overlooking the prefix removal rule for Swift types. While the main class becomesLuciqand the symbol prefix changes fromIBGtoLCQin Objective-C, in Swift, most class/struct/enum names that were prefixed withIBGnow have the prefix removed entirely.- Incorrect: let
myReport=LCQReport() - Correct: let
myReport=Report()
Similarly,IBGSurveybecomesSurvey, andIBGInvocationEventbecomesInvocationEvent. Always refer to the "New Name (Swift)" column in the Complete Symbol Mapping table.
- Incorrect: let
- Are there any symbols that don't follow the standard renaming rules? ⚠️
Yes. A few symbols are exceptions to the general find-and-replace rules. These are highlighted in the mapping table. For example:- Enum:
IBGReportTypeis renamed toLCQReportCategoryin Objective-C andReportCategoryin Swift. This is a semantic change, not just a prefix swap. - Enum:
IBGActionTypebecomesLCQConsentAction/ConsentAction. - Properties: Some properties like
instabugLogswere renamed toluciqLogswithout following theIBGprefixconvention.
Carefully review the highlighted items in the Complete Symbol Mapping table for these specific cases.
- Enum:
- I'm getting "'file not found'" errors in Objective-C after updating my imports. What should I check?📄
This typically happens if you were importing specific sub-headers instead of the main SDK header. The script may not catch all permutations. You must ensure every #import statement is updated according to the Complete Mapping of Public Header Imports table.- Example:
import <InstabugSDK/IBGReport.h>must be changed toimport <LuciqSDK/LCQReport.h>. - Best Practice: After running
pod installfor the newLuciqpod, perform a global search in your workspace for#import <InstabugSDK>to find any headers that were missed.
- Example:
Build Process & Configuration
- I renamed Instabug.plist, but my on-premise configuration isn't being loaded. What did I miss? 🔌
Renaming the file is only the first of two required steps. You must also update the keys within the file itself. The SDK no longer looks forInstabugURLorInstabugAPMURL. You need to openLuciqConfig.plistand change the keys toSDKBaseURL,APMBaseURL, etc., as specified in the guide. The URL values should remain the same. - In what order should I migrate my main app code versus the SwiftUI Integrator? ➡️
You must migrate your application's source code first.- Run the automated script or perform the manual migration on your codebase.
- Ensure the project builds successfully with the
LuciqSDK. - Only then should you go to your target's Build Phases and update the pre-build script to call
LuciqSwiftUIIntegrator. The integrator depends on the updatedLuciqSDKsymbols to function correctly.
Post-Migration Troubleshooting
- After manual migration, Xcode throws "Use of unresolved identifier" errors everywhere. What's the fastest way to fix this? ⚡
This classic error has a few common causes after this migration:- Check Imports: The most likely cause is a missed
importstatement. Ensure every relevant file hasimport LuciqSDK(for Swift) or#import <LuciqSDK/LuciqSDK.h>(for Objective-C). - Clean Build Folder: Xcode's index might be stale. Use Product > Clean Build Folder (Cmd + Shift + K) to force Xcode to re-index the project with the new SDK.
- Verify Dependency: Ensure you've correctly removed the old SDK and added the new one in CocoaPods or SPM, and have run
pod installor resolved Swift packages. - Check Swift Prefix Removal: As mentioned in question #3, double-check that you've removed the
IBGprefixfrom Swift types (e.g., useReportinstead ofIBGReport).
The following tables provide a one-to-one mapping of every public symbol. The general rules are:Reference: Complete Symbol Mapping- The
Instabugclass becomesLuciq. - Any symbol prefixed with
IBGis now prefixed withLCQin Objective-C. - In Swift, most types prefixed with
IBGnow have the prefix removed (e.g.IBGReport→Report).
- Check Imports: The most likely cause is a missed
| Symbol Type | Old Name | New Name (ObjC) | New Name (Swift) |
|---|---|---|---|
| Class | Instabug | Luciq | Luciq |
| Class | IBGReport | LCQReport | Report |
| Property (in IBGReport) | instabugLogs | luciqLogs | luciqLogs |
| Class | IBGTheme | LCQTheme | Theme (No Change) |
| Class | IBGUserStep | LCQUserStep | UserStep (No Change) |
| Class | IBGFeatureFlag | LCQFeatureFlag | FeatureFlag (No Change) |
| Class | IBGAPM | LCQAPM | APM (No Change) |
| Class | IBGExecutionTrace | LCQExecutionTrace | ExecutionTrace (No Change) |
| Class | IBGNetworkTrace | LCQNetworkTrace | NetworkTrace (No Change) |
| Class | IBGBugReporting | LCQBugReporting | BugReporting (No Change) |
| Class | IBGProactiveReportingConfigurations | LCQProactiveReportingConfigurations | ProactiveReportingConfigurations (No Change) |
| Class | IBGCrashReporting | LCQCrashReporting | CrashReporting (No Change) |
| Class | IBGCrashMetaData | LCQCrashMetaData | CrashMetaData (No Change) |
| Class | IBGCrashReporterState | LCQCrashReporterState | CrashReporterState (No Change) |
| Property (in IBGCrashReporterState) | instabugHandlers | luciqHandlers | luciqHandlers |
| Property (in IBGCrashReporterState) | isInstabugCrashReporterActive | isLuciqCrashReporterActive | isLuciqCrashReporterActive |
| Class | IBGCrashHandlersInfo | LCQCrashHandlersInfo | CrashHandlersInfo (No Change) |
| Class | IBGFunctionInfo | LCQFunctionInfo | FunctionInfo (No Change) |
| Class | IBGNonFatalError | LCQNonFatalError | NonFatalError (No Change) |
| Class | IBGNonFatalException | LCQNonFatalException | NonFatalException (No Change) |
| Protocol | IBGNonFatalBuilder | LCQNonFatalBuilder | NonFatalBuilder (No Change) |
| Class | IBGFeatureRequests | LCQFeatureRequests | FeatureRequests (No Change) |
| Class | IBGLog | LCQLog | LCQLog |
| Class | IBGNetworkLogger | LCQNetworkLogger | NetworkLogger (No Change) |
| Class | IBGReplies | LCQReplies | Replies (No Change) |
| Class | IBGSessionReplay | LCQSessionReplay | SessionReplay (No Change) |
| Property (in IBGSessionReplay) | IBGLogsEnabled | LCQLogsEnabled | lcqLogsEnabled |
| Class | IBGSessionMetadata | LCQSessionMetadata | SessionMetadata (No Change) |
| Class | IBGSessionMetadataNetworkLogs | LCQSessionMetadataNetworkLogs | SessionMetadataNetworkLogs (No Change) |
| Class | IBGSurveys | LCQSurveys | Surveys (No Change) |
| Class | IBGSurvey | LCQSurvey | Survey |
| Category Property | UIView.instabug_privateView | UIView.luciq_privateView | UIView.luciq_privateView |
| C Struct | ibgcrash_async_file_t | lcqcrash_async_file_t | lcqcrash_async_file_t |
| C Struct | IBGCrashReportWriterContext | LCQCrashReportWriterContext | CrashReportWriterContext |
| C Struct | IBGCrashReportWriter | LCQCrashReportWriter | CrashReportWriter |
| Global Function | InstabugLog(...) | LuciqLog(...) | LuciqLog(...) |
| Global Function | IBGLogVerbose(...) | LCQLogVerbose(...) | LCQLogVerbose(...) |
| Global Function | IBGLogDebug(...) | LCQLogDebug(...) | LCQLogDebug(...) |
| Global Function | IBGLogInfo(...) | LCQLogInfo(...) | LCQLogInfo(...) |
| Global Function | IBGLogWarn(...) | LCQLogWarn(...) | LCQLogWarn(...) |
| Global Function | IBGLogError(...) | LCQLogError(...) | LCQLogError(...) |
| Global Function | IBGNSLog(...) | LCQNSLog(...) | LCQNSLog(...) |
| Global Function | IBGNSLogWithLevel(...) | LCQNSLogWithLevel(...) | LCQNSLogWithLevel(...) |
| Enum | IBGInvocationEvent | LCQInvocationEvent | InvocationEvent |
| Enum | IBGAutoMaskScreenshotOption | LCQAutoMaskScreenshotOption | AutoMaskScreenshotOption |
| Enum | IBGColorTheme | LCQColorTheme | ColorTheme |
| Enum | IBGInvocationMode | LCQInvocationMode | InvocationMode |
| Enum | IBGBugReportingReportType | LCQBugReportingReportType | BugReportingReportType |
| Enum | IBGBugReportingType | LCQBugReportingType | BugReportingType (No Change) |
| Enum | IBGBugReportingOption | LCQBugReportingOption | BugReportingOption |
| Enum | IBGReportType | LCQReportCategory | ReportCategory |
| Enum | IBGActionType | LCQConsentAction | ConsentAction |
| Enum | IBGDismissType | LCQDismissType | SDKDismissType |
| Enum | IBGLocale | LCQLocale | SDKLocale |
| Enum | IBGPromptOption | LCQPromptOption | PromptOption |
| Enum | IBGPosition | LCQPosition | SDKPosition |
| Enum | IBGLogLevel | LCQLogLevel | SDKLogLevel |
| Enum | IBGSDKDebugLogsLevel | LCQSDKDebugLogsLevel | SDKDebugLogsLevel |
| Enum | IBGUserStepsMode | LCQUserStepsMode | UserStepsMode |
| Enum | IBGAttachmentType | LCQAttachmentType | AttachmentType |
| Enum | IBGExtendedBugReportMode | LCQExtendedBugReportMode | ExtendedBugReportMode |
| Enum | IBGAction | LCQAction | SDKAction |
| Enum | IBGWelcomeMessageMode | LCQWelcomeMessageMode | WelcomeMessageMode |
| Enum | IBGPlatform | LCQPlatform | SDKPlatform |
| Enum | IBGUIEventType | LCQUIEventType | UserInteractionEventType |
| Enum | IBGInteractionViewType | LCQInteractionViewType | InteractionViewType |
| Enum | IBGIssueType | LCQIssueType | ReportableIssueType |
| Enum | IBGCrashType | LCQCrashType | CrashType |
| Enum | IBGCrashReportConsent | LCQCrashReportConsent | CrashReportConsent |
| Enum | IBGOverAirType | LCQOverAirType | OverAirType |
| Enum | IBGSurveyFinishedState | LCQSurveyFinishedState | SurveyFinishedState |
| Enum | IBGNonFatalLevel | LCQNonFatalLevel | NonFatalLevel (No Change) |
| Enum | IBGNonFatalStackTraceMode | LCQNonFatalStackTraceMode | NonFatalStackTraceMode (No Change) |
| Type Alias | IBGCrashReportConsentReplyHandler | LCQCrashReportConsentReplyHandler | LCQCrashReportConsentReplyHandler |
Complete Mapping of Public Header Imports
When migrating your Objective-C files, users may need to update any #import statements that reference specific headers from the old SDK.
| Old Header Import | New Header Import |
|---|---|
#import <InstabugSDK/InstabugSDK.h> | #import <LuciqSDK/LuciqSDK.h> |
#import <InstabugSDK/Instabug.h> | #import <LuciqSDK/Luciq.h> |
#import <InstabugSDK/IBGAPM.h> | #import <LuciqSDK/LCQAPM.h> |
#import <InstabugSDK/IBGBugReporting.h> | #import <LuciqSDK/LCQBugReporting.h> |
#import <InstabugSDK/IBGCrashAsyncFile.h> | #import <LuciqSDK/LCQCrashAsyncFile.h> |
#import <InstabugSDK/IBGCrashHandlersInfo.h> | #import <LuciqSDK/LCQCrashHandlersInfo.h> |
#import <InstabugSDK/IBGCrashMetaData.h> | #import <LuciqSDK/LCQCrashMetaData.h> |
#import <InstabugSDK/IBGCrashReporterState.h> | #import <LuciqSDK/LCQCrashReporterState.h> |
#import <InstabugSDK/IBGCrashReporting.h> | #import <LuciqSDK/LCQCrashReporting.h> |
#import <InstabugSDK/IBGCrashReportWriter.h> | #import <LuciqSDK/LCQCrashReportWriter.h> |
#import <InstabugSDK/IBGFeatureFlag.h> | #import <LuciqSDK/LCQFeatureFlag.h> |
#import <InstabugSDK/IBGFeatureRequests.h> | #import <LuciqSDK/LCQFeatureRequests.h> |
#import <InstabugSDK/IBGFunctionInfo.h> | #import <LuciqSDK/LCQFunctionInfo.h> |
#import <InstabugSDK/IBGLog.h> | #import <LuciqSDK/LCQLog.h> |
#import <InstabugSDK/IBGNetworkLogger.h> | #import <LuciqSDK/LCQNetworkLogger.h> |
#import <InstabugSDK/IBGNetworkTrace.h> | #import <LuciqSDK/LCQNetworkTrace.h> |
#import <InstabugSDK/IBGNonFatal.h> | #import <LuciqSDK/LCQNonFatal.h> |
#import <InstabugSDK/IBGProactiveReportingConfigurations.h> | #import <LuciqSDK/LCQProactiveReportingConfigurations.h> |
#import <InstabugSDK/IBGReplies.h> | #import <LuciqSDK/LCQReplies.h> |
#import <InstabugSDK/IBGReport.h> | #import <LuciqSDK/LCQReport.h> |
#import <InstabugSDK/IBGSessionMetadata.h> | #import <LuciqSDK/LCQSessionMetadata.h> |
#import <InstabugSDK/IBGSessionReplay.h> | #import <LuciqSDK/LCQSessionReplay.h> |
#import <InstabugSDK/IBGSurvey.h> | #import <LuciqSDK/LCQSurvey.h> |
#import <InstabugSDK/IBGSurveyFinishedState.h> | #import <LuciqSDK/LCQSurveyFinishedState.h> |
#import <InstabugSDK/IBGSurveys.h> | #import <LuciqSDK/LCQSurveys.h> |
#import <InstabugSDK/IBGTheme.h> | #import <LuciqSDK/LCQTheme.h> |
#import <InstabugSDK/IBGTypes.h> | #import <LuciqSDK/LCQTypes.h> |
#import <InstabugSDK/IBGUserStep.h> | #import <LuciqSDK/LCQUserStep.h> |
#import <InstabugSDK/UIView+Instabug.h> | #import <LuciqSDK/UIView+Luciq.h> |
SwiftUI Interface Migration
The following table outlines the renaming for our public SwiftUI views and view modifiers. The instabug prefix has been replaced with luciq.
| Symbol Type | Old Swift Name | New Swift Name |
|---|---|---|
| View Modifier | instabug_privateView() | luciq_privateView() |
| View | InstabugPrivateView | LuciqPrivateView |
| View Modifier | instabugTracedView(name:) | luciqTracedView(name:) |
| View | InstabugTracedView | LuciqTracedView |
Complete Mapping of Localization String Constants (LCQTypes.h)
Predefined keys to be used to override any of the user-facing strings in the SDK. See + [Luciq setValue:forStringWithKey]
| Old Constant Name (Instabug SDK) | New Constant Name (Luciq SDK) |
|---|---|
kIBGStartAlertTextStringName | kLCQStartAlertTextStringName |
kIBGShakeStartAlertTextStringName | kLCQShakeStartAlertTextStringName |
kIBGTwoFingerSwipeStartAlertTextStringName | kLCQTwoFingerSwipeStartAlertTextStringName |
kIBGEdgeSwipeStartAlertTextStringName | kLCQEdgeSwipeStartAlertTextStringName |
kIBGScreenshotStartAlertTextStringName | kLCQScreenshotStartAlertTextStringName |
kIBGFloatingButtonStartAlertTextStringName | kLCQFloatingButtonStartAlertTextStringName |
kIBGBetaWelcomeMessageWelcomeStepTitle | kLCQBetaWelcomeMessageWelcomeStepTitle |
kIBGBetaWelcomeMessageWelcomeStepContent | kLCQBetaWelcomeMessageWelcomeStepContent |
kIBGBetaWelcomeMessageHowToReportStepTitle | kLCQBetaWelcomeMessageHowToReportStepTitle |
kIBGBetaWelcomeMessageHowToReportStepContent | kLCQBetaWelcomeMessageHowToReportStepContent |
kIBGBetaWelcomeMessageFinishStepTitle | kLCQBetaWelcomeMessageFinishStepTitle |
kIBGBetaWelcomeMessageFinishStepContent | kLCQBetaWelcomeMessageFinishStepContent |
kIBGBetaWelcomeDoneButtonTitle | kLCQBetaWelcomeDoneButtonTitle |
kIBGLiveWelcomeMessageTitle | kLCQLiveWelcomeMessageTitle |
kIBGLiveWelcomeMessageContent | kLCQLiveWelcomeMessageContent |
kIBGInvalidEmailMessageStringName | kLCQInvalidEmailMessageStringName |
kIBGInvalidEmailTitleStringName | kLCQInvalidEmailTitleStringName |
kIBGInvalidNumberTitleStringName | kLCQInvalidNumberTitleStringName |
kIBGReportCategoriesAccessibilityScrollStringName | kLCQReportCategoriesAccessibilityScrollStringName |
kIBGAnnotationCloseButtonStringName | kLCQAnnotationCloseButtonStringName |
kIBGAnnotationSaveButtonStringName | kLCQAnnotationSaveButtonStringName |
kIBGAnnotationDrawnShapeStringName | kLCQAnnotationDrawnShapeStringName |
kIBGAttachmentActionSheetStopScreenRecording | kLCQAttachmentActionSheetStopScreenRecording |
kIBGAttachmentActionSheetUnmuteMic | kLCQAttachmentActionSheetUnmuteMic |
kIBGAttachmentActionSheetMuteMic | kLCQAttachmentActionSheetMuteMic |
kIBGScreenRecordingDuration | kLCQScreenRecordingDuration |
kIBGInvalidNumberMessageStringName | kLCQInvalidNumberMessageStringName |
kIBGCloseConversationsStringLabel | kLCQCloseConversationsStringLabel |
kIBGBackToConversationsStringLabel | kLCQBackToConversationsStringLabel |
kIBGSendMessageStringLabel | kLCQSendMessageStringLabel |
kIBGDismissMessageStringLabel | kLCQDismissMessageStringLabel |
kIBGReplyToMessageStringLabel | kLCQReplyToMessageStringLabel |
kIBGInvocationTitleStringName | kLCQInvocationTitleStringName |
kIBGInvocationTitleHintStringName | kLCQInvocationTitleHintStringName |
kIBGChatsListHintStringName | kLCQChatsListHintStringName |
kIBGOneChatsListHintStringName | kLCQOneChatsListHintStringName |
kIBGCancelPromptHintStringName | kLCQCancelPromptHintStringName |
kIBGReportCategoriesBackButtonStringName | kLCQReportCategoriesBackButtonStringName |
kIBGReportCategoriesBackButtonHintStringName | kLCQReportCategoriesBackButtonHintStringName |
kIBGAskAQuestionStringName | kLCQAskAQuestionStringName |
kIBGFrustratingExperienceStringName | kLCQFrustratingExperienceStringName |
kIBGReportBugStringName | kLCQReportBugStringName |
kIBGReportFeedbackStringName | kLCQReportFeedbackStringName |
kIBGReportBugDescriptionStringName | kLCQReportBugDescriptionStringName |
kIBGReportFeedbackDescriptionStringName | kLCQReportFeedbackDescriptionStringName |
kIBGReportQuestionDescriptionStringName | kLCQReportQuestionDescriptionStringName |
kIBGRequestFeatureDescriptionStringName | kLCQRequestFeatureDescriptionStringName |
kIBGProactiveReportingForceRestartAlertTitle | kLCQProactiveReportingForceRestartAlertTitle |
kIBGProactiveReportingForceRestartAlertMessage | kLCQProactiveReportingForceRestartAlertMessage |
kIBGProactiveReportingReportActionTitleName | kLCQProactiveReportingReportActionTitleName |
kIBGProactiveReportingCancelActionTitleName | kLCQProactiveReportingCancelActionTitleName |
kIBGAccessibilityReportFeedbackDescriptionStringName | kLCQAccessibilityReportFeedbackDescriptionStringName |
kIBGAccessibilityReportBugDescriptionStringName | kLCQAccessibilityReportBugDescriptionStringName |
kIBGAccessibilityRequestFeatureDescriptionStringName | kLCQAccessibilityRequestFeatureDescriptionStringName |
kIBGPhotoPickerTitle | kLCQPhotoPickerTitle |
kIBGProgressViewTitle | kLCQProgressViewTitle |
kIBGGalleryPermissionDeniedAlertTitle | kLCQGalleryPermissionDeniedAlertTitle |
kIBGGalleryPermissionDeniedAlertMessage | kLCQGalleryPermissionDeniedAlertMessage |
kIBGMaximumSizeExceededAlertTitle | kLCQMaximumSizeExceededAlertTitle |
kIBGMaximumSizeExceededAlertMessage | kLCQMaximumSizeExceededAlertMessage |
kIBGiCloudImportErrorAlertTitle | kLCQiCloudImportErrorAlertTitle |
kIBGiCloudImportErrorAlertMessage | kLCQiCloudImportErrorAlertMessage |
kIBGEmailFieldPlaceholderStringName | kLCQEmailFieldPlaceholderStringName |
kIBGEmailFieldAccessibilityStringLabel | kLCQEmailFieldAccessibilityStringLabel |
kIBGEmailFieldAccessibilityStringHint | kLCQEmailFieldAccessibilityStringHint |
kIBGNumberFieldPlaceholderStringName | kLCQNumberFieldPlaceholderStringName |
kIBGNumberInfoAlertMessageStringName | kLCQNumberInfoAlertMessageStringName |
kIBGCommentFieldPlaceholderForBugReportStringName | kLCQCommentFieldPlaceholderForBugReportStringName |
kIBGCommentFieldPlaceholderForFeedbackStringName | kLCQCommentFieldPlaceholderForFeedbackStringName |
kIBGCommentFieldPlaceholderForQuestionStringName | kLCQCommentFieldPlaceholderForQuestionStringName |
kIBGCommentFieldPlaceholderForFrustratingExperienceStringName | kLCQCommentFieldPlaceholderForFrustratingExperienceStringName |
kIBGCommentFieldAccessibilityStringLabel | kLCQCommentFieldAccessibilityStringLabel |
kIBGCommentFieldBugAccessibilityStringHint | kLCQCommentFieldBugAccessibilityStringHint |
kIBGCommentFieldImprovementAccessibilityStringHint | kLCQCommentFieldImprovementAccessibilityStringHint |
kIBGCommentFieldAskQuestionAccessibilityStringHint | kLCQCommentFieldAskQuestionAccessibilityStringHint |
kIBGCommentFieldFrustratingExperienceAccessibilityStringHint | kLCQCommentFieldFrustratingExperienceAccessibilityStringHint |
kIBGChatReplyFieldPlaceholderStringName | kLCQChatReplyFieldPlaceholderStringName |
kIBGAddScreenRecordingMessageStringName | kLCQAddScreenRecordingMessageStringName |
kIBGAddVoiceMessageStringName | kLCQAddVoiceMessageStringName |
kIBGAddImageFromGalleryStringName | kLCQAddImageFromGalleryStringName |
kIBGExtraFieldsStringLabel | kLCQExtraFieldsStringLabel |
kIBGAccessibilityExtraFieldsStepsLabel | kLCQAccessibilityExtraFieldsStepsLabel |
kIBGAccessibilityExtraFieldsStepsRequiredLabel | kLCQAccessibilityExtraFieldsStepsRequiredLabel |
kIBGRequiredExtraFieldsStringLabel | kLCQRequiredExtraFieldsStringLabel |
kIBGAddExtraScreenshotStringName | kLCQAddExtraScreenshotStringName |
kIBGAccessibilityReproStepsDisclaimerStringLabel | kLCQAccessibilityReproStepsDisclaimerStringLabel |
kIBGAccessibilityImageAttachmentStringHint | kLCQAccessibilityImageAttachmentStringHint |
kIBGAccessibilityVideoAttachmentStringHint | kLCQAccessibilityVideoAttachmentStringHint |
kIBGTakeScreenshotAccessibilityStringLabel | kLCQTakeScreenshotAccessibilityStringLabel |
kIBGTakeScreenRecordingAccessibilityStringLabel | kLCQTakeScreenRecordingAccessibilityStringLabel |
kIBGSelectImageFromGalleryLabel | kLCQSelectImageFromGalleryLabel |
kIBGAddAttachmentAccessibilityStringLabel | kLCQAddAttachmentAccessibilityStringLabel |
kIBGAddAttachmentAccessibilityStringHint | kLCQAddAttachmentAccessibilityStringHint |
kIBGExpandAttachmentAccessibilityStringLabel | kLCQExpandAttachmentAccessibilityStringLabel |
kIBGCollapseAttachmentAccessibilityStringLabel | kLCQCollapseAttachmentAccessibilityStringLabel |
kIBGAudioRecordingPermissionDeniedTitleStringName | kLCQAudioRecordingPermissionDeniedTitleStringName |
kIBGAudioRecordingPermissionDeniedMessageStringName | kLCQAudioRecordingPermissionDeniedMessageStringName |
kIBGScreenRecordingPermissionDeniedMessageStringName | kLCQScreenRecordingPermissionDeniedMessageStringName |
kIBGMicrophonePermissionAlertSettingsButtonTitleStringName | kLCQMicrophonePermissionAlertSettingsButtonTitleStringName |
kIBGMicrophonePermissionAlertLaterButtonTitleStringName | kLCQMicrophonePermissionAlertLaterButtonTitleStringName |
kIBGChatsTitleStringName | kLCQChatsTitleStringName |
kIBGTeamStringName | kLCQTeamStringName |
kIBGRecordingMessageToHoldTextStringName | kLCQRecordingMessageToHoldTextStringName |
kIBGRecordingMessageToReleaseTextStringName | kLCQRecordingMessageToReleaseTextStringName |
kIBGMessagesNotificationTitleSingleMessageStringName | kLCQMessagesNotificationTitleSingleMessageStringName |
kIBGMessagesNotificationTitleMultipleMessagesStringName | kLCQMessagesNotificationTitleMultipleMessagesStringName |
kIBGScreenshotTitleStringName | kLCQScreenshotTitleStringName |
kIBGOkButtonTitleStringName | kLCQOkButtonTitleStringName |
kIBGSendButtonTitleStringName | kLCQSendButtonTitleStringName |
kIBGCancelButtonTitleStringName | kLCQCancelButtonTitleStringName |
kIBGThankYouAlertTitleStringName | kLCQThankYouAlertTitleStringName |
kIBGThankYouAccessibilityConfirmationTitleStringName | kLCQThankYouAccessibilityConfirmationTitleStringName |
kIBGThankYouAlertMessageStringName | kLCQThankYouAlertMessageStringName |
kIBGAudioStringName | kLCQAudioStringName |
kIBGScreenRecordingStringName | kLCQScreenRecordingStringName |
kIBGImageStringName | kLCQImageStringName |
kIBGReachedMaximimNumberOfAttachmentsTitleStringName | kLCQReachedMaximimNumberOfAttachmentsTitleStringName |
kIBGReachedMaximimNumberOfAttachmentsMessageStringName | kLCQReachedMaximimNumberOfAttachmentsMessageStringName |
kIBGVideoRecordingFailureMessageStringName | kLCQVideoRecordingFailureMessageStringName |
kIBGSurveyEnterYourAnswerTextPlaceholder | kLCQSurveyEnterYourAnswerTextPlaceholder |
kIBGSurveyNoAnswerTitle | kLCQSurveyNoAnswerTitle |
kIBGSurveyNoAnswerMessage | kLCQSurveyNoAnswerMessage |
kIBGVideoPressRecordTitle | kLCQVideoPressRecordTitle |
kIBGCollectingDataText | kLCQCollectingDataText |
kIBGLowDiskStorageTitle | kLCQLowDiskStorageTitle |
kIBGLowDiskStorageMessage | kLCQLowDiskStorageMessage |
kIBGInboundByLineMessage | kLCQInboundByLineMessage |
kIBGExtraFieldIsRequiredText | kLCQExtraFieldIsRequiredText |
kIBGExtraFieldMissingDataText | kLCQExtraFieldMissingDataText |
kIBGFeatureRequestsTitle | kLCQFeatureRequestsTitle |
kIBGFeatureDetailsTitle | kLCQFeatureDetailsTitle |
kIBGStringFeatureRequestsRefreshText | kLCQStringFeatureRequestsRefreshText |
kIBGFeatureRequestErrorStateTitleLabel | kLCQFeatureRequestErrorStateTitleLabel |
kIBGFeatureRequestErrorStateDescriptionLabel | kLCQFeatureRequestErrorStateDescriptionLabel |
kIBGFeatureRequestSortingByRecentlyUpdatedText | kLCQFeatureRequestSortingByRecentlyUpdatedText |
kIBGFeatureRequestSortingByTopVotesText | kLCQFeatureRequestSortingByTopVotesText |
kIBGStringFeatureRequestAllFeaturesText | kLCQStringFeatureRequestAllFeaturesText |
kIBGAddNewFeatureRequestText | kLCQAddNewFeatureRequestText |
kIBGAddNewFeatureRequestToastText | kLCQAddNewFeatureRequestToastText |
kIBGAddNewFeatureRequestErrorToastText | kLCQAddNewFeatureRequestErrorToastText |
kIBGAddNewFeatureRequestLoadingHUDTitle | kLCQAddNewFeatureRequestLoadingHUDTitle |
kIBGAddNewFeatureRequestSuccessHUDTitle | kLCQAddNewFeatureRequestSuccessHUDTitle |
kIBGAddNewFeatureRequestSuccessHUDMessage | kLCQAddNewFeatureRequestSuccessHUDMessage |
kIBGAddNewFeatureRequestTryAgainText | kLCQAddNewFeatureRequestTryAgainText |
kIBGAddNewFeatureRequestCancelPromptTitle | kLCQAddNewFeatureRequestCancelPromptTitle |
kIBGAddNewFeatureRequestCancelPromptYesAction | kLCQAddNewFeatureRequestCancelPromptYesAction |
kIBGFeatureRequestInvalidEmailText | kLCQFeatureRequestInvalidEmailText |
kIBGFeatureRequestTimelineEmptyText | kLCQFeatureRequestTimelineEmptyText |
kIBGFeatureRequestTimelineErrorDescriptionLabel | kLCQFeatureRequestTimelineErrorDescriptionLabel |
kIBGFeatureRequestStatusChangeText | kLCQFeatureRequestStatusChangeText |
kIBGFeatureRequestAddButtonText | kLCQFeatureRequestAddButtonText |
kIBGFeatureRequestVoteWithCountText | kLCQFeatureRequestVoteWithCountText |
kIBGFeatureRequestVoteText | kLCQFeatureRequestVoteText |
kIBGFeatureRequestPostButtonText | kLCQFeatureRequestPostButtonText |
kIBGFeatureRequestCommentsText | kLCQFeatureRequestCommentsText |
kIBGFeatureRequestAuthorText | kLCQFeatureRequestAuthorText |
kIBGFeatureRequestEmptyViewTitle | kLCQFeatureRequestEmptyViewTitle |
kIBGFeatureRequestAddYourIdeaText | kLCQFeatureRequestAddYourIdeaText |
kIBGFeatureRequestAnonymousText | kLCQFeatureRequestAnonymousText |
kIBGFeatureRequestStatusPosted | kLCQFeatureRequestStatusPosted |
kIBGFeatureRequestStatusPlanned | kLCQFeatureRequestStatusPlanned |
kIBGFeatureRequestStatusStarted | kLCQFeatureRequestStatusStarted |
kIBGFeatureRequestStatusCompleted | kLCQFeatureRequestStatusCompleted |
kIBGFeatureRequestStatusMaybeLater | kLCQFeatureRequestStatusMaybeLater |
kIBGFeatureRequestStatusMoreText | kLCQFeatureRequestStatusMoreText |
kIBGFeatureRequestStatusLessText | kLCQFeatureRequestStatusLessText |
kIBGFeatureRequestAddYourThoughtsText | kLCQFeatureRequestAddYourThoughtsText |
kIBGEmailRequiredText | kLCQEmailRequiredText |
kIBGNameText | kLCQNameText |
kIBGEmailText | kLCQEmailText |
kIBGTitleText | kLCQTitleText |
kIBGDescriptionText | kLCQDescriptionText |
kIBGUserConsentRequired | kLCQUserConsentRequired |
kIBGUserConsentDefaultDescription | kLCQUserConsentDefaultDescription |
kIBGStringFeatureRequestMyFeaturesText | kLCQStringFeatureRequestMyFeaturesText |
kIBGSurveyIntroTitleText | kLCQSurveyIntroTitleText |
kIBGSurveyIntroDescriptionText | kLCQSurveyIntroDescriptionText |
kIBGSurveyIntroTakeSurveyButtonText | kLCQSurveyIntroTakeSurveyButtonText |
kIBGDismissButtonTitleStringName | kLCQDismissButtonTitleStringName |
kIBGStoreRatingThankYouTitleText | kLCQStoreRatingThankYouTitleText |
kIBGStoreRatingThankYouDescriptionText | kLCQStoreRatingThankYouDescriptionText |
kIBGSurveysNPSLeastLikelyStringName | kLCQSurveysNPSLeastLikelyStringName |
kIBGSurveysNPSMostLikelyStringName | kLCQSurveysNPSMostLikelyStringName |
kIBGSurveyNextButtonTitle | kLCQSurveyNextButtonTitle |
kIBGSurveySubmitButtonTitle | kLCQSurveySubmitButtonTitle |
kIBGSurveyAppStoreThankYouTitle | kLCQSurveyAppStoreThankYouTitle |
kIBGSurveyAppStoreButtonTitle | kLCQSurveyAppStoreButtonTitle |
kIBGExpectedResultsStringName | kLCQExpectedResultsStringName |
kIBGActualResultsStringName | kLCQActualResultsStringName |
kIBGStepsToReproduceStringName | kLCQStepsToReproduceStringName |
kIBGReplyButtonTitleStringName | kLCQReplyButtonTitleStringName |
kIBGAddAttachmentButtonTitleStringName | kLCQAddAttachmentButtonTitleStringName |
kIBGDiscardAlertTitle | kLCQDiscardAlertTitle |
kIBGDiscardAlertMessage | kLCQDiscardAlertMessage |
kIBGDiscardAlertAction | kLCQDiscardAlertAction |
kIBGDiscardAlertCancel | kLCQDiscardAlertCancel |
kIBGVideoGalleryErrorMessageStringName | kLCQVideoGalleryErrorMessageStringName |
kIBGVideoDurationErrorTitle | kLCQVideoDurationErrorTitle |
kIBGVideoDurationErrorMessage | kLCQVideoDurationErrorMessage |
kIBGAutoScreenRecordingAlertAllowText | kLCQAutoScreenRecordingAlertAllowText |
kIBGAutoScreenRecordingAlertAlwaysAllowText | kLCQAutoScreenRecordingAlertAlwaysAllowText |
kIBGAutoScreenRecordingAlertDenyText | kLCQAutoScreenRecordingAlertDenyText |
kIBGAutoScreenRecordingAlertTitleText | kLCQAutoScreenRecordingAlertTitleText |
kIBGAutoScreenRecordingAlertBodyText | kLCQAutoScreenRecordingAlertBodyText |
kIBGReproStepsDisclaimerBody | kLCQReproStepsDisclaimerBody |
kIBGReproStepsDisclaimerLink | kLCQReproStepsDisclaimerLink |
kIBGReproStepsListHeader | kLCQReproStepsListHeader |
kIBGReproStepsListEmptyStateLabel | kLCQReproStepsListEmptyStateLabel |
kIBGReproStepsListTitle | kLCQReproStepsListTitle |
kIBGReproStepsListItemName | kLCQReproStepsListItemName |
kIBGInsufficientContentTitleStringName | kLCQInsufficientContentTitleStringName |
kIBGInsufficientContentMessageStringName | kLCQInsufficientContentMessageStringName |
Updated 12 days ago
