[New plugin] Make your Obsidian start up super fast!

Lazy Plugin Loader - This plugin will significantly reduce the time it takes for your vault to open.

It does this by adding a configurable delay to loading your plugins. This lets Obsidian focus solely on opening your vault files, and stops complex plugins from slowing things down. Depending on the size of your vault, you can get your startup down to less than 1 second.

:point_right: Get it from the plugin store.

Some reviews from the beta-testing Reddit thread:

Holy shit the difference is insane. This should be built-in. Incredible. THANK YOU!

Impact on mobile is even more greater than desktop (just purely from my observation).

I just open Obsidian on my iPhone/iPad, and it’s ready to go, without having to wait ‘+seconds’ to start typing. It’s great for quick notes.

damn this reduced my plugin loading from 1sec to 50ms

Excellent plugin. Thank you again for it!

Omg, this plugin brought my load times down by like six times 1800ms to 300 on desktop 6500 to 1000 on mobile. That’s amazing!

Damn it’s good.

27 Likes

In my own LazyLoaderLand:
Obsidian start, coffee start, tobacco start, all indexing, etc. finish, then work start.

In other words, usually good for mobile users with many plugins activated.

But thanks for all the fish, mate.

So glad to see this has made it into the community plugins store! I’ve been following along since the first releases on Reddit and updating via BRAT, great to see it’s now a standalone official plugin!

Thanks very much for your hard work on this, it’s a great little addition.

2 Likes

Good job! The UX has been drastically improved.

2 Likes

Nice work!

1 Like

Thanks @AlanG, this is an awesome plugin!

The first note (homepage) that I load contains several lists of my notes, which are created by the dataview plugin. These lists/overviews always took a second or so to be fully loaded. Now they show up instantly. This feels so much better.

1 Like

I’m curious: if the plugin is loaded by core Obsidian before you are let into the app, it is worse?

Are you saying that using this plugin you have a slow enough startup that you can make a coffee during that time? That seems odd.

When you say “indexing”, is that Obsidian, or something like Omnisearch?

We seem to have a misunderstanding here.
Let us sort it out.
Thanked you for the plugin with a like.
Assumed not needing it on desktop where usually people only need to fire up the app once and have plenty of time.
Conceded being useful on mobile, but…even there if you have 10-15 plugins to load (done by core Obsidian), it is fast (for me), but if you have a biggish vault, more time is spent on loading the vault and cache anyway (admittedly, the workspace loading time has been optimized).

Finally, expressed my curiosity as to whether it was the plugin being responsible making the loading of a Dataview-laden note better as it is a known thing that only upon being let in the app will DV start indexing anyway.

And finally, am I correct in assuming that this latest iteration of the lazy loaders (did not try it, sorry) is no different from the forerunners in that it loads plugins only after the app has loaded up, right?
So the loading time is slashed off at the beginning only, meaning the app lets you in a little earlier and you have control over how to prioritize enabling plugins you need.
So, if anything, by my reckoning, any Dataview rendering should ultimately be done more slowly than without employing the plugin…

Correct me if I’m wrong please so people interested can make an educated decision about the usage of this plugin.

Thank you.
By, the way, hi, Alan!

If you set Dataview to be Instant and every other plugin to be delayed by 1 second, your Dataview rendering would indeed be available faster than if you weren’t using the Lazy Loader plugin.

In my own vault of 5000 notes with ~30 plugins, using the above configuration reduces the time from Obisidian startup to Dataview fully rendered view from 2.22 seconds to 1.41 seconds.

This was a benchmark performed as an average of 20 test openings of the vault. The Dataview query outputs the time to a file to determine the end time of the benchmark:

```dataviewjs
const file = app.vault.getAbstractFileByPath('benchmark.md')
await this.app.vault.append(file, 'End time: ' + Date.now() + '\n')
```

Up to you whether it’s useful for your own workflow.

1 Like

Yes, that’s understandable, given we have no control over the prioritization done by Obsidian. Whether it is done A-Z (D for Dataview would be quite high then) or any other way…

Yes, Alan, actually this in itself will make the plugin worthy of installing for people – whose number can be many – who fall in on Dashboard files with Dataview queries in them.

This plugin will be a good complement for the start up time optimization job in the works (or on the horizon) by the dev team.

Kia ora!

Love this. Works like a charm. You always post / create good stuff Alan.
I had given up on plugins on mobile because the delayed startup time bugs me too much, but thanks to your plug-in, no more difference with/without plugins! Thank you!
Btw I thought I was crazy but here and there it seemed that vault loading time also was 2-300ms shorter with lazy loader enabled?!

1 Like

Hi! I used to use it under BRAT, and I found it can be installed through plugins store now. I have tried, but failed to install it no matter how I have tried. Have you ever met someone who has the similar issue?

Can you please try again with v1.0.15 - there was an issue with the previous release, sorry about that.

That is a superb plugin - i was using it with BRAT and i’m glad it’s now in the plugin store!

Only minor issue i have - it doesn’t seem to respect when plugins are disabled in Obsidian and sets them to short delay or whatever. Would be great if it would read the plugin state from Obsidian (activated/disabled) and uses that for the initial configuration of delays (i.e. deactivated plugins are set to Disable plugin and activated plugins to whatever the default configuration is.)

It certainly already does that, and you can see that in the code here:

If you have a defaultStartupType configured in the settings then it will use that if you haven’t specifically disabled the specific plugin in the Lazy Loader settings.

For your reference, there is no “disabled state” in Obsidian, there is only an enabled state. So if you manually disable a plugin from outside the Lazy settings page, it’s not able to tell that you’ve done that. The absence of enabled does not mean disabled, it just means “not running right now”.

If I’ve misunderstood you please let me know.

So if you manually disable a plugin from outside the Lazy settings page, it’s not able to tell that you’ve done that.

Thanks for clarification, i realized my issue was just that.

  • Have Lazy Loader installed and set everything up
  • “Disable” arbitrary plugin from Obsidian settings > Community plugins
  • Reload Obsidian
  • Plugin is active again because i didn’t also deactivate it in the Lazy Plugin Loader settings

That behaviour seems buggy at first but i see now why it happens. I guess you just have to remember to deactivate the plugin in the Lazy Loader settings and it works just fine.

2 Likes

This should be a standard plug-in. Very, very good.

2 Likes

Just curious - with the plugin loading overhaul in 1.7.2/3, is there still a big performance gain to had by using this Plugin? It seems to me the creation of this plugin has spurred some action from the Obsidian Devs to accelerate plugin loading natively!

Just curious on your thoughts. Thanks again for this plugin!

Thank you for making this plugin, Alan! It’s really helpful, and I appreciate that people like you make this community so helpful and the Obsidian experience so smooth :slight_smile:

3 Likes