{"record":{"id":"759fc8a9c983b093","repo":"bumptech/glide","slug":"attempting-to-register-a-glide-v3-module-if-you-s","errorCode":null,"errorMessage":"Attempting to register a Glide v3 module. If you see this, you or one of your dependencies may be including Glide v3 even though you're using Glide v4. You'll need to find and remove (or update) the offending dependency. The v3 module name is: {module.getClass().getName()}","messagePattern":"Attempting to register a Glide v3 module\\. If you see this, you or one of your dependencies may be including Glide v3 even though you're using Glide v4\\. You'll need to find and remove \\(or update\\) the offending dependency\\. The v3 module name is: (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"library/src/main/java/com/bumptech/glide/RegistryFactory.java","lineNumber":437,"sourceCode":"      registry.append(ByteBuffer.class, Bitmap.class, byteBufferVideoDecoder);\n      registry.append(\n          ByteBuffer.class,\n          BitmapDrawable.class,\n          new BitmapDrawableDecoder<>(resources, byteBufferVideoDecoder));\n    }\n  }\n\n  private static void initializeModules(\n      Context context,\n      Glide glide,\n      Registry registry,\n      List<GlideModule> manifestModules,\n      @Nullable AppGlideModule annotationGeneratedModule) {\n    for (GlideModule module : manifestModules) {\n      try {\n        module.registerComponents(context, glide, registry);\n      } catch (AbstractMethodError e) {\n        throw new IllegalStateException(\n            \"Attempting to register a Glide v3 module. If you see this, you or one of your\"\n                + \" dependencies may be including Glide v3 even though you're using Glide v4.\"\n                + \" You'll need to find and remove (or update) the offending dependency.\"\n                + \" The v3 module name is: \"\n                + module.getClass().getName(),\n            e);\n      }\n    }\n    if (annotationGeneratedModule != null) {\n      annotationGeneratedModule.registerComponents(context, glide, registry);\n    }\n  }\n}\n","sourceCodeStart":419,"sourceCodeEnd":451,"githubUrl":"https://github.com/bumptech/glide/blob/eb14a895d8f866e6a08c3e19d50ea3bd2c12c20a/library/src/main/java/com/bumptech/glide/RegistryFactory.java#L419-L451","documentation":"During Registry initialization, Glide iterates over all manifest-declared GlideModules and calls registerComponents on each. If a module was compiled against the Glide v3 API, its registerComponents method has a different signature, causing an AbstractMethodError at call time. Glide catches this and wraps it in an IllegalStateException naming the offending module class so you can identify which dependency is shipping v3 code.","triggerScenarios":"A transitive dependency includes com.github.bumptech.glide:glide:3.x along with your app's Glide v4 dependency. The v3 GlideModule class passes the manifest-module instanceof check but throws AbstractMethodError when v4 calls its registerComponents method because the v3 method signature differs.","commonSituations":"Adding a third-party SDK that bundles Glide v3 as a transitive dependency. Upgrading an app from Glide v3 to v4 without excluding the old v3 artifact from all modules. Mixing stable Glide v4 with an older library pinned to v3.","solutions":["Run ./gradlew :app:dependencies and search the tree for any com.github.bumptech.glide:glide:3.x artifact","Exclude the v3 transitive dependency: implementation('com.some:sdk:1.0') { exclude group: 'com.github.bumptech.glide' }","Force-resolve to v4: configurations.all { resolutionStrategy { force 'com.github.bumptech.glide:glide:4.x.x' } }","If the offending module is your own code, update it to the v4 API (AppGlideModule/LibraryGlideModule) and remove the old GlideModule implementation"],"exampleFix":"// before — v3 module detected via transitive dep\n// after — exclude v3 from the offending dependency\ndependencies {\n  implementation('com.some:sdk:1.0') {\n    exclude group: 'com.github.bumptech.glide'\n  }\n  implementation 'com.github.bumptech.glide:glide:4.16.0'\n}","handlingStrategy":"fallback","validationCode":"// In build.gradle, proactively detect and exclude Glide v3\ndependencies {\n  configurations.all {\n    resolutionStrategy.eachDependency { details ->\n      if (details.requested.group == 'com.github.bumptech.glide'\n          && details.requested.name == 'glide'\n          && !details.requested.version.startsWith('4')) {\n        throw new GradleException(\"Glide v3 detected: ${details.requested}\" )\n      }\n    }\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run ./gradlew dependencies and search for glide:3.x after adding new dependencies","Add a resolutionStrategy.force for Glide v4 in all modules","Exclude com.github.bumptech.glide from third-party SDKs that might bundle their own copy"],"tags":["glide","version-conflict","glide-v3","dependency"],"backgroundTag":null,"analyzedSha":"eb14a895d8f866e6a08c3e19d50ea3bd2c12c20a","analyzedAt":"2026-08-14T01:43:54.821Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}