Skip to content

Releases: lokal-app/lens-android-sdk

v1.2.1

Choose a tag to compare

@AnuragJha-AJ AnuragJha-AJ released this 25 May 07:15

What's new

  • Package renamed from com.behtar.lens to com.lokalapps.lens
  • Available on Maven Central — no credentials needed

Migration from 1.1.1

Update your dependencies:

debugImplementation("com.lokalapps.lens:lens:1.2.0")
releaseImplementation("com.lokalapps.lens:lens-noop:1.2.0")

v1.1.1

Choose a tag to compare

@AnuragJha-AJ AnuragJha-AJ released this 20 May 15:12

What's Changed

Bug Fixes

  • Network Inspector: replaced misleading 0 status code with ERR

OkHttp uses responseCode = 0 as an internal sentinel meaning no HTTP response was received (request was cancelled or failed before a response arrived). Lens was displaying this raw 0 in the request list, detail view status badge, and global search results — which looked like a real HTTP status code. All three display sites now show ERR instead, consistent with how tools like Chucker handle this case.


Upgrade

// Before
debugImplementation("com.behtar.lens:lens:1.1.0")
releaseImplementation("com.behtar.lens:lens-noop:1.1.0")

// After
debugImplementation("com.behtar.lens:lens:1.1.1")
releaseImplementation("com.behtar.lens:lens-noop:1.1.1")

v1.1.0

Choose a tag to compare

@AnuragJha-AJ AnuragJha-AJ released this 20 May 14:41

What's New in v1.1.0

Firebase Analytics Validator

The Analytics Inspector now validates every event and user property destined for Firebase against official Firebase limits — the ones that cause silent data loss in BigQuery.

Firebase drops or truncates invalid data without any error or warning. You'd only find out weeks later when your data is missing. Lens now catches this at the source:

  • Amber left-border stripe on event cards in the list — instantly visible while scanning
  • Violations banner at the top of the event detail view with a plain-English explanation of every issue
  • Per-parameter highlighting — offending parameters turn amber with the exact reason inline (e.g. value is 143 chars (max 100) — Firebase will truncate)
  • Same treatment for the User Properties tab

Validation covers all limits from the official Firebase docs:

What Limit Consequence
Event name length 40 chars Event dropped
Event name characters [a-zA-Z][a-zA-Z0-9_]* Event dropped
Reserved event name Firebase reserved list Event dropped
Reserved prefix (firebase_, ga_, google_) Event dropped
Parameters per event 25 Extra params dropped
Parameter name length 40 chars Parameter dropped
Parameter name characters [a-zA-Z][a-zA-Z0-9_]* Parameter dropped
Reserved parameter name session_id, user_id, etc. Parameter dropped
Parameter value length (string) 100 chars Value truncated
User property name length 24 chars Property dropped
User property name characters [a-zA-Z][a-zA-Z0-9_]* Property dropped
Reserved user property name Age, Gender, Interest Property dropped
User property value length (string) 36 chars Value truncated

Only runs for events where destinations contains "FIREBASE" — MoEngage, Adjust, and other destinations are unaffected.


DeepLink Tester — Provider API

Quick Links in the Deep Link Tester are now driven by a provider interface instead of being hardcoded inside the SDK.

class MyDeepLinkProvider : DeepLinkProvider {
    override fun getQuickLinks() = listOf(
        DeepLink(label = "Home",    path = "/home"),
        DeepLink(label = "Profile", path = "/profile"),
        DeepLink(label = "Payment", path = "/payment"),
    )
}

Lens.install(this) {
    deepLinks(MyDeepLinkProvider())
}

v1.0.0

Choose a tag to compare

@AnuragJha-AJ AnuragJha-AJ released this 24 Feb 09:50

Initial Release

Core

  • Floating bubble overlay (injected into DecorView, no permissions needed)
  • 5-tap and shake activation gestures
  • Sticky notification with live request/error counts
  • Generic key-value settings store
  • Remote activation provider (kill switch without app update)
  • Header redaction for sensitive HTTP headers
  • HAR 1.2 and JSON data export via share sheet
  • ANR detection (5s watchdog with main thread stack trace capture)

Built-in Plugins

  • Network Inspector (OkHttp interceptor, cURL export, body truncation)
  • Global Search (cross-plugin search with 300ms debounce)
  • App Info (build, device, session metadata)
  • Performance Monitor (FPS via Choreographer, memory via Runtime, jank detection)
  • Analytics Inspector (events, user properties, revenue events)
  • Exception Tracker (uncaught + handled exceptions, disk persistence)
  • Database Inspector (SQLite browser)
  • SharedPreferences Editor (view/edit all prefs files)
  • Deep Link Tester
  • Log Viewer (Timber integration)
  • Cache Manager

Optional Plugins (Provider-based)

  • Environment Switcher (data-driven from EnvironmentProvider)
  • Feature Flags Editor (from FeatureFlagProvider)
  • Quick Actions (from QuickActionsProvider)

Architecture

  • Plugin system: LensPlugin, ComposableLensPlugin, ViewLensPlugin
  • Pure-Kotlin :lens-api module (zero Android dependencies)
  • No-op :lens-noop module for release builds
  • No Hilt/Dagger — internal service locator
  • ProGuard consumer rules bundled
  • 116 unit tests