tauri-apps/tauri · error

not implemented

Error message

not implemented

What it means

tauri-codegen's map_isolation converts the configured asset pattern for the isolation application into code. Only PatternKind::Isolation { assets: AssetResolvers::Raw } style inputs are handled; any other AssetResolvers variant hits the `unimplemented!()` catch-all. This signals a codegen path the macro author never implemented for that pattern configuration.

Solutions

  1. Check the pattern configuration in tauri.conf.json against the documented schema and remove the unsupported assets variant
  2. Pin/upgrade tauri-build and tauri-codegen to matching versions that implement this pattern path
  3. Avoid hand-constructing ContextOptions with unusual AssetResolvers values in custom codegen

Example fix

// before (tauri.conf.json)
"app": { "security": { "pattern": { "use": "isolation", "options": { "assets": ["../isolation"] } } } }
// after
"app": { "security": { "pattern": { "use": "isolation", "options": { "dir": "../isolation/dist" } } } }
Defensive patterns

Strategy: validation

Validate before calling

// check tauri.conf.json pattern config against the tauri-codegen schema before building
// e.g. keep pattern.use to documented values and options.dir to a directory

Prevention

When it happens

Trigger: Using a `pattern` configuration in tauri.conf.json / the ContextOptions whose assets form isn't one of the explicitly matched AssetResolvers cases (e.g. a config-derived resolver list in a build script path).

Common situations: Build-time compile panic while running tauri build / generate_context! with an experimental `withGlobalTauri`/isolation pattern configuration; mixing codegen options programmatically via tauri-codegen APIs in a custom build script.

Related errors


AI-assisted analysis of tauri-apps/tauri@460ec35447 (2026-09-18). Data as JSON: /api/errors/7d1d4e94947da9b3. Report an issue: GitHub.

Appendix: source

Thrown at crates/tauri-codegen/src/context.rs:202

        FrontendDist::Url(_url) => Default::default(),
        FrontendDist::Directory(path) => {
          let assets_path = config_parent.join(path);
          if !assets_path.exists() {
            panic!(
              "The `frontendDist` configuration is set to `{path:?}` but this path doesn't exist"
            )
          }
          EmbeddedAssets::new(assets_path, &options, map_core_assets(&options))?
        }
        FrontendDist::Files(files) => EmbeddedAssets::new(
          files
            .iter()
            .map(|p| config_parent.join(p))
            .collect::<Vec<_>>(),
          &options,
          map_core_assets(&options),
        )?,
        _ => unimplemented!(),
      },
      None => Default::default(),
    };
    quote!(#assets)
  };

  let out_dir = ensure_out_dir()?;

  let default_window_icon = {
    if target == Target::Windows {
      // handle default window icons for Windows targets
      let icon_path = find_icon(
        &config,
        &config_parent,
        |i| i.ends_with(".ico"),
        "icons/icon.ico",
      );
      if icon_path.exists() {

View on GitHub (pinned to 460ec35447)