# Asynchronous API Changes (v85+)

With v85 of Spark AR Studio the current JavaScript API will be deprecated in favor of asynchronous APIs.

This means some APIs will be deprecated and will need to be replaced in your projects. When creating new projects, new APIs should be used instead.

### What happens to existing projects <a href="#what-happens-to-existing-projects" id="what-happens-to-existing-projects"></a>

APIs will be deprecated after 6 months in existing live effects, and 3 months in resubmitted projects.

If you’re using a deprecated API, you’ll:

1. See a message in Spark AR Studio when you open the project.
2. Get an email and notification to let you know how to update it.

## New APIs <a href="#new-apis" id="new-apis"></a>

## Deprecated `BlendShapesMesh`

**Note: duplicated functionality of Array\<BlendShapeMesh>**

## `BlockSceneRoot`

**Added inputs.setBoolean(name: String, signal: BoolSignal): Promise\<void>**

* Deprecates `setBooleanInput(name: String, signal: BoolSignal): void`

**Added inputs.setColor(name: String, signal: ColorSignal): Promise\<void>**

* Deprecates `setColorInput(name: String, signal: ColorSignal): void`

**Added inputs.setPoint(name: String, signal: PointSignal): Promise\<void>**

* Deprecates `setPointInput(name: String, signal: PointSignal): void`

**Added inputs.setPoint2D(name: String, signal: PixelPointSignal): Promise\<void>**

* Deprecates `setPixelPointInput(name: String, signal: PixelPointSignal): void`

**Added inputs.setScalar(name: String, signal: ScalarSignal): Promise\<void>**

* Deprecates `setScalarInput(name: String, signal: ScalarSignal): void`

**Added inputs.setShader(name: String, signal: ShaderSignal): Promise\<void>**

* Deprecates `setShaderInput(name: String, signal: ShaderSignal): void`

**Added inputs.setString(name: String, signal: StringSignal): Promise\<void>**

* Deprecates `setStringInput(name: String, signal: StringSignal): void`

**Added inputs.setVector(name: String, signal: VectorSignal): Promise\<void>**

* Deprecates `setVectorInput(name: String, signal: VectorSignal): void`

**Added outputs.getBoolean(name: String): Promise\<BoolSignal>**

* Deprecates `getBooleanOutput(name: String): BoolSignal`

**Added outputs.getBooleanOrFallback(name: String, fallback: BoolSignal): BoolSignal**

**Added outputs.getColor(name: String): Promise\<ColorSignal>**

* Deprecates `getColorOutput(name: String): ColorSignal`

**Added outputs.getColorOrFallback(name: String, fallback: ColorSignal): ColorSignal**

**Added outputs.getPoint(name: String): Promise\<PointSignal>**

* Deprecates `getPointOutput(name: String): PointSignal`

**Added outputs.getPointOrFallback(name: String, fallback: PointSignal): PointSignal**

**Added outputs.getPoint2D(name: String): Promise\<PixelPointSignal>**

* Deprecates `getPixelPointOutput(name: String): PixelPointSignal`

**Added outputs.getPoint2DOrFallback(name: String, fallback: PixelPointSignal): PixelPointSignal**

**Added outputs.getScalar(name: String): Promise\<ScalarSignal>**

* Deprecates `getScalarOutput(name: String): ScalarSignal`

**Added outputs.getScalarOrFallback(name: String, fallback: ScalarSignal): ScalarSignal**

**Added outputs.getShader(name: String): Promise\<ShaderSignal>**

* Deprecates `getShaderOutput(name: String): ShaderSignal`

**Added outputs.getShaderOrFallback(name: String, fallback: ShaderSignal): ShaderSignal**

**Added outputs.getString(name: String): Promise\<StringSignal>**

* Deprecates `getStringOutput(name: String): StringSignal`

**Added outputs.getStringOrFallback(name: String, fallback: StringSignal): StringSignal**

**Added outputs.getVector(name: String): Promise\<VectorSignal>**

* Deprecates `getVectorOutput(name: String): VectorSignal`

**Added outputs.getVectorOrFallback(name: String, fallback: VectorSignal): VectorSignal**

## `Canvas`

**Added void setMode(mode: Signal\<SceneModule.RenderMode>, config { fallback: SceneModule.RenderMode }): void**

**Added (get) mode: Signal\<SceneModule.RenderMode>**

* Deprecates `(get) renderMode: SceneModule.RenderMode`

**Added (set) mode: Signal\<SceneModule.RenderMode>**

* Deprecates `(set) renderMode: SceneModule.RenderMode`

## `CustomMaterial`

**Added getBoolParameter(paramName: string): Promise\<BoolSignal>**

* Deprecates `boolParameter(paramName: string): BoolValue`

**Added getBoolParameterOrFallback(paramName: string, fallback: BoolSignal): BoolSignal**

**Added getFloatParameter(paramName: string): Promise\<ScalarSignal>**

* Deprecates `floatParameter(paramName: string): ScalarValue`

#### Added `getFloatParameterOrFallback(paramName: string, fallback: ScalarSignal): ScalarSignal` <a href="#added-getfloatparameterorfallback-paramname--string--fallback--scalarsignal---scalarsignal" id="added-getfloatparameterorfallback-paramname--string--fallback--scalarsignal---scalarsignal"></a>

**Added getTexture(paramName: string): Promise\<TextureBase>**

**Added setBoolParameter(paramName: string, source: BoolSignal): Promise\<void>**

* Deprecates `setBoolParameter(paramName: string, source: BoolSignal): void`

**Added setFloatParameter(paramName: string, source: ScalarSignal): Promise\<void>**

* Deprecates `setFloatParameter(paramName: string, source: ScalarSignal): void`

**Added setTexture(paramName: string, texture: TextureBase): Promise\<void>**

* Deprecates `setTexture(paramName: string, texture: TextureBase): void`

## `DefaultMaterial`

**Added getEmissive(): Promise\<TextureBase>**

* Deprecates `(get) emissive: TextureBase`

**Added getMultiply(): Promise\<TextureBase>**

* Deprecates `(get) multiply: TextureBase`

**Added getReflective(): Promise\<TextureBase>**

* Deprecates `(get) reflective: TextureBase`

## `DiagnosticsModule`

**Added typeSystem.getTypeDescriptions(): Promise\<Object>**

* Deprecates `getTypeDescriptions(): Object`

**Added typeSystem.getModuleNames(): Promise\<Array\<string>>**

* Deprecates `getModuleNames(): Array<string>`

## `Face`

**Deprecated and marked for removal deformationCoefficientAt(index: number): ScalarSignal**

**Deprecated and marked for removal landmark2D(index: number): PointSignal**

#### `FaceMesh` <a href="#facemesh" id="facemesh"></a>

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

## `FontsModule`

**Deprecated get(fontName: string): FontId**

* Use `findUsingPattern(namePattern: string, config: {limit: number}): Promise<Array<FontId>>` family of methods instead

## `InstructionModule`

**Added (get) automaticHintsEnabled: BoolSignal**

* Deprecates `(get) automaticInstructionsEnabled: boolean`

**Added (set) automaticHintsEnabled: BoolSignal**

* Deprecates `(set) automaticInstructionsEnabled: boolean`

## `LocaleModule`

**Deprecated (get) fromDevice: string**

* Use `(get) locale: StringSignal` instead

## `MaterialBase`

**Added getDiffuse(): Promise\<TextureBase>**

* Deprecates `(get) diffuse: TextureBase`

## `MaterialsModule`

**Deprecated get(materialName: string): MaterialBase**

* Use `findUsingPattern(namePattern: string, config: {limit: number}): Promise<Array<MaterialBase>>` family of methods instead

## `Mesh`

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

**Deprecated (get) blendShapes: BlendShapesMesh**

* Use `getBlendShapes(): Promise<Array<BlendShape>>` instead

**Deprecated (get) materialIdentifier: String**

* Use `getMaterial(): Promise<MaterialBase>` instead

## `MetallicRoughnessPbrMaterial`

**Added getBaseColor(): Promise\<TextureBase>**

* Deprecates `(get) baseColor: TextureBase`

**Added getEmissive(): Promise\<TextureBase>**

* Deprecates `(get) emissive: TextureBase`

**Added getMetallicRoughness(): Promise\<TextureBase>**

* Deprecates `(get) metallicRoughness: TextureBase`

## `ParticleSystem`

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

**Added getTypes(): Promise\<Array\<ParticleTypeDescription>>**

* Deprecates `(get) types: Array<ParticleTypeDescription>`

**Added (get) innerRadius: ScalarSignal**

* Deprecates `(get) innerRadius: ScalarValue`

**Added (get) outerRadius: ScalarSignal**

* Deprecates `(get) outerRadius: ScalarValue`

#### Deprecated `ParticleTypeDescriptions` <a href="#deprecated-particletypedescriptions" id="deprecated-particletypedescriptions"></a>

**Note: duplicated functionality of Array\<ParticleTypeDescription>**

## `PatchesModule`

**Added inputs.setBoolean(name: String, signal: BoolSignal): Promise\<void>**

* Deprecates `nsetBooleanValue(name: String, signal: BoolSignal): void`

**Added inputs.setColor(name: String, signal: ColorSignal): Promise\<void>**

* Deprecates `setColorValue(name: String, signal: ColorSignal): void`

**Added inputs.setPoint(name: String, signal: PointSignal): Promise\<void>**

* Deprecates `setPointValue(name: String, signal: PointSignal): void`

**Added inputs.setPoint2D(name: String, signal: PixelPointSignal): Promise\<void>**

* Deprecates `setPoint2DValue(name: String, signal: PixelPointSignal): void`

**Added inputs.setPulse(name: String, signal: EventSource): Promise\<void>**

* Deprecates `setPulseValue(name: String, signal: EventSource): void`

**Added inputs.setScalar(name: String, signal: ScalarSignal): Promise\<void>**

* Deprecates `setScalarValue(name: String, signal: ScalarSignal): void`

**Added inputs.setString(name: String, signal: StringSignal): Promise\<void>**

* Deprecates `setStringValue(name: String, signal: StringSignal): void`

**Added inputs.setVector(name: String, signal: VectorSignal): Promise\<void>**

* Deprecates `setVectorValue(name: String, signal: VectorSignal): void`

**Added outputs.getBoolean(name: String): Promise\<BoolSignal>**

* Deprecates `getBooleanValue(name: String): BoolSignal`

**Added outputs.getBooleanOrFallback(name: String, fallback: BoolSignal): BoolSignal**

**Added outputs.getColor(name: String): Promise\<ColorSignal>**

* Deprecates `getColorValue(name: String): ColorSignal`

**Added outputs.getColorOrFallback(name: String, fallback: ColorSignal): ColorSignal**

**Added outputs.getPoint(name: String): Promise\<PointSignal>**

* Deprecates `getPointValue(name: String): PointSignal`

**Added outputs.getPointOrFallback(name: String, fallback: PointSignal): PointSignal**

**Added outputs.getPoint2D(name: String): Promise\<PixelPointSignal>**

* Deprecates `getPoint2DValue(name: String): PixelPointSignal`

**Added outputs.getPoint2DOrFallback(name: String, fallback: PixelPointSignal): PixelPointSignal**

**Added outputs.getPulse(name: String): Promise\<EventSource>**

* Deprecates `getPulseValue(name: String): EventSource`

**Added outputs.getScalar(name: String): Promise\<ScalarSignal>**

* Deprecates `getScalarValue(name: String): ScalarSignal`

**Added outputs.getScalarOrFallback(name: String, fallback: ScalarSignal): ScalarSignal**

**Added outputs.getString(name: String): Promise\<StringSignal>**

* Deprecates `getStringValue(name: String): StringSignal`

**Added outputs.getStringOrFallback(name: String, fallback: StringSignal): StringSignal**

**Added outputs.getVector(name: String): Promise\<VectorSignal>**

* Deprecates `getVectorValue(name: String): VectorSignal`

**Added outputs.getVectorOrFallback(name: String, fallback: VectorSignal): VectorSignal**

## `PlanarImage`

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

#### `PlanarText` <a href="#planartext" id="planartext"></a>

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

## `Plane`

**Added getMaterial(): Promise\<MaterialBase>**

* Deprecates `(get) material: MaterialBase`

#### `SceneObjectBase` <a href="#sceneobjectbase" id="sceneobjectbase"></a>

**Deprecated (get) materialIdentifier: string**

* Use `getMaterial(): Promise<MaterialBase>` on `SceneObjectBase` which support materials

**Deprecated find(name: string): SceneObjectBase**

* Use `findByPath(pathQuery: string, config: {limit: number}): Promise<Array<SceneObjectBase>>` family of methods instead

**Deprecated child(name: string): SceneObjectBase**

* Use `findByPath(pathQuery: string, config: {limit: number}): Promise<Array<SceneObjectBase>>` family of methods instead

## `Scene`

**Deprecated find(name: string): SceneObjectBase**

* Use `findByPath(pathQuery: string, config: {limit: number}): Promise<Array<SceneObjectBase>>` family of methods instead

**Deprecated child(name: string): SceneObjectBase**

* Use `findByPath(pathQuery: string, config: {limit: number}): Promise<Array<SceneObjectBase>>` family of methods instead

## `SvgImage`

**Added getSvg(): Promise\<Svg>**

## `SvgsModule`

**Deprecated get(svgName: string): Svg**

* Use `findUsingPattern(namePattern: string, config: {limit: number}): Promise<Array<Svg>>` family of methods instead

## `TextAlignmentWrapper`

**Added (get) horizontal: Signal\<TextAlignment>**

**Added (set) horizontal: Signal\<TextAlignment>**

* Deprecates `(set) horizontal: TextAlignment`

**Added (get) vertical: Signal\<VerticalTextAlignment>**

**Added (set) vertical: Signal\<VerticalTextAlignment>**

* Deprecates `(set) vertical: VerticalTextAlignment`

## `TextExtrusion`

**Added getFrontMaterial(): Promise\<MaterialBase>**

**Added getFont(): Promise\<FontId>**

**Added getBackMaterial(): Promise\<MaterialBase>**

**Added getSideMaterial(): Promise\<MaterialBase>**

**Deprecated (set) faceMaterial: MaterialBase**

* Use `(set) frontMaterial: MaterialBase` and `(set) backMaterial: MaterialBase` instead

## `TexturesModule`

**Deprecated get(textureName: string): TextureBase**

* Use `findUsingPattern(namePattern: string, config: {limit: number}): Promise<Array<TextureBase>>` family of methods instead

  **Asynchronous API Changes (v85+)**

  With v85 of Spark AR Studio the current JavaScript API will be deprecated in favor of asynchronous APIs.

  This means some APIs will be deprecated and will need to be replaced in your projects. When creating new projects, new APIs should be used instead.

  **What happens to existing projects**

  APIs will be deprecated after 6 months in existing live effects, and 3 months in resubmitted projects.

  If you’re using a deprecated API, you’ll:

  1. See a message in Spark AR Studio when you open the project.
  2. Get an email and notification to let you know how to update it.

  \*\*\*\*
