{"id":19527622,"url":"https://github.com/bugfender/bugfender-capacitor","last_synced_at":"2026-02-25T00:36:49.851Z","repository":{"id":73697474,"uuid":"497871250","full_name":"bugfender/bugfender-capacitor","owner":"bugfender","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-19T06:52:06.000Z","size":1401,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-03T08:33:58.738Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bugfender.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-30T09:19:04.000Z","updated_at":"2024-09-19T06:48:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f5856e2-9902-421e-a3f7-a2e5e7fb87fe","html_url":"https://github.com/bugfender/bugfender-capacitor","commit_stats":{"total_commits":59,"total_committers":6,"mean_commits":9.833333333333334,"dds":0.4067796610169492,"last_synced_commit":"b8122154d53d35710c98f94629efeb80b8aaa60f"},"previous_names":["bugfender/bugfender-capacitor"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugfender%2Fbugfender-capacitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugfender%2Fbugfender-capacitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugfender%2Fbugfender-capacitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugfender%2Fbugfender-capacitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bugfender","download_url":"https://codeload.github.com/bugfender/bugfender-capacitor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224032184,"owners_count":17244373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T01:15:47.252Z","updated_at":"2026-02-25T00:36:49.840Z","avatar_url":"https://github.com/bugfender.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @bugfender/capacitor\n\nRemote logging, crash reporting and in-app user feedback with [Bugfender](https://bugfender.com) and [Capacitor](https://capacitorjs.com).\n\nThis module is a plugin for Capacitor since version 4. You can use `@bugfender/capacitor` in Ionic projects for iOS, Android, web and electron platforms.\n\n## Installation\n\n```bash\nnpm install @bugfender/capacitor @bugfender/sdk @bugfender/common\nnpx cap sync\n```\n\n## Usage\n\nImport Bugfender like this:\n\n```bash\nimport { Bugfender } from '@bugfender/capacitor';\n```\n\n**Note:** in an Ionic/Capacitor project, always import `@bugfender/capacitor` instead of `@bugfender/sdk`. \nThis will enable the native features of the SDK that you wouldn't get otherwise.\n\n## API\n\nPlease check the following URL for a complete API reference: [https://js.bugfender.com](https://js.bugfender.com).\n\n\u003cdocgen-index\u003e\n\n* [`init(...)`](#init)\n* [`forceSendOnce()`](#forcesendonce)\n* [`getDeviceURL()`](#getdeviceurl)\n* [`getSessionURL()`](#getsessionurl)\n* [`getUserFeedback(...)`](#getuserfeedback)\n* [`log(...)`](#log)\n* [`log(...)`](#log)\n* [`warn(...)`](#warn)\n* [`warn(...)`](#warn)\n* [`error(...)`](#error)\n* [`error(...)`](#error)\n* [`trace(...)`](#trace)\n* [`trace(...)`](#trace)\n* [`info(...)`](#info)\n* [`info(...)`](#info)\n* [`fatal(...)`](#fatal)\n* [`fatal(...)`](#fatal)\n* [`removeDeviceKey(...)`](#removedevicekey)\n* [`sendLog(...)`](#sendlog)\n* [`sendIssue(...)`](#sendissue)\n* [`sendCrash(...)`](#sendcrash)\n* [`sendUserFeedback(...)`](#senduserfeedback)\n* [`setDeviceKey(...)`](#setdevicekey)\n* [`setForceEnabled(...)`](#setforceenabled)\n* [`setSDKType(...)`](#setsdktype)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n* [Enums](#enums)\n\n\u003c/docgen-index\u003e\n\n\u003cdocgen-api\u003e\n\u003c!--Update the source file JSDoc comments and rerun docgen to update the docs below--\u003e\n\n### init(...)\n\n```typescript\ninit(options: SDKOptions) =\u003e Promise\u003cvoid\u003e\n```\n\n| Param         | Type                                              |\n| ------------- | ------------------------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#sdkoptions\"\u003eSDKOptions\u003c/a\u003e\u003c/code\u003e |\n\n--------------------\n\n\n### forceSendOnce()\n\n```typescript\nforceSendOnce() =\u003e void\n```\n\n--------------------\n\n\n### getDeviceURL()\n\n```typescript\ngetDeviceURL() =\u003e Promise\u003cstring\u003e\n```\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;string\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### getSessionURL()\n\n```typescript\ngetSessionURL() =\u003e Promise\u003cstring\u003e\n```\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;string\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### getUserFeedback(...)\n\n```typescript\ngetUserFeedback(options?: UserFeedbackOptions | undefined) =\u003e Promise\u003cUserFeedbackResult\u003e\n```\n\n| Param         | Type                                                                |\n| ------------- | ------------------------------------------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#userfeedbackoptions\"\u003eUserFeedbackOptions\u003c/a\u003e\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#userfeedbackresult\"\u003eUserFeedbackResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### log(...)\n\n```typescript\nlog(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### log(...)\n\n```typescript\nlog(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### warn(...)\n\n```typescript\nwarn(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### warn(...)\n\n```typescript\nwarn(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### error(...)\n\n```typescript\nerror(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### error(...)\n\n```typescript\nerror(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### trace(...)\n\n```typescript\ntrace(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### trace(...)\n\n```typescript\ntrace(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### info(...)\n\n```typescript\ninfo(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### info(...)\n\n```typescript\ninfo(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### fatal(...)\n\n```typescript\nfatal(obj: unknown, ...objs: unknown[]) =\u003e void\n```\n\n| Param      | Type                   |\n| ---------- | ---------------------- |\n| **`obj`**  | \u003ccode\u003eunknown\u003c/code\u003e   |\n| **`objs`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### fatal(...)\n\n```typescript\nfatal(msg: string, ...subst: unknown[]) =\u003e void\n```\n\n| Param       | Type                   |\n| ----------- | ---------------------- |\n| **`msg`**   | \u003ccode\u003estring\u003c/code\u003e    |\n| **`subst`** | \u003ccode\u003eunknown[]\u003c/code\u003e |\n\n--------------------\n\n\n### removeDeviceKey(...)\n\n```typescript\nremoveDeviceKey(key: string) =\u003e void\n```\n\n| Param     | Type                |\n| --------- | ------------------- |\n| **`key`** | \u003ccode\u003estring\u003c/code\u003e |\n\n--------------------\n\n\n### sendLog(...)\n\n```typescript\nsendLog(log: LogEntry) =\u003e void\n```\n\n| Param     | Type                                          |\n| --------- | --------------------------------------------- |\n| **`log`** | \u003ccode\u003e\u003ca href=\"#logentry\"\u003eLogEntry\u003c/a\u003e\u003c/code\u003e |\n\n--------------------\n\n\n### sendIssue(...)\n\n```typescript\nsendIssue(title: string, text: string) =\u003e Promise\u003cstring\u003e\n```\n\n| Param       | Type                |\n| ----------- | ------------------- |\n| **`title`** | \u003ccode\u003estring\u003c/code\u003e |\n| **`text`**  | \u003ccode\u003estring\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;string\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### sendCrash(...)\n\n```typescript\nsendCrash(title: string, text: string) =\u003e Promise\u003cstring\u003e\n```\n\n| Param       | Type                |\n| ----------- | ------------------- |\n| **`title`** | \u003ccode\u003estring\u003c/code\u003e |\n| **`text`**  | \u003ccode\u003estring\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;string\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### sendUserFeedback(...)\n\n```typescript\nsendUserFeedback(title: string, text: string) =\u003e Promise\u003cstring\u003e\n```\n\n| Param       | Type                |\n| ----------- | ------------------- |\n| **`title`** | \u003ccode\u003estring\u003c/code\u003e |\n| **`text`**  | \u003ccode\u003estring\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;string\u0026gt;\u003c/code\u003e\n\n--------------------\n\n\n### setDeviceKey(...)\n\n```typescript\nsetDeviceKey(key: string, value: DeviceKeyValue) =\u003e void\n```\n\n| Param       | Type                                                      |\n| ----------- | --------------------------------------------------------- |\n| **`key`**   | \u003ccode\u003estring\u003c/code\u003e                                       |\n| **`value`** | \u003ccode\u003e\u003ca href=\"#devicekeyvalue\"\u003eDeviceKeyValue\u003c/a\u003e\u003c/code\u003e |\n\n--------------------\n\n\n### setForceEnabled(...)\n\n```typescript\nsetForceEnabled(state: boolean) =\u003e void\n```\n\n| Param       | Type                 |\n| ----------- | -------------------- |\n| **`state`** | \u003ccode\u003eboolean\u003c/code\u003e |\n\n--------------------\n\n\n### setSDKType(...)\n\n```typescript\nsetSDKType(sdkType: string, version: number) =\u003e void\n```\n\n| Param         | Type                |\n| ------------- | ------------------- |\n| **`sdkType`** | \u003ccode\u003estring\u003c/code\u003e |\n| **`version`** | \u003ccode\u003enumber\u003c/code\u003e |\n\n--------------------\n\n\n### Interfaces\n\n\n#### SDKOptions\n\n| Prop                          | Type                 | Description                                                                                                                          |\n| ----------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |\n| **`appKey`**                  | \u003ccode\u003estring\u003c/code\u003e  | The app key to log into                                                                                                              |\n| **`apiURL`**                  | \u003ccode\u003estring\u003c/code\u003e  | Base URL to Bugfender API                                                                                                            |\n| **`build`**                   | \u003ccode\u003estring\u003c/code\u003e  | App build identifier                                                                                                                 |\n| **`baseURL`**                 | \u003ccode\u003estring\u003c/code\u003e  | Base URL to Bugfender web dashboard                                                                                                  |\n| **`debug`**                   | \u003ccode\u003eboolean\u003c/code\u003e | Set SDK in debug mode                                                                                                                |\n| **`deviceName`**              | \u003ccode\u003estring\u003c/code\u003e  | Device name, this will be shown on the dashboard devices list. Defaults to browser + OS.                                             |\n| **`overrideConsoleMethods`**  | \u003ccode\u003eboolean\u003c/code\u003e | Override default `window.console` so it also logs to Bugfender. Defaults to `true`.                                                  |\n| **`printToConsole`**          | \u003ccode\u003eboolean\u003c/code\u003e | Print also with `window.console` when Bugfender logging methods are called. Defaults to `true`.                                      |\n| **`logBrowserEvents`**        | \u003ccode\u003eboolean\u003c/code\u003e | Register a handler for most common browser events to report them to Bugfender. Defaults to `true`.                                   |\n| **`logUIEvents`**             | \u003ccode\u003eboolean\u003c/code\u003e | Register a handler for most common UI events to report them to Bugfender. Defaults to `true`.                                        |\n| **`registerErrorHandler`**    | \u003ccode\u003eboolean\u003c/code\u003e | Register error handler for uncaught errors that reports a crash to Bugfender. Defaults to `true`.                                    |\n| **`version`**                 | \u003ccode\u003estring\u003c/code\u003e  | App version identifier                                                                                                               |\n| **`maximumLocalStorageSize`** | \u003ccode\u003enumber\u003c/code\u003e  | Set the maximum size to store local log files in bytes. Range accepted is from 1MB to 50MB. Defaults to 5MB. **iOS \u0026 Android only**. |\n| **`enableLogcatLogging`**     | \u003ccode\u003eboolean\u003c/code\u003e | Logs all logs written via Logcat. Defaults to `false`. **Android only**.                                                             |\n\n\n#### UserFeedbackResultSuccess\n\n| Prop              | Type                | Description                     |\n| ----------------- | ------------------- | ------------------------------- |\n| **`isSent`**      | \u003ccode\u003etrue\u003c/code\u003e   | The user has sent the feedback. |\n| **`feedbackURL`** | \u003ccode\u003estring\u003c/code\u003e | Bugfender URL for the feedback. |\n\n\n#### UserFeedbackResultCancel\n\n| Prop         | Type               | Description                                       |\n| ------------ | ------------------ | ------------------------------------------------- |\n| **`isSent`** | \u003ccode\u003efalse\u003c/code\u003e | The user has closed the modal without sending it. |\n\n\n#### UserFeedbackOptions\n\nOptions object for `Bugfender.getUserFeedback` with customised modal strings.\n\n| Prop                      | Type                | Description                                                 |\n| ------------------------- | ------------------- | ----------------------------------------------------------- |\n| **`title`**               | \u003ccode\u003estring\u003c/code\u003e | Default: `Feedback`.                                        |\n| **`hint`**                | \u003ccode\u003estring\u003c/code\u003e | Default: `Please insert your feedback here and click send`. |\n| **`subjectPlaceholder`**  | \u003ccode\u003estring\u003c/code\u003e | Default: `Subject…`.                                        |\n| **`feedbackPlaceholder`** | \u003ccode\u003estring\u003c/code\u003e | Default: `Your feedback…`.                                  |\n| **`submitLabel`**         | \u003ccode\u003estring\u003c/code\u003e | Default: `Send`.                                            |\n| **`closeLabel`**          | \u003ccode\u003estring\u003c/code\u003e | Default: `Close`. **iOS only**.                             |\n\n\n#### LogEntry\n\nLog Entry object interface\n\n| Prop         | Type                                          | Description                                                                                               |\n| ------------ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |\n| **`line`**   | \u003ccode\u003enumber\u003c/code\u003e                           | The line number where the log was triggered from                                                          |\n| **`level`**  | \u003ccode\u003e\u003ca href=\"#loglevel\"\u003eLogLevel\u003c/a\u003e\u003c/code\u003e | The log's level based on \u003ca href=\"#loglevel\"\u003eLogLevel\u003c/a\u003e constant                                        |\n| **`tag`**    | \u003ccode\u003estring\u003c/code\u003e                           | The log's tag                                                                                             |\n| **`method`** | \u003ccode\u003estring\u003c/code\u003e                           | The method name where the log was triggered from                                                          |\n| **`file`**   | \u003ccode\u003estring\u003c/code\u003e                           | The file name where the log was triggered from                                                            |\n| **`text`**   | \u003ccode\u003estring \\| unknown[]\u003c/code\u003e              | Text can be either: - `string` with the content - `unknown[]` array compatible with `console.*` signature |\n| **`url`**    | \u003ccode\u003estring\u003c/code\u003e                           | The log's origin URL. This attribute is ignored on Android \u0026 iOS                                          |\n\n\n### Type Aliases\n\n\n#### UserFeedbackResult\n\n\u003ccode\u003e\u003ca href=\"#userfeedbackresultsuccess\"\u003eUserFeedbackResultSuccess\u003c/a\u003e | \u003ca href=\"#userfeedbackresultcancel\"\u003eUserFeedbackResultCancel\u003c/a\u003e\u003c/code\u003e\n\n\n#### DeviceKeyValue\n\n\u003ccode\u003estring | number | boolean\u003c/code\u003e\n\n\n### Enums\n\n\n#### LogLevel\n\n| Members       | Value          |\n| ------------- | -------------- |\n| **`Debug`**   | \u003ccode\u003e0\u003c/code\u003e |\n| **`Warning`** | \u003ccode\u003e1\u003c/code\u003e |\n| **`Error`**   | \u003ccode\u003e2\u003c/code\u003e |\n| **`Trace`**   | \u003ccode\u003e3\u003c/code\u003e |\n| **`Info`**    | \u003ccode\u003e4\u003c/code\u003e |\n| **`Fatal`**   | \u003ccode\u003e5\u003c/code\u003e |\n\n\u003c/docgen-api\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugfender%2Fbugfender-capacitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbugfender%2Fbugfender-capacitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugfender%2Fbugfender-capacitor/lists"}