Ziggy: A Package for Named Laravel Routes in JavaScript

Ziggy: A Package for Named Laravel Routes in JavaScript

Ziggy is a package that exposes named Laravel routes in JavaScript. When you update named routes in Laravel, the front end will automatically stay in sync.

What I like about this package is that all you have to do (after installing the package) is use the provided @routes blade directive in your layout:

<!DOCTYPE html>
<html lang="en">
  <!-- ... -->
    <script src="{{ mix('js/app.js') }}"></script>

The @routes directive defines named routes in a JavaScript variable and provides you with a route() JavaScript helper similar to Laravel’s PHP route helper:

var routeUrl = route('posts.index');
var routeUrl = route('posts.show', {post: 1337});

// Returns results from /posts
return axios.get(route('posts.index'))
    .then((response) => {
        return response.data;

Updating named Laravel routes on the backend will automatically keep your front end requests in sync.

Ziggy was written by Daniel Coulbourne from Tighten Co, a Laravel partner. Daniel Coulbourne explains the background story about why he wrote Ziggy:

My JavaScript is full of axios calls, which are made to hard-coded API endpoint URLs in my Laravel apps. This can be a real pain when an endpoint route needs to be moved to a group with a URL prefix, when a parameter needs to be added, or when any other URL-breaking change needs to be made.

This is why, in Laravel, we have named routes, and why we don’t hard-code URLs in our Blade templates. By abstracting away the need for our consuming code to know the exact (down-to-the-letter) URL for a route, we are able to write more change-resilient code—and avoid a lot of “find and replace.”

We wanted the same kind of protection and convenience in JavaScript that we have inside our Laravel apps. And that’s why we built Ziggy.

Read Daniel’s full post introducing Ziggy; he also mentions other packages similar to Ziggy and some inspirational ideas around the concept. You can find Ziggy’s source code on GitHub.

Filed in: Laravel Packages / Routing


Join 31,000+ others and never miss out on new tips, tutorials, and more.

Laravel News Partners

Laravel Jobs

Software Developer
Remote (US & Canada)
😎 Laravel Developer
Jogg, Inc
Junior, Mid, and Senior Software Engineers. Laravel / Vue. Saint Petersburg, FL
Saint Petersburg, FL and Remote
Senior PHP Developer (Laravel)
The Interaction Design Foundation
Fullstack Laravel Engineer (Munich/Remote) 💻
Munich, Germany or Remote