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
LuciqSDK
package.
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.xcframework
from your project navigator and target's "Frameworks, Libraries, and Embedded Content" section. - Download and add the new
LuciqSDK.xcframework
to 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 LuciqSDK
Objective-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
Instabug
and replace withLuciq
. - Symbol Prefix: Find
IBG
and replace withLCQ
. - Note: In Swift, most type names that were prefixed with
IBG
now have the prefix removed (e.g.,IBGReport
becomesReport
). 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
Instabug
andIBG
symbols in all.swift
,.m
, and.h
files. - Configuration File: Renames
Instabug.plist
toLuciqConfig.plist
and updates all keys within it. - Xcode Project File: Updates the
.pbxproj
file 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
plutil
command-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 namedInstabugInstrumentation
from your project's root directory. The newLuciqSwiftUIIntegrator
will automatically create a new folder namedLuciqInstrumentation
on its first run. This step prevents retaining outdated files. - Download the New Integrator
You can download the newLuciqSwiftUIIntegrator
from 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
.
FAQ
Automated Script & File System
- What specific files does the
migrate-luciq.sh
script 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.h
extension within the provided project path. - Configuration File: It will rename
Instabug.plist
toLuciqConfig.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
.pbxproj
file to update the file reference fromInstabug.plist
toLuciqConfig.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 diff
to see every single change the script made. This is the most effective way to spot incorrect replacements or unintended modifications, especially in your.pbxproj
file. - 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 becomesLuciq
and the symbol prefix changes fromIBG
toLCQ
in Objective-C, in Swift, most class/struct/enum names that were prefixed withIBG
now have the prefix removed entirely.- Incorrect: let
myReport
=LCQReport()
- Correct: let
myReport
=Report()
Similarly,IBGSurvey
becomesSurvey
, andIBGInvocationEvent
becomesInvocationEvent
. 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:
IBGReportType
is renamed toLCQReportCategory
in Objective-C andReportCategory
in Swift. This is a semantic change, not just a prefix swap. - Enum:
IBGActionType
becomesLCQConsentAction
/ConsentAction
. - Properties: Some properties like
instabugLogs
were renamed toluciqLogs
without following theIBGprefix
convention.
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 install
for the newLuciq
pod, 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 forInstabugURL
orInstabugAPMURL
. You need to openLuciqConfig.plist
and 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 updatedLuciqSDK
symbols 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
import
statement. 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 install
or resolved Swift packages. - Check Swift Prefix Removal: As mentioned in question #3, double-check that you've removed the
IBGprefix
from Swift types (e.g., useReport
instead ofIBGReport
).
The following tables provide a one-to-one mapping of every public symbol. The general rules are:Reference: Complete Symbol Mapping- The
Instabug
class becomesLuciq
. - Any symbol prefixed with
IBG
is now prefixed withLCQ
in Objective-C. - In Swift, most types prefixed with
IBG
now 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 about 8 hours ago