# 0 to 100 instant, no intermediate progress

**URL:** <https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605>\
**Category:** Uppy\
**Created:** [May 23, 2025, 6:55am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605 "2025-05-23T06:55:17Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![KresimirCosicQ](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/kresimircosicq/32/1371_2.png) [@KresimirCosicQ](https://community.transloadit.com/u/KresimirCosicQ)\
**Post date:** [May 23, 2025, 6:55am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/1 "2025-05-23T06:55:17Z")

</div>

Hi, I am wondering what might be the cause of this - when I am developing locally (Angular), the upload all works correctly, but on the deployed Azure instance the progress of the file is not shown; the file is being uploaded, but I can’t see the progress moving until it completes, then it just immediately goes from 0% to 100%.

Any ideas what are the necessary environment potential causes? TY!

---

<div class="post-metadata">

**Author:** ![Merlijn](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/merlijn/32/1382_2.png) [@Merlijn](https://community.transloadit.com/u/Merlijn)\
**Post date:** [May 23, 2025, 10:15am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/2 "2025-05-23T10:15:24Z")

</div>

There is not enough information to help. Without integration code and what you do on the backend it’s hard to know

---

<div class="post-metadata">

**Author:** ![KresimirCosicQ](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/kresimircosicq/32/1371_2.png) [@KresimirCosicQ](https://community.transloadit.com/u/KresimirCosicQ)\
**Post date:** [May 23, 2025, 11:08am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/3 "2025-05-23T11:08:17Z")

</div>

Do you require specifics or is it OK if I provide some general overview what’s being handled for the TUS protocol? I don’t think the guys did anything special, but I can ask for more specific information if you have some topic you’d like to hear about - the actual implementation will probably be forbidden by an agreement so that’s pretty munch out of the question.

---

<div class="post-metadata">

**Author:** ![Merlijn](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/merlijn/32/1382_2.png) [@Merlijn](https://community.transloadit.com/u/Merlijn)\
**Post date:** [May 23, 2025, 11:13am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/4 "2025-05-23T11:13:16Z")

</div>

Without a reproducible example or exact integration code I don’t see a way to help.

Here are some starters to kickstart a reproducible example:

- [Uppy Drag & Drop](https://stackblitz.com/edit/vitejs-vite-yzbujq)
- [Uppy Dashboard](https://stackblitz.com/edit/vitejs-vite-zaqyaf)
- [Uppy React](https://stackblitz.com/edit/vitejs-vite-vehvbq)
- [Uppy Svelte](https://stackblitz.com/edit/vitejs-vite-kdxwkz)
- [Uppy Vue](https://stackblitz.com/edit/vitejs-vite-ubjwys)

---

<div class="post-metadata">

**Author:** ![KresimirCosicQ](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/kresimircosicq/32/1371_2.png) [@KresimirCosicQ](https://community.transloadit.com/u/KresimirCosicQ)\
**Post date:** [May 23, 2025, 11:27am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/5 "2025-05-23T11:27:30Z")

</div>

Here’s an example .NET code:

```auto
public static Task<DefaultTusConfiguration> TusConfigurationFactory(HttpContext httpContext)
{
    var storageOptions = httpContext.RequestServices.GetRequiredService<IOptions<TusOptions>>().Value;

    var config = new DefaultTusConfiguration
    {
        Store = new TusDiskStore(storageOptions.GetCurrentDirectoryStoragePath,
            deletePartialFilesOnConcat: false,
            TusDiskBufferSize.Default,
            new GuidFileIdProvider()),
        UsePipelinesIfAvailable = true,
        Expiration = storageOptions switch
        {
            { EnableExpiration: true, AbsoluteExpiration: true } => new AbsoluteExpiration(
                TimeSpan.FromSeconds(storageOptions.ExpirationInSeconds)),
            { EnableExpiration: true, AbsoluteExpiration: false } => new SlidingExpiration(
                TimeSpan.FromSeconds(storageOptions.ExpirationInSeconds)),
            _ => null
        },
        Events = new Events
        {
            OnBeforeCreateAsync = HandleOnBeforeCreateAsync,
            OnFileCompleteAsync = context => HandleOnFileCompleteAsync(context, httpContext),
        }
    };

    return Task.FromResult(config);
}

```

My BE colleague says this as well; `HandleOnBeforeCreateAsync` only does metadata validation, while on `HandleOnFileCompleteAsync` they call other services, repositories and the actual file storing on the storage.

---

<div class="post-metadata">

**Author:** ![Merlijn](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/merlijn/32/1382_2.png) [@Merlijn](https://community.transloadit.com/u/Merlijn)\
**Post date:** [May 26, 2025, 7:38am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/6 "2025-05-26T07:38:31Z")

</div>

To clarify, unless the problem is on the client-side Uppy integration code, you’re probably best off posting a issue in the tusdotnet repo.

This is the Uppy forum. We can help with Uppy related code

---

<div class="post-metadata">

**Author:** ![KresimirCosicQ](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/kresimircosicq/32/1371_2.png) [@KresimirCosicQ](https://community.transloadit.com/u/KresimirCosicQ)\
**Post date:** [May 26, 2025, 8:33am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/7 "2025-05-26T08:33:58Z")

</div>

Most in general this is it, I have some signal based code (Angular) that I set the state to when the event fires.

```auto
 /**
   * Registers Uppy instance
   */
  registerUppy({ allowedFileTypes, meta }: UppyOptions): void {
    this.uppy = new Uppy<Meta>({
      autoProceed: true,
      restrictions: {
        allowedFileTypes,
      },
      meta,
    });

    this.$uploadState.update(currentState => ({
      ...currentState,
      progress: 0,
      files: {},
    }));

    if (this.uppy) {
      this.configureUppy(this.uppy);
    }
  }

  /**
   * Configures Uppy instance
   */
  configureUppy(uppy: Uppy): void {
    const msalAccount = this.authenticationService.getActiveMSALAccount();
    const windowsAccount = this.authenticationService.getActiveWindowsAccount();

    if (msalAccount) {
      let accessToken = '';

      this.msalService
        .acquireTokenSilent({
          scopes: environment.apiConfig.scopes,
          account: msalAccount,
        })
        .pipe(takeUntilDestroyed(this.destroyRef))
        .subscribe(accountInfo => {
          accessToken = accountInfo.accessToken;

          uppy.use(Tus, {
            endpoint: environment.apiConfig.uri.split('/api')[0] + '/upload',
            headers: {
              Authorization: `Bearer ${accessToken}`,
            },
          });
        });
    } else if (windowsAccount) {
      uppy.use(Tus, {
        endpoint: environment.apiConfig.uri.split('/api')[0] + '/upload',
        withCredentials: true,
      });
    }

    /**
     * Upon a file restriction failure
     */
    uppy.on('restriction-failed', (file, error) => {
      // TODO: Remove notification if unnecessary
      if (file) {
        this.toastsService.showErrorToast(
          `Adding file ${file.name} failed. Error: ${error.message}`,
        );
      }
    });

```

There isn’t much else configuration wise. This restriction failed is just an example of an event handling.

---

<div class="post-metadata">

**Author:** ![Merlijn](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/merlijn/32/1382_2.png) [@Merlijn](https://community.transloadit.com/u/Merlijn)\
**Post date:** [May 26, 2025, 9:21am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/8 "2025-05-26T09:21:16Z")

</div>

I’m not an Angular expert and so I don’t know the context this code is run in (also because a lot of code is missing) and if your signals based approach could be part of the problem.

I recommend making the smallest possible reproducible example. We haven’t seen this issue anywhere else. You can see on [https://uppy.io/examples/](https://uppy.io/examples/), which also uses tus, that everything works as expected.

---

<div class="post-metadata">

**Author:** ![KresimirCosicQ](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/kresimircosicq/32/1371_2.png) [@KresimirCosicQ](https://community.transloadit.com/u/KresimirCosicQ)\
**Post date:** [May 26, 2025, 9:29am UTC](https://community.transloadit.com/t/0-to-100-instant-no-intermediate-progress/17605/9 "2025-05-26T09:29:03Z")

</div>

OK thank you, I don’t think this is code related to be fair, it’s probably related to the environment. I figured maybe someone from the team might have a hint that the environment must have some flags set, but no problem if this doesn’t sound familiar. Thank you for the inputs! Cheers!
