Blokada

blokada.org
Blokada

Open source mobile ad-blocker that acts like a firewall. Since it's device-wide, once connected all apps will have ads/ trackers blocked, and the blacklist can be edited. The app is free, but there is a premium option, which has a built-in VPN.

Open Source

Blokada Source Code

Author

blokadaorg

Description

The official repo for Blokada apps.

#adblocker#adblocking#android#blocker#blokada#dns#ios#privacy#security#vpn

Homepage

https://blokada.org

Repository

  • LicenseMPL-2.0
  • Created19 Nov 16
  • Primary languageDart
  • Size154,811 KB
  • Stars3,249
  • Forks229
  • Watchers3,249

Language Usage

Language Usage

Project Health

  • Last commit5 days ago
  • Open issues205
  • Latest releaselanding.796c

Top Contributors

Recent Commits

  • Karol Gusak(03 Sept 26)

    dep-validate: require the full real-device smoke suite, not just spot-checks (#1241) CI is build + lint only, so a bump can go green yet break a screen at runtime with no surface tag to warn you — an image/widget/theme/navigation dep maps to no payment/protection surface but can still blank a screen. Make the full appium-smoke suite (real-device:smoke) a required Stage D gate for any bump that renders on device, and a red suite a hard escalate. Also add an environment-vs-regression discriminator: a shared physical device can fail every spec identically for reasons the bump did not cause (an iOS system prompt awaiting a human tap, a locked screen, a stale WDA session). When the failure reproduces on a revert of the suspect commit, or hits every spec at the same generic step while the app launched, it is the device — mark real-device:smoke blocked and re-run after a device clear, do not hold the bump. Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd Co-authored-by: Claude Fable 5 <[email protected]>

  • dependabot[bot](02 Sept 26)

    build(deps-dev): bump fast-uri (#1242) Bumps the appium-wdio-npm-security group with 1 update in the /automation/appium/wdio directory: [fast-uri](https://github.com/fastify/fast-uri). Updates `fast-uri` from 3.1.5 to 3.1.7 - [Release notes](https://github.com/fastify/fast-uri/releases) - [Commits](https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.7) --- updated-dependencies: - dependency-name: fast-uri dependency-version: 3.1.7 dependency-type: indirect dependency-group: appium-wdio-npm-security ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](02 Sept 26)

    build(deps): bump cached_network_image from 3.4.1 to 4.0.0 in /common (#1238) Bumps [cached_network_image](https://github.com/Baseflow/flutter_cached_network_image) from 3.4.1 to 4.0.0. - [Release notes](https://github.com/Baseflow/flutter_cached_network_image/releases) - [Commits](https://github.com/Baseflow/flutter_cached_network_image/compare/v3.4.1...cached_network_image_v4.0.0) --- updated-dependencies: - dependency-name: cached_network_image dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • blokada-ci[bot](02 Sept 26)

    sync: update translate strings to: 4a759 (#1239) Co-authored-by: blokada-ci[bot] <276300274+blokada-ci[bot]@users.noreply.github.com>

  • Karol Gusak(01 Sept 26)

    ci(android): assemble release (R8) apps on pull requests (#1229) The PR job only assembled debug apps, which skip R8. A native-dependency bump that breaks only under shrinking therefore merged green and broke every CI Release run after it (#1222: adapty-bom 4.1.0 renamed a class the vendored Flutter bridge references; fixed in #1228). Build the Flutter release library and assemble the unsigned family/six release APKs after the debug assemble. Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd Co-authored-by: Claude Fable 5 <[email protected]>

  • Johnny Bergström(01 Sept 26)

    feat(family): confirm before an incoming link re-homes a device (#1235) A link_device link, QR code or intent acted immediately on arrival, and useToken persisted the new token before the re-home guard ran, so a rejected link had already overwritten local state. The guard itself could not fire across accounts: it asked the incoming token's account whether it knew this device's tag, which it never does. - park incoming links in PendingLinkValue and decide before mutating, so a cancelled or failed link persists nothing - compare the re-home guard against the persisted ThisDevice, and require callers to pass confirmed: true once the user has answered - show a confirmation with a red confirm action when the device is already set up; a fresh device still links without friction - resolve the dialog from the family home screen, which has a BuildContext and cannot be silently deferred the way a StageModal is when the stage is not yet foreground - treat a barrier dismissal as a cancel, and release the parked link if the screen unmounts, so an unanswered prompt cannot swallow a later scan - parse input strictly: the canonical URL with a token parameter, or the bare token Android CommandActivity delivers, both required to be structurally a JWT. Replaces tag=/name= parsing that never matched - drop the fixed 3s sleep in cmdLink; it started before runApp and was never a readiness signal. A mounted family UI is the real one The predicate ORs four signals: WasSetUp, an active account, ThisDevice and CurrentToken. WasSetUp is new and persisted, set on a completed link and on parent setup, and never cleared on token expiry. The other three can all be false on a device that has plenty to lose: a failed token refresh clears ThisDevice and CurrentToken, and a linked child holds a libre account. An unresolved account also counts as set up, because AccountStore.type reports libre before it loads and that is indistinguishable from a real free account. FamilyPhase and linkedMode are not used; they default to "not set up" early in boot and would fail open. Stop logging the enrolment token, which reached the shareable support log in cleartext at info level from two sites that bypassed the sensitive obfuscation. That obfuscation now starts on in release rather than being switched on once ConfigActor resolves the log level, which a cold start could beat. All entry channels (iOS universal link, iOS/Android QR, Android CommandActivity intent, macOS paste) now route through requestLink. CommandActivity keeps its export and filters, so store and website links keep working. Verified: 445 tests pass, flutter analyze reports 0 errors. On device, Android covers fresh install, linked child, cancel, confirm, cold start, barrier dismissal and re-prompt; iOS covers the reinstalled parent whose account survives in the keychain while local device state does not.

  • dependabot[bot](01 Sept 26)

    build(deps): bump the flutter-dependencies group (#1237) Bumps the flutter-dependencies group in /common with 3 updates: [build_runner](https://github.com/dart-lang/build), [mobx_codegen](https://github.com/mobxjs/mobx.dart) and [mockito](https://github.com/dart-lang/build/tree/master/builder_pkgs). Updates `build_runner` from 2.4.13 to 2.15.1 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/compare/build_runner-v2.4.13...build_runner-v2.15.1) Updates `mobx_codegen` from 2.6.2 to 2.7.8 - [Release notes](https://github.com/mobxjs/mobx.dart/releases) - [Changelog](https://github.com/mobxjs/mobx.dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/mobxjs/mobx.dart/compare/mobx_codegen-2.6.2...mobx_codegen-2.7.8) Updates `mockito` from 5.4.4 to 5.6.4 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/commits/mockito-v5.6.4/builder_pkgs) --- updated-dependencies: - dependency-name: build_runner dependency-version: 2.15.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mobx_codegen dependency-version: 2.7.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mockito dependency-version: 5.6.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Karol Gusak(01 Sept 26)

    fix(adapty): vendor adapty_flutter 4.0.4 and pin the Android BOM to the bridge's native version (#1228) * chore(adapty): vendor adapty_flutter 4.0.4 (Android 4.0.2, iOS 4.0.3) Refreshes the vendored plugin from pub.dev 4.0.4 and keeps the three local patches (stub podspec, BlokadaVendorAlias.swift, forked AdaptySDK-iOS pin). The plugin dictates the native SDK versions it was built against: 4.0.4 moves Android to `io.adapty:adapty-bom:4.0.2` + `io.adapty.internal:crossplatform:4.0.4`, and iOS to AdaptySDK-iOS 4.0.3. The iOS fork pin therefore moves with it — rebased onto the upstream 4.0.3 tag as branch blokada/4.0.3-footer-include-background-gate (revision ce0a55a8), still carrying the restored includeBackground gate for translucent paywall footers. Upstream delta only touches CHANGELOG.md, android/build.gradle, cross_platform.yaml, ios/adapty_flutter/Package.swift, lib/src/adapty_version.dart, pubspec.yaml and tool/kids/Package.swift. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix(android): pin adapty-bom to the version the Flutter bridge targets `io.adapty:adapty-bom` is not an independently bumpable dependency: the crossplatform bridge inside the vendored adapty_flutter is compiled against one exact native release, so the host app's BOM has to match it. Dependabot #1222 moved the BOM 4.0.2 -> 4.1.0 on its own. Adapty Android 4.1 renamed `AdaptyAttributionSource` to `AdaptyExternalAttributionProvider` with no alias, so the 4.0.x bridge no longer resolves and `:app:minifySixReleaseWithR8` fails. PR CI only builds debug (no R8), so it went green and CI Release broke on main. Pins the BOM back to 4.0.2 — the version the freshly vendored adapty_flutter 4.0.4 targets — and stops Dependabot from moving it alone, both via an ignore rule and a group exclude (a grouped PR is recreated on every member merge and would otherwise drag it back in, the pigeon lesson). Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd --------- Co-authored-by: Claude Fable 5 <[email protected]>

  • blokada-ci[bot](01 Sept 26)

    sync: update translate strings to: 65126 (#1236) Co-authored-by: blokada-ci[bot] <276300274+blokada-ci[bot]@users.noreply.github.com>

  • blokada-ci[bot](31 Aug 26)

    sync: update translate strings to: 60c72 (#1234) Co-authored-by: blokada-ci[bot] <276300274+blokada-ci[bot]@users.noreply.github.com>

  • dependabot[bot](31 Aug 26)

    build(deps): bump anthropics/claude-code-action (#1233) Bumps the github-actions group with 1 update: [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action). Updates `anthropics/claude-code-action` from 1.0.199 to 1.0.210 - [Release notes](https://github.com/anthropics/claude-code-action/releases) - [Commits](https://github.com/anthropics/claude-code-action/compare/dcb57747bfceeaa1fa72638cae52295d1d853d4a...a874e9ecd7bb36efdad65429c6b35815f5a08f10) --- updated-dependencies: - dependency-name: anthropics/claude-code-action dependency-version: 1.0.210 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](31 Aug 26)

    build(deps): bump the appium-wdio-npm group (#1232) Bumps the appium-wdio-npm group in /automation/appium/wdio with 6 updates: | Package | From | To | | --- | --- | --- | | [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) | `9.31.2` | `9.31.4` | | [@wdio/globals](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-globals) | `9.31.1` | `9.31.3` | | [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner) | `9.31.2` | `9.31.4` | | [webdriverio](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/webdriverio) | `9.31.2` | `9.31.4` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.2.0` | `26.4.0` | | [appium](https://github.com/appium/appium/tree/HEAD/packages/appium) | `3.6.0` | `3.7.0` | Updates `@wdio/cli` from 9.31.2 to 9.31.4 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.4/packages/wdio-cli) Updates `@wdio/globals` from 9.31.1 to 9.31.3 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.3/packages/wdio-globals) Updates `@wdio/local-runner` from 9.31.2 to 9.31.4 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.4/packages/wdio-local-runner) Updates `webdriverio` from 9.31.2 to 9.31.4 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.4/packages/webdriverio) Updates `@types/node` from 26.2.0 to 26.4.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `appium` from 3.6.0 to 3.7.0 - [Release notes](https://github.com/appium/appium/releases) - [Changelog](https://github.com/appium/appium/blob/master/packages/appium/CHANGELOG.md) - [Commits](https://github.com/appium/appium/commits/[email protected]/packages/appium) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-version: 9.31.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/globals" dependency-version: 9.31.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/local-runner" dependency-version: 9.31.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: webdriverio dependency-version: 9.31.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@types/node" dependency-version: 26.4.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: appium dependency-version: 3.7.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: appium-wdio-npm ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](31 Aug 26)

    build(deps): bump androidx.navigation:navigation-safe-args-gradle-plugin (#1231) Bumps the android-gradle group in /android with 1 update: androidx.navigation:navigation-safe-args-gradle-plugin. Updates `androidx.navigation:navigation-safe-args-gradle-plugin` from 2.9.8 to 2.10.0 --- updated-dependencies: - dependency-name: androidx.navigation:navigation-safe-args-gradle-plugin dependency-version: 2.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](31 Aug 26)

    build(deps): bump the flutter-dependencies group (#1230) Bumps the flutter-dependencies group in /common with 4 updates: [build_runner](https://github.com/dart-lang/build), [mobx_codegen](https://github.com/mobxjs/mobx.dart), [mockito](https://github.com/dart-lang/build/tree/master/builder_pkgs) and [syncfusion_flutter_charts](https://github.com/syncfusion/flutter-widgets/tree/master/packages). Updates `build_runner` from 2.4.13 to 2.15.1 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/compare/build_runner-v2.4.13...build_runner-v2.15.1) Updates `mobx_codegen` from 2.6.2 to 2.7.8 - [Release notes](https://github.com/mobxjs/mobx.dart/releases) - [Changelog](https://github.com/mobxjs/mobx.dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/mobxjs/mobx.dart/compare/mobx_codegen-2.6.2...mobx_codegen-2.7.8) Updates `mockito` from 5.4.4 to 5.6.4 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/commits/mockito-v5.6.4/builder_pkgs) Updates `syncfusion_flutter_charts` from 34.2.4 to 34.2.5 - [Release notes](https://github.com/syncfusion/flutter-widgets/releases) - [Commits](https://github.com/syncfusion/flutter-widgets/commits/HEAD/packages) --- updated-dependencies: - dependency-name: build_runner dependency-version: 2.15.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mobx_codegen dependency-version: 2.7.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mockito dependency-version: 5.6.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: syncfusion_flutter_charts dependency-version: 34.2.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: flutter-dependencies ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Karol Gusak(28 Aug 26)

    Retention rescue notification + winback tap (#300) (#1225) * feat(notification): render account_rescue FCM event as accountRescue notification Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix(notification): guard account rescue copy against zero and invalid values Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * feat(notification): native accountRescue prototypes on iOS and Android Map the accountRescue notification id to platform content on both hosts, mirroring how weeklyReport consumes a Dart-supplied JSON body. Title and body are composed in Dart, so the native side only carries them through and drops the notification when either is missing. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix(notification): validate accountRescue payload before scheduling on iOS scheduleNotification pre-validated only weeklyReport, so a malformed accountRescue payload would schedule an empty notification instead of none — Android's receiver already drops it. Gate accountRescue the same way; the empty-content guard in mapNotificationToUser stays as belt-and-braces. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * feat(notification): accountRescue tap opens platform subscription management Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix(notification): retry deferred tap actions and make link template selection total Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * feat(payment): route expired-notification tap to winback placement Tapping the account-expired notification now opens the Adapty `winback` placement instead of doing nothing, reusing B3's deferred notification action so a cold-start tap presents once PaymentActor has initialized. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix(notification): dismiss expired modal before winback paywall, guard Android rescue payload A cold start from the expired notification runs the account refresh, which shows the one-shot accountExpired modal at the same moment the deferred winback action presents the Adapty paywall. Two presentations racing on iOS can leave the paywall never shown, so _openWinbackPaywall now retires that modal (and only that one) via StageStore.dismissModal and awaits the dismissal before opening the paywall. Android's NotificationService.show() validated only the weekly-report payload at schedule time; a malformed accountRescue body would surface as an empty notification hours later at alarm time. Mirror the weekly guard for NOTIF_ACCOUNT_RESCUE, matching what iOS already does. Also: bound the rescue account fetch with a 10 s timeout so a slow backend drops the push instead of computing the countdown from a stale active_until; log a warning on StageBinding's unparseable-URL path, which previously dropped the link silently; and cross-reference the manage-subscriptions URL literal between StageBinding.doOpenLink and the Dart link template. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * fix link flavoring and cold-start rescue tap test Co-authored-by: kar <[email protected]> * fix(link): platform-scoped templates never resolve on another platform Pass 2 of selectLinkTemplate accepted a platform OR flavor match, so a flavored template for one platform could win on a different platform — the Android knowledge base resolved to kb_ios (#341), and the per-flavor Android manage-subscriptions entries made the unknown-platform catch-all unreachable. Match platform-only templates first, then flavor-only ones restricted to platform-agnostic templates, then the catch-all. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd * sync: update translate strings to: 6a6b3 Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019jZQTfdiZFeRcZEWApW4nd --------- Co-authored-by: Claude Fable 5 <[email protected]> Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: kar <[email protected]>

  • blokada-ci[bot](27 Aug 26)

    sync: update translate strings to: c821b (#1227) Co-authored-by: blokada-ci[bot] <276300274+blokada-ci[bot]@users.noreply.github.com>

  • blokada-ci[bot](26 Aug 26)

    sync: update translate strings to: 88e20 (#1226) Co-authored-by: blokada-ci[bot] <276300274+blokada-ci[bot]@users.noreply.github.com>

  • dependabot[bot](24 Aug 26)

    build(deps): bump anthropics/claude-code-action (#1224) Bumps the github-actions group with 1 update: [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action). Updates `anthropics/claude-code-action` from 1.0.193 to 1.0.199 - [Release notes](https://github.com/anthropics/claude-code-action/releases) - [Commits](https://github.com/anthropics/claude-code-action/compare/9d7150bc8a3dae8149739a88019d192b579ad90c...dcb57747bfceeaa1fa72638cae52295d1d853d4a) --- updated-dependencies: - dependency-name: anthropics/claude-code-action dependency-version: 1.0.199 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](24 Aug 26)

    build(deps): bump the appium-wdio-npm group (#1223) Bumps the appium-wdio-npm group in /automation/appium/wdio with 7 updates: | Package | From | To | | --- | --- | --- | | [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) | `9.30.1` | `9.31.2` | | [@wdio/globals](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-globals) | `9.29.1` | `9.31.1` | | [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner) | `9.30.1` | `9.31.2` | | [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-mocha-framework) | `9.30.1` | `9.31.2` | | [@wdio/spec-reporter](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-spec-reporter) | `9.30.1` | `9.31.2` | | [webdriverio](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/webdriverio) | `9.30.1` | `9.31.2` | | [@wdio/junit-reporter](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-junit-reporter) | `9.30.1` | `9.31.2` | Updates `@wdio/cli` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/wdio-cli) Updates `@wdio/globals` from 9.29.1 to 9.31.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.1/packages/wdio-globals) Updates `@wdio/local-runner` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/wdio-local-runner) Updates `@wdio/mocha-framework` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/wdio-mocha-framework) Updates `@wdio/spec-reporter` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/wdio-spec-reporter) Updates `webdriverio` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/webdriverio) Updates `@wdio/junit-reporter` from 9.30.1 to 9.31.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.31.2/packages/wdio-junit-reporter) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-version: 9.31.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: "@wdio/globals" dependency-version: 9.31.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: "@wdio/local-runner" dependency-version: 9.31.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: "@wdio/mocha-framework" dependency-version: 9.31.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: "@wdio/spec-reporter" dependency-version: 9.31.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: webdriverio dependency-version: 9.31.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: "@wdio/junit-reporter" dependency-version: 9.31.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: appium-wdio-npm ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](24 Aug 26)

    build(deps): bump the android-gradle group in /android with 4 updates (#1222) Bumps the android-gradle group in /android with 4 updates: [com.squareup.okhttp3:okhttp-bom](https://github.com/lysine-dev/okhttp), [io.adapty:adapty-bom](https://github.com/adaptyteam/AdaptySDK-Android), com.google.firebase:firebase-bom and [gradle-wrapper](https://github.com/gradle/gradle). Updates `com.squareup.okhttp3:okhttp-bom` from 5.4.0 to 5.5.0 - [Changelog](https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md) - [Commits](https://github.com/lysine-dev/okhttp/compare/parent-5.4.0...parent-5.5.0) Updates `io.adapty:adapty-bom` from 4.0.2 to 4.1.0 - [Release notes](https://github.com/adaptyteam/AdaptySDK-Android/releases) - [Commits](https://github.com/adaptyteam/AdaptySDK-Android/compare/4.0.2...4.1.0) Updates `com.google.firebase:firebase-bom` from 34.17.0 to 34.18.0 Updates `gradle-wrapper` from 9.7.0 to 9.7.1 - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](https://github.com/gradle/gradle/compare/v9.7.0...v9.7.1) --- updated-dependencies: - dependency-name: com.squareup.okhttp3:okhttp-bom dependency-version: 5.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle - dependency-name: io.adapty:adapty-bom dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle - dependency-name: com.google.firebase:firebase-bom dependency-version: 34.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle - dependency-name: gradle-wrapper dependency-version: 9.7.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: android-gradle ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](24 Aug 26)

    build(deps): bump the flutter-dependencies group (#1221) Bumps the flutter-dependencies group in /common with 5 updates: | Package | From | To | | --- | --- | --- | | [build_runner](https://github.com/dart-lang/build) | `2.4.13` | `2.15.1` | | [mobx](https://github.com/mobxjs/mobx.dart) | `2.6.0` | `2.6.1` | | [mobx_codegen](https://github.com/mobxjs/mobx.dart) | `2.6.2` | `2.7.8` | | [mockito](https://github.com/dart-lang/build/tree/master/builder_pkgs) | `5.4.4` | `5.6.4` | | [syncfusion_flutter_charts](https://github.com/syncfusion/flutter-widgets/tree/master/packages) | `34.2.3` | `34.2.4` | Updates `build_runner` from 2.4.13 to 2.15.1 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/compare/build_runner-v2.4.13...build_runner-v2.15.1) Updates `mobx` from 2.6.0 to 2.6.1 - [Release notes](https://github.com/mobxjs/mobx.dart/releases) - [Changelog](https://github.com/mobxjs/mobx.dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/mobxjs/mobx.dart/compare/mobx-2.6.0...mobx-2.6.1) Updates `mobx_codegen` from 2.6.2 to 2.7.8 - [Release notes](https://github.com/mobxjs/mobx.dart/releases) - [Changelog](https://github.com/mobxjs/mobx.dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/mobxjs/mobx.dart/compare/mobx_codegen-2.6.2...mobx_codegen-2.7.8) Updates `mockito` from 5.4.4 to 5.6.4 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/commits/mockito-v5.6.4/builder_pkgs) Updates `syncfusion_flutter_charts` from 34.2.3 to 34.2.4 - [Release notes](https://github.com/syncfusion/flutter-widgets/releases) - [Commits](https://github.com/syncfusion/flutter-widgets/commits/HEAD/packages) --- updated-dependencies: - dependency-name: build_runner dependency-version: 2.15.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mobx dependency-version: 2.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: flutter-dependencies - dependency-name: mobx_codegen dependency-version: 2.7.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mockito dependency-version: 5.6.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: syncfusion_flutter_charts dependency-version: 34.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: flutter-dependencies ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Karol Gusak(17 Aug 26)

    Fix invisible chat links in the sent bubble (#1219) Links (emails, URLs) in the user's own chat bubble were styled with the accent color, which is also the sent-bubble background (ColorScheme primary) in both flavors and both modes, making them invisible. The underline also rendered black because decorationColor was unset. Sent-bubble links now use the bubble's text color (onPrimary) with a matching underline; received-bubble links keep the accent, also with a matching underline. Co-authored-by: Claude Fable 5 <[email protected]>

  • Karol Gusak(17 Aug 26)

    Pin Appium xcuitest driver to 10.28.1 (#1220) CI installs the driver unpinned into the repo-local Appium home on every run. On 2026-08-14 appium-xcuitest-driver 12.3.4 became latest, bundling WebDriverAgent 16.x where UITestingUITests.m no longer contains the keyboard-preferences line our WDA patch anchors on, so setup-session failed before any spec ran. Pin to the known-good 10.28.1 until the driver upgrade is validated separately. Co-authored-by: Claude Fable 5 <[email protected]>

  • dependabot[bot](17 Aug 26)

    build(deps): bump anthropics/claude-code-action (#1218) Bumps the github-actions group with 1 update: [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action). Updates `anthropics/claude-code-action` from 1.0.187 to 1.0.193 - [Release notes](https://github.com/anthropics/claude-code-action/releases) - [Commits](https://github.com/anthropics/claude-code-action/compare/1623c36729ac1cd5895198cded705a287de7db79...9d7150bc8a3dae8149739a88019d192b579ad90c) --- updated-dependencies: - dependency-name: anthropics/claude-code-action dependency-version: 1.0.193 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](17 Aug 26)

    build(deps-dev): bump @types/node (#1217) Bumps the appium-wdio-npm group in /automation/appium/wdio with 1 update: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node). Updates `@types/node` from 26.1.2 to 26.2.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.2.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: appium-wdio-npm ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](17 Aug 26)

    build(deps): bump the android-gradle group in /android with 4 updates (#1216) Bumps the android-gradle group in /android with 4 updates: androidx.appcompat:appcompat, androidx.fragment:fragment-ktx, androidx.compose:compose-bom and [io.adapty:adapty-bom](https://github.com/adaptyteam/AdaptySDK-Android). Updates `androidx.appcompat:appcompat` from 1.7.1 to 1.8.0 Updates `androidx.fragment:fragment-ktx` from 1.8.9 to 1.9.0 Updates `androidx.compose:compose-bom` from 2026.06.01 to 2026.08.00 Updates `io.adapty:adapty-bom` from 4.0.1 to 4.0.2 - [Release notes](https://github.com/adaptyteam/AdaptySDK-Android/releases) - [Commits](https://github.com/adaptyteam/AdaptySDK-Android/compare/4.0.1...4.0.2) --- updated-dependencies: - dependency-name: androidx.appcompat:appcompat dependency-version: 1.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle - dependency-name: androidx.fragment:fragment-ktx dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: android-gradle - dependency-name: androidx.compose:compose-bom dependency-version: 2026.08.00 dependency-type: direct:production dependency-group: android-gradle - dependency-name: io.adapty:adapty-bom dependency-version: 4.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: android-gradle ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](17 Aug 26)

    build(deps): bump the flutter-dependencies group (#1215) Bumps the flutter-dependencies group in /common with 4 updates: [build_runner](https://github.com/dart-lang/build), [mobx_codegen](https://github.com/mobxjs/mobx.dart), [mockito](https://github.com/dart-lang/build/tree/master/builder_pkgs) and [syncfusion_flutter_charts](https://github.com/syncfusion/flutter-widgets/tree/master/packages). Updates `build_runner` from 2.4.13 to 2.15.1 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/compare/build_runner-v2.4.13...build_runner-v2.15.1) Updates `mobx_codegen` from 2.6.2 to 2.7.7 - [Release notes](https://github.com/mobxjs/mobx.dart/releases) - [Changelog](https://github.com/mobxjs/mobx.dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/mobxjs/mobx.dart/compare/mobx_codegen-2.6.2...mobx_codegen-2.7.7) Updates `mockito` from 5.4.4 to 5.6.4 - [Release notes](https://github.com/dart-lang/build/releases) - [Commits](https://github.com/dart-lang/build/commits/mockito-v5.6.4/builder_pkgs) Updates `syncfusion_flutter_charts` from 34.2.2 to 34.2.3 - [Release notes](https://github.com/syncfusion/flutter-widgets/releases) - [Commits](https://github.com/syncfusion/flutter-widgets/commits/HEAD/packages) --- updated-dependencies: - dependency-name: build_runner dependency-version: 2.15.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mobx_codegen dependency-version: 2.7.7 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: mockito dependency-version: 5.6.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: flutter-dependencies - dependency-name: syncfusion_flutter_charts dependency-version: 34.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: flutter-dependencies ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Karol Gusak(12 Aug 26)

    Migrate Adapty SDK to 4.0 (Paywall → Flow) + iOS Swift-package pipeline (#1214) * ios: consume the Flutter module as a Swift package (build swift-package) flutter build ios-framework forces CocoaPods and skips podspec-less plugins, so it cannot build SwiftPM-only plugins like adapty_flutter 4.x. Switch the module build to `flutter build swift-package` and the host project from 12 hardcoded xcframework refs to one local FlutterNativeIntegration package dependency (per-target product + Flutter Assemble build phase; per-scheme prebuild pre-action flips the Debug/Release symlink). The mocked simulator flow builds the same package with its dart-defines. sign-ios-frameworks now signs the prebuilt third-party xcframeworks under the package's Frameworks/ dirs; plugins vended as source packages no longer need ITMS-91065 origin signatures. Drops the unreferenced legacy common/scripts/build.for.ios.sh. Not buildable standalone: adapty_flutter 3.17.1 ships podspec+Package.swift and the module pods pass collides with the plugin's remote AdaptySDK-iOS targets; resolved by the 4.0.3 bump in the next commit (PR squash-merges). Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * deps: migrate Adapty SDK to 4.0 (Paywall → Flow) across Dart and Android Coupled bump: adapty_flutter 4.0.3 (pub) + io.adapty:adapty-bom 4.0.1 (gradle) — the Flutter plugin pins the native BOM major internally, so neither can move alone (supersedes #1199/#1201). Dart (adapty.dart): Flow renames; setFallbackPaywalls → setFallback; locale moves from getFlow (deprecated no-op) to createFlowView, else flows silently render English; paywallViewDidFailRendering folds into the mandatory flowViewDidReceiveError (kept log-only); flowViewDidDisappear now drops the cached view — 4.0 releases dismissed views, and swipe-down bypasses closePaymentScreen, so a spent view could otherwise be re-presented. AndroidSystemBackAction handling kept (4.0 stopped dismissing on back by default). Kotlin (six flavor): Flow renames; locale moves to getFlowConfiguration; PaymentBinding now extends AdaptyFlowDefaultEventListener so 4.0's new analytics/app-rate/permission flow actions keep SDK default behaviour; onBackPressed returns false to preserve the 3.x back-dismissal via the dialog fragment; prorate-on-upgrade purchase params unchanged. adapty_flutter is vendored (minus example/) under common/vendor with two patches: a stub podspec — Flutter modules still force a CocoaPods pass (flutter/flutter#184590) whose generated registrant pod hard-depends on every plugin, and 4.x ships no podspec — and a Swift typealias for the pubspec pluginClass, which upstream only exposes as an @objc name so the generated Swift registrant fails to compile (report to Adapty). The fallback-version CI script now also enforces pin == vendored version. Fallback files are still format v9 and MUST be replaced with v10 exports before release: SDK 4.x rejects v9 at cold start (error 2006) and the failure is swallowed into paymentTempUnavailable. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * build(ios): sign script tolerates zero prebuilt plugin xcframeworks Since Adapty 4 every plugin is a Swift source package, so the package's Frameworks dir holds only the excluded Flutter/App bundles and the zero-signed case is legitimate, not a broken build. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * fix(payment): address code-review findings on the Adapty 4 migration - flowViewDidDisappear now resets the PaymentActor when a dismissal bypassed closePaymentScreen (swipe-down, flow-internal close) — without it _isOpened stayed true and the paywall could never reopen. A dismissing-view marker keeps app-initiated closes reporting their own isError without double-notifying. - closePaymentScreen only invalidates the cached view when it is the one being dismissed, so a fresh preload for another placement survives; cache clearing deduplicated into _dropCachedView(). - Scheme surgery had MOVED each Build entry's BuildableReference into the new pre-action instead of copying it, leaving Build actions empty — restored in all 8 schemes. - sign-ios-frameworks discovers xcframeworks recursively so a prebuilt bundle in a new layout cannot silently skip ITMS-91065 signing. - Fallback-version guard: vendor dir added to the workflow paths filter, stub podspec version pulled into the lockstep check, pubspec pin regex made order/indentation-proof. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * test(appium): wait for a stable frame before the paywall golden compare The smoke run on Adapty 4 failed the paywall golden with 12% diff: the screenshot caught the flow mid-presentation (content shifted by the status-bar height, bar transiently hidden during the modal handoff), while the settled frame — visible in the failure screenshot taken moments later — matches the golden exactly. The fixed 4s pause was tuned to the 3.x renderer's timing; the 4.0 flow runtime settles later. Replace it with waitForStableScreen(): consecutive top-masked frames compared until quiescent, so the timing never needs re-tuning. No regold needed — the steady-state render is unchanged. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * test(appium): retry the paywall golden compare until the flow settles The stable-frame wait latched onto the wrong state: the Adapty 4 flow holds a stable intermediate layout for several seconds (content shifted by the status-bar height — identical 12.14% diff across runs) before its final reflow, so quiescence cannot distinguish the plateau from the settled screen. compareToGolden gains retries/retryDelayMs and the spec retries the comparison itself; only a frame that never matches fails. Supersedes waitForStableScreen, removed. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * fix(payment): pin AdaptySDK-iOS to blokadaorg fork with footer-gate patch The 4.x decorator rewrite dropped the includeBackground opacity gate on static backgrounds, so the paywall's translucent footer scrim (#000000BF, meant to appear only when content scrolls beneath the footer) is painted unconditionally — rgb(57) → rgb(14) on the footer band, breaking the design's scroll-under translucency. No legacy or compat renderer exists in 4.0 (format<4.8 paywalls are decoded into a synthetic single-screen flow), so the vendored plugin's Package.swift now pins blokadaorg/AdaptySDK-iOS @ caf82a13 — tag 4.0.2 plus one commit restoring the gate (branch blokada/4.0.2-footer-include-background-gate). Return to the upstream exact-4.x pin when Adapty ships the fix. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * chore(payment): refresh Adapty fallback paywalls to format v10 SDK 4 rejects the bundled v9 fallbacks at cold start (error 2006, swallowed into paymentTempUnavailable), so offline cold-start paywalls were broken until this lands. Fresh dashboard exports (all 7 placements) installed into all three bundled copies via make adapty-paywalls; ADAPTY_VER now matches the 4_0_0 export filenames and the CI guard requires v10. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH * fix(payment): pass bare language codes to the Adapty 4 localization lookup Device sign-off caught the paywall rendering English on a Spanish device. Adapty 4 resolves the view locale client-side with an EXACT dictionary lookup against the dashboard localization ids (bare language codes: en, es, de, ...) — AdaptyUISchema+localization.swift has no language-prefix fallback, unlike the lenient 3.x fetch-time matching. Our region-tagged values (Dart I18n.localeStr = es_es, Android toLanguageTag = es-ES) therefore missed and silently fell back to the default (English). Pass I18n.languageOnly on the Dart path and the language subtag on the native Android path. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bwp4PT4b6f87avSxEbgqNH --------- Co-authored-by: Claude Fable 5 <[email protected]>

  • dependabot[bot](10 Aug 26)

    build(deps): bump anthropics/claude-code-action (#1213) Bumps the github-actions group with 1 update: [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action). Updates `anthropics/claude-code-action` from 1.0.183 to 1.0.187 - [Release notes](https://github.com/anthropics/claude-code-action/releases) - [Commits](https://github.com/anthropics/claude-code-action/compare/be7b93b1907a4abad570368f3c74b6fe3807510b...1623c36729ac1cd5895198cded705a287de7db79) --- updated-dependencies: - dependency-name: anthropics/claude-code-action dependency-version: 1.0.187 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](10 Aug 26)

    build(deps): bump the appium-wdio-npm group (#1212) Bumps the appium-wdio-npm group in /automation/appium/wdio with 6 updates: | Package | From | To | | --- | --- | --- | | [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) | `9.30.0` | `9.30.1` | | [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner) | `9.30.0` | `9.30.1` | | [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-mocha-framework) | `9.30.0` | `9.30.1` | | [@wdio/spec-reporter](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-spec-reporter) | `9.29.1` | `9.30.1` | | [webdriverio](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/webdriverio) | `9.30.0` | `9.30.1` | | [@wdio/junit-reporter](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-junit-reporter) | `9.29.1` | `9.30.1` | Updates `@wdio/cli` from 9.30.0 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/wdio-cli) Updates `@wdio/local-runner` from 9.30.0 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/wdio-local-runner) Updates `@wdio/mocha-framework` from 9.30.0 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/wdio-mocha-framework) Updates `@wdio/spec-reporter` from 9.29.1 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/wdio-spec-reporter) Updates `webdriverio` from 9.30.0 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/webdriverio) Updates `@wdio/junit-reporter` from 9.29.1 to 9.30.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v9.30.1/packages/wdio-junit-reporter) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-version: 9.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/local-runner" dependency-version: 9.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/mocha-framework" dependency-version: 9.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/spec-reporter" dependency-version: 9.30.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: appium-wdio-npm - dependency-name: webdriverio dependency-version: 9.30.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: appium-wdio-npm - dependency-name: "@wdio/junit-reporter" dependency-version: 9.30.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: appium-wdio-npm ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Blokada Security

2.4/10

Repo Security Summary

Updated 24 Aug 26

  • Maintained10/10
  • Code-Review0/10
  • Dangerous-Workflow0/10
  • PackagingN/A
  • CII-Best-Practices0/10
  • Token-Permissions0/10
  • Security-Policy0/10
  • Binary-Artifacts9/10
  • Fuzzing0/10
  • Pinned-Dependencies1/10
  • Signed-Releases0/10
  • License10/10
  • Branch-Protection3/10
  • SAST0/10

Blokada Website

Website

Blokada - the popular mobile adblocker and VPN for Android and iOS

Keep all your devices protected with Blokada content filtering and encryption.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address172.67.135.212
  • LocationSan Francisco,California,United States of America,NA
  • ISPCloudFlare Inc.
  • ASNAS13335

Associated Countries

  • USUS
  • CACA

Safety Score

Website marked as safe

100%

Blacklist Check

blokada.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Blokada Android App

APK Info

Trackers

No trackers found

    Permissions

    • Access Coarse Location
    • Access Network State
    • Access Wifi State
    • Foreground Service
    • Get Tasks
    • Interact Across Users
    • Internet
    • Post Notifications
    • Read Logs
    • Read Phone State
    • Receive Boot Completed
    • Request Delete Packages
    • Use Biometric
    • Use Fingerprint
    • Vibrate
    • Wake Lock
    • Write External Storage
    • Set Alarm
    • Billing
    • Dynamic Receiver Not Exported Permission

    Blokada iOS App

    App Info

    Ad Blocker VPN & DNS – Blokada

    This is the official app on App Store from the Blokada open source project. Blokada for iOS uses DNS (Domain Name System) to enable you to have an ad free experience to see only the content you want. Use Blokada Cloud to block ads and trackers, while keeping your DNS traffic confidential. Upgrade to Blokada Plus for encrypting all traffic with our global VPN network. Improve your privacy and secure your Internet against cyber attacks and hackers. ---- Top features: - Supports ad-blocking for every web browser and other app installed. - Blocks sites that distribute malicious content, viruses and fraudulent websites. - DNS based interception for all modern browsers and apps. - Fast and reliable VPN that protects your privacy and encrypts your data. The most compatible ad blocker on the market! • Blocks ads • Saves your data plan • Browse FASTER by loading less data • Increase your battery life What can be blocked? • Block annoying ads: Google AdWords, Google Invite Media, DoubleClick Bid Manager, Liftoff, Bing Ads, Amazon, etc • Block adult websites • Block gambling websites • Block social media trackers: Google Analytics, Facebook Connect, DoubleClick, Google Publisher Tags, Google AdSense, Twitter Button, Yandex.Metrix, Comscore • Block malicious websites: Virus downloads, malicious content, fraudulent websites and manipulated apps ---- Terms of Use: https://go.blokada.org/terms Privacy Policy: https://go.blokada.org/privacy

    Rating

    Rated 3.9 out of 5 stars by 9,478 users

    Version Info

    • Current Version26.8.1020
    • Last Updated28 Aug 26
    • First Released06 Jun 20
    • Minimum iOS Version15.0
    • Device Models Supported127

    App Details

    • IPA Size68.97 Mb
    • PriceFree (USD)
    • Age Advisory4+
    • Supported Languages17
    • DeveloperBlocka AB
    • Bundle IDnet.blocka.app

    Screenshots

    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot
    • App screenshot

    Blokada Reviews

    More Ad Blockers

    • Self-hosted, network-wide DNS server that blocks ads and trackers for every device on your network, comparable to Pi-hole. Open source, with a web dashboard, encrypted DNS, and parental controls. Needs an always-on machine, and some setup knowledge.

    • A shell script application to manage ad-blocking, Dnsmasq logging, Entware and pixelserv-tls installations and more on supported routers running Asuswrt-Merlin firmware, including its forks.

    • A POSIX-compliant shell script, designed for Unix-like systems, that gets a list of domains that serve ads, tracking scripts and malware from multiple sources and creates a hosts file (alternative formats are also supported) that prevents your system from connecting to them. Aimed at improving security and privacy through blocking advert, tracking and malware associated domains.

    • Pi-Hole

      Pi-Hole

      pi-hole.net

      Incredibly powerful, network-wide ad-blocker. Works out-of-the-box, light-weight with an intuitive web interface, but still allows for a lot of advanced configuration for power users. As well as blocking ads and trackers, Pi-Hole speeds up your network speeds quite significantly. The dashboard has detailed statistics, and makes it easy to pause/ resume Pi-Hole if needed.

    • Free and open source ad-blocker and a firewall for Android 6+ (no root required).

    • Light-weight, fast browser extension for Firefox and Chromium (Chrome, Edge, Brave Opera etc), that blocks tracking, ads and known malware. uBlock is easy-to-use out-of-the-box, but also has a highly customisable advanced mode, with a point-and-click firewall which can be configured on a per-site basis.

    About the Data: Blokada

    Change History

    • Amended (androidApp, iosApp)

    Edit Blokada Data

    You can edit Blokada's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
    Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

    Origin Data

    Modify Data

    API

    You can access Blokada's data programmatically via our API. Simply make a GET request to:

    https://api.awesome-privacy.xyz/v1/services/blokada

    The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

    Share Blokada

    Help your friends compare Ad Blockers, and pick privacy-respecting software and services.
    Share Blokada and Awesome Privacy with your network!