GitHub today announced plans to purchase JavaScript package manager npm and noted that they plan to keep the resource free and available. Additionally, GitHub expressed intent to invest in npm's registry infrastructure, improve the developer experience, and help foster community growth.
Gutenberg 7.7 Ships Refreshed UI and First Iteration of Block Patterns
Last week, version 7.7 of the Gutenberg plugin shipped to users. In what is one of the more visually-striking updates in a while, the design team presented a refreshed UI. Users will also get their first chance to test the upcoming block patterns feature.
Some users may get a surprise. Gutenberg 7.7 is the first version of the plugin to ship the editor in fullscreen mode out of the box. This change will land in WordPress 5.4. Now is a good opportunity to see how it works before upgrading later this month.
Block developers can rejoice for the ability to create their own block wrappers. This is part of a change for creating a faster DOM. Inner blocks also produce a lighter DOM output, so the element tree in the editor now matches the front end. These changes make it easier for theme designers to style blocks without a convoluted mess of nested <div>
elements.
Version 7.7 includes over two dozen bug fixes. It also includes a fix for the “View Posts” back button at the top of the editor while in fullscreen mode. Instead of an arrow button, which was confusing for users who thought it might return them to the regular editing mode, the team replaced it with the WordPress “W” icon.
A Fresh and Clean Editor UI
![Screenshot of the UI of Gutenberg version 7.7.](https://wptavern.com/wp-content/uploads/2020/03/block-editor-ui-refresh-001.jpg)
It took a few days to grow on me after more than a year getting accustomed to the old UI. The basics are the same. The layout has not changed. However, the buttons and related elements have received a nice refresh.
The editor feels more professional. The block toolbar is simpler and cleaner. The Gutenberg team redesigned the icons. The color contrast makes everything crisper.
The block inserter now uses the full height of the editor. This is a large improvement over earlier iterations. It means less scrolling to find the right block, which has been one of my pet-peeves (I have fewer and fewer of these with each release).
This is a first pass over the new interface, and there is still more work for the Gutenberg design team to tackle. Work on the sidebar, dropdowns, and other elements is currently in progress and should land in upcoming plugin updates.
Overall, the UI is much more polished. The average WordPress user will not experience it until WordPress 5.5, but it is well worth installing and activating the Gutenberg plugin to give it a spin.
Early Work Toward Block Patterns
![Screenshot of using block patterns in Gutenberg.](https://wptavern.com/wp-content/uploads/2020/03/block-patterns.jpg)
Perhaps one of the most-anticipated Gutenberg features is the inclusion of a pattern library. A pattern is a collection of blocks in a predefined arrangement. For example, a common pattern is a large hero image with text and a couple of buttons laid over the top. Another common pattern is a set of three or four boxes aligned next to each other, each with a title, image, and text.
The more complex a particular layout, the harder it is to create from the editor without the know-how. That’s where patterns come in. They are a sort of “template” that allows end-users to quickly build out sections of content without the requirement of inserting the individual blocks.
Patterns will be a game-changer.
Some projects have already made solid attempts at something akin to patterns. ShareABlock’s community-based shared blocks and Gutenberg Hub’s copy-and-paste templates are good options for people who know about those projects. Users are even turning the reusable block system into faux patterns. However, few solutions will be able to compete with having a true Block Patterns API and exposing those patterns in the UI to end-users.
The new patterns feature in Gutenberg 7.7 is meant as a minimum viable product and not representative of what the feature will look like by the time it ships in core WordPress. At the moment, the UI is a new sidebar with a small sampling of patterns to choose from. However, patterns will likely be a part of the block inserter or exposed differently down the road. The goal is to ship something that works and iterate.
Currently, the team has bundled only four patterns:
- Two Columns of Text
- Two Buttons
- Cover
- Two Images Side by Side
While these particular patterns are not exciting, they are simple examples to begin testing the feature. The big question: what patterns should Gutenberg include by default? There is currently an open GitHub ticket to discuss and implement the possibilities. There are several proposals for commonly-seen patterns around the web. The ideal people to be involved with this discussion would be theme authors because they have been working closely and directly with users for years. With enough solid patterns in core, it would mean less code work in themes. Instead of building dozens of patterns to achieve modern layouts, theme authors could focus more on the design aspect of theme development.
In testing, the feature worked without issue. After selecting the patterns sidebar, you simply select the pattern you want, which is inserted directly in the content area of the editor. From that point, you can edit like any other block.
Patterns will certainly make the block editor far more competitive with page building plugins. More than anything, they will allow users to more quickly build layouts that often make for an overly complex and frustrating experience.
Right now, the pattern library is not included in the most recent roadmap update for 2020. However, I could see it making an official appearance in WordPress this year if work continues at its current pace. That is merely speculation, and perhaps a little hope, but this is one of the most exciting Gutenberg features in the works.
VRTCAL Announces New SDKs for Mobile Platforms
VRTCAL, a provider of a mobile SSP for publishers, app developers and brands, today announced the release of its SDKs for Android and iOS mobile devices, Self-Serve features, and Display Mediation services, putting the power into the hands of developers to improve efficiency, decrease costs, nimbly manage demand partners and mediation and ultimately increase revenues.
The Best GridBuilderWP Review: Flexible Grids & Filters
When you sit down to watch a game of football, you can easily spot the superstars from a mile away. Their stylish and polished game sets them apart, and often change the outcome of the match. Fans and managers love them because when they play, they are at their absolute best. The same applies to […]
The post The Best GridBuilderWP Review: Flexible Grids & Filters appeared first on WPExplorer.
Stripe's Comprehensive API Reference Earns Editor's Choice Award for DX
If your organization provides APIs, whether internal or external, they need to be treated as products. In that spirit, the success of those APIs depends on how well your API developer portal can showcase and explain your APIs. Your API developer portal is where all the various stakeholders will go to learn everything possible about your API(s) and even your company. What makes for a world-class API developer portal?
Google Beta Releases Cloud AI Platform Pipelines
Google has beta released its new Cloud AI Platform Pipelines. Cloud AI Platform Pipelines allows developers to deploy robust, repeatable ML pipelines that include monitoring, auditing, version tracking, and reproducibility. Google has specifically designed the offering to be enterprise-ready, simple to install, and secure.
Collective #597
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_CCEss.jpg)
Creative Coding Essentials
The Alpha-version of Tim Rodenbröker’s course “Creative Coding Essentials”, teaching you the very basics of Creative Coding.
![Mailchimp](https://tympanus.net/codrops/wp-content/banners/mailchimp.png)
Grow with the
All-in-One Marketing Platform
Your app is up and running! Now what? Seamlessly connect it to your marketing data. That’s what.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_accsvg.jpg)
Accessible SVGs: Inclusiveness Beyond Patterns
Carie Fisher explores the question “if true inclusiveness lies beyond patterns — what other factors should we consider when designing and developing accessible SVGs?”
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_CSSPodcast.jpg)
The CSS Podcast
Una Kravets and Adam Argyle break down complex aspects of CSS into digestible episodes covering everything from accessibility to z-index.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_boxshadow.jpg)
How to create an accordion hover effect with box-shadows
A step-by-step tutorial on how to create a rainbow accordion animation in CSS, using only box-shadows. By Sarah L. Fossheim.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_Sketchdarkmode.jpg)
Sketch Dark Mode Plugin
Generate a dark mode version of any Sketch document, the right way.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_mono.jpg)
MonoLisa
A beautiful monospace font family designed for software developers.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_vunits.jpg)
CSS Viewport Units
A thorough and practical guide to CSS viewport units by Ahmad Shadeed.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_redwood.jpg)
RedwoodJS
An opinionated framework that combines React, GraphQL, Prisma2, SQL, and lots more out of the box.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_URL.jpg)
The History of the URL
Zack Bloom from Cloudflare dives into the history of the URL.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_accessibility.jpg)
16 Things to Improve Your Website Accessibility (Checklist)
In this article Bruce Lawson explains how to improve website accessibility.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_pingpong.jpg)
Ping Pong Mini-Game
A great mini-game made with react-three-fiber ofc, use-cannon and zustand. By Paul Henschel.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_photostream.jpg)
Photo Stream
Self-hosted, super simple photo stream. By Tim Van Damme.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_DL.jpg)
Deep Learning Algorithms – The Complete Guide
Learn about all the essential Deep Learning algorithms including models used in Computer Vision and Natural Language Processing.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_aliasing.jpg)
Aliasing in computer graphics
A fascinating read on the manifestations of aliasing in 3D graphics including an attempt to theoretically unify them.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_mondrian.jpg)
CSS Mondrian
Piet Mondrian style art using CSS grid made by Adam Fuhrer.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_flexbox.jpg)
Flexbox and absolute positioning
A mini-post about Flexbox and absolute positioning, and a minor bug in the Firefox DevTools.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_board.jpg)
Boardist
Create your personal workspace to keep everything organized with boards.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_doom.jpg)
Virtual Doom
In case you didn’t know about it: Virtual DOOM is a first-person 3D demo that uses the DOM as its render engine, no WebGL, canvas or SVG.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_unscreen.jpg)
Unscreen
Remove the background of any video with this online tool.
![](https://codropspz-tympanus.netdna-ssl.com/codrops/wp-content/uploads/2020/03/C597_countdown.jpg)
Flip Counter Plugin
An advanced flip counter plugin that is easy to setup.
Collective #597 was written by Pedro Botelho and published on Codrops.
Post Corona, Code for America Looks to Join Devs, Civic Techies and Gov Officials To Transform GovOps
Best Employee Scheduling Software
Managing your staff’s hours and shifts are both crucial to the success of your organization. The costs associated with scheduling issues can add up quickly.
Without the right tools, you could have too many workers on the clock at once or worse—not enough to meet demands.
Employee scheduling software makes everyone’s lives easier. It goes beyond just managing the daily and weekly schedules. There are options for your employees to request time off or shift changes that can be approved or denied in real-time.
Some software even has chat and employee messaging built-in.
Whether you have a startup, small business, or enterprise-level chain, the right scheduling software can streamline your HR efficiencies. I created this guide to help you find the best one for your organization.
The 9 Best Employee Scheduling Software of 2020
What’s the best employee scheduling software? After extensive research, I’ve narrowed down the list to nine options for you to consider.
- Homebase — Best overall employee scheduling software.
- Humanity — Best for shift trading and filling openings in real-time.
- TSheets — Best for time-tracking and accounting integration.
- 7shifts — Best employee scheduling software for restaurants.
- Paycor Scheduling — Customized solutions for employee scheduling software.
- When I Work — Best free employee scheduling software.
- Deputy — Best for scheduling employees working at multiple locations.
- Shiftboard — Custom solution for managing hourly workers.
- CakeHR — Full-service HR software with employee scheduling.
Check out the in-depth reviews for each of these below. I’ll cover the features, benefits, costs, and any other considerations as we continue.
Employee Scheduling Software Reviews
Homebase
More than 100,000 businesses trust Homebase for employee scheduling needs. For those of you with one location, you can even use Homebase for free.
The scheduling features in this software are simple and easy for anyone to use. You can build an employee schedule in just a few clicks with the drag-and-drop dashboard. The software will even help you track labor costs.
Set up alerts for when workers miss a clock-in or are close to hitting overtime. Your staff will get updates as well when schedules are released. They’ll also be alerted with reminders for their shifts.
In addition to the scheduling features, Homebase has a time clock feature and timesheets for payroll. Let your staff clock-in from any device, including your POS (point of sale) system.
Here’s a brief overview of the plans and pricing for Homebase employee scheduling:
Basic — Free
- Unlimited employees
- Online scheduling
- Time clocks, breaks, and overtime
- Prepare timesheets for payroll
- Employee availability preferences and time-off requests
- Team communication messenger
Essentials — $16 per month per location
- Advanced scheduling
- Auto scheduling
- Late employee alerts
- Availability approvals
- Personal notes with shifts
- Automated reminders to employees
- Employee performance tracking
Plus — $40 per month per location
- Sales forecasts and labor targets
- Overtime alerts
- GPS and photos
- Prevent early clock-ins
- Custom break and overtime settings
- Time-off restrictions
- PTO policies
All of the monthly rates are under the assumption that you sign up for an annual contract. Homebase does offer month-to-month plans for 20% more.
The Homebase mobile app is another reason why this scheduling software ranks so high on our list. It’s free to use for you and your staff. So everyone can view and manage their schedules on the go.
Humanity
Humanity is one of the most popular employee scheduling platforms on the market today. It’s used by big companies like Microsoft, Kaiser Permanente, Nike, Yelp, Safeway, and Squarespace.
I’d recommend Humanity to businesses operating in industries with tight margins. This software gives you the capability to optimize your schedules in the most cost-effective way.
Use Humanity to ensure local, state, and Federal compliance in terms of labor laws for things like break frequency, hours worked, and time between shifts.
Humanity has an auto-scheduling feature that will optimize shifts by applying variables related to seniority and employee preferences.
One standout feature of Humanity is the ability for employees to trade shifts. Assuming the trade falls within your predefined rules, these requests can be automatically approved with limited supervisor involvement.
The Humanity mobile app makes it easy for you and your staff to manage shift needs in real-time. Managers can post open shifts for pickup and quickly find replacements for any absences.
Humanity integrates with top HCM software like Namely, BambooHR, ADP, and Workday.
Pricing for Humanity is very straightforward. There are two plans at the following annual rates:
- Starter — $3 per month per user ($80 minimum)
- Classic — $4 per month per user ($80 minimum)
You can also sign up for Humanity on a month-to-month basis. Those rates are $3.50 and $5 per user, respectively. But the short-term plans are subject to a $100 monthly minimum.
The Starter package comes with everything you need to manage employee scheduling. But for an extra $1 per month, the Classic plan comes with advanced features like:
- Auto scheduling
- Real-time labor and budgeting
- Compliance
- Reporting and analytics
- Time and attendance
- Geolocation clock-ins and clock-outs
- Secure messaging
Overall, Humanity has everything you could need or ask for in an employee scheduling tool.
TSheets
TSheets is run by QuickBooks, which ranks first on our list of the best small business accounting software. Just like QuickBooks, TSheets is a high-quality choice for employee scheduling from a reputable brand.
As the name employees, TSheets was made for employee time-tracking.
It’s a mobile timesheet where employees can clock-in and clock-out from anywhere. The app uses real-time GPS capabilities to hold your staff accountable for the hours they’re working. This is perfect for those of you who have a mobile workforce.
Employers only have access to GPS data when staff is on the clock, so it gives your workers the privacy and respect that they deserve.
In addition to the time-tracking features, TSheets also has exceptional tools for employee scheduling. It’s easy to create and assign shifts from your computer or smartphone with the drag-and-drop scheduler. You can also repeat schedules with one click.
TSheets allows you to schedule workers by the job as well. Create a new job by adding information for the day, time, and client. Then simply assign as many workers as you need to that job.
Employees will receive alerts for shift changes and job assignments. Everyone will have access to information from the intuitive TSheets mobile app.
Here’s a brief overview of the plans and pricing for TSheets:
Premium
- $8 per user per month
- $20 base fee per month
- Free mobile app with GPS
- Real-time reports
- Alerts and notifications
- Photo attachments
- Time clock with facial recognition
Elite
- $10 per month per user
- $40 base fee
- Project estimates vs. actuals reporting
- Activity feed and messaging
- Timesheet signatures
- Geofencing
Both of these plans are available free with a 14-day trial.
TSheets integrates with other platforms like QuickBooks, Expensify, Gusto, Xero, Sage, Square, and more. This will help simplify your accounting process as well.
7shifts
7shifts is an industry-specific solution. It’s an employee scheduling software designed for restaurants. More than 250,000 restaurants across the world use 7shifts.
With this software, you’ll be able to save time and reduce costs. Both of these are crucial to operating a restaurant at profitable margins.
Like most employee scheduling software we’ve seen, 7shifts has a drag-and-drop builder that makes creating schedules a breeze. The tool helps you factor in overtime, employee availability, and regional labor laws.
Your staff can access schedules via email or mobile app.
7shifts has built-in employee communication tools. There are group chats, direct messaging, announcements, and shift feedback features.
You’ll also have access to a weekly labor and budget tool, detailed reports, intuitive dashboard, and POS integration. All of this helps you manage your payroll system and bookkeeping as well.
7shifts is ideal for restaurants, both large and small. With multi-location support, you can manage employee scheduling at each place.
Let’s take a quick look at the plans and prices for 7shifts.
Appetizer — $19.99 per month per location ($215.88 billed annually)
- Unlimited scheduling
- Time clocking
- Notifications
- Time off requests and availability
- Free mobile app
Entree — $43.99 per month per location ($479.88 billed annually)
- Scheduling templates
- Labor budget tool
- Robust reporting
The Works — $76.99 per month per location ($839.88 billed annually)
- Local labor compliance
- Manager log book
- Optimal labor tool (to predict staffing needs)
- Shift feedback
Gourmet — $150 per month per location ($1,620 billed annually)
- Enterprise-grade operational performance view
- Auto scheduling
- Integrated task management
- Support and integration for POS
7shifts also offers a handful of optional add-ons:
- Location overview — $5 per month per location
- Task management — $12.99 per month per location
- Sales data import — $100 one-time fee
- Account setup — $150 one-time fee
Smaller restaurants can benefit from 7shifts’ free forever plan. You can have all of the basic scheduling features for one location and up to ten employees.
Paycor Scheduling
Formally Ximble, Paycor Scheduling is the perfect solution for optimizing the efficiency of your schedule. Managers can quickly go through the scheduling process while making optimal decisions for the business.
All of your staff will have clear visibility of their schedules in advance, so everyone stays well informed.
Paycor lets you create templates for faster scheduling. Just drag and drop employees to assign shifts in a few clicks. You can even automate how and when your staff goes on break to ensure that you’re fully covered at all times.
Your employees can proactively set day and time availability in advance. So you’ll be able to schedule around their needs and preferences.
Paycor Scheduling also has detailed reporting and analysis. This will provide you with details associated with the costs of overstaffing or understaffing.
Industries that can benefit from Paycor Scheduling include:
- Education
- Healthcare
- Nonprofit
- Manufacturing
- Professional services
- Retail
Paycor also provides additional products for recruiting, employee onboarding, HR, time and attendance, payroll, taxes, and learning management.
The company offers two different employee scheduling products; Paycor Scheduling and Paycor Scheduling Pro.
No prices for either are listed online. You’ll have to fill out a form answering some questions about your business to get a custom quote from a representative. This adds an extra step to the process, but it’s worth it for those of you who want a custom solution.
When I Work
More than 100,000 businesses across 50+ countries use When I Work for employee scheduling. This translates to over one million employees being scheduled on this software.
From small brands to large organizations like Dunkin Donuts, Ben & Jerry’s, Cold Stone Creamery, Jamba Juice, Massage Envy, and Verizon, When I Work is a top choice to consider.
Top features of When I Work include:
- One-click scheduling
- Shift coverage confirmation and notification
- Schedule sharing
- Labor forecasting
- Overtime control
- Schedule enforcement
- Labor reports
- Payroll integration
Compared to some of the other employee scheduling software we’ve covered, When I Work has one unique standout—its price.
When I Work has an exceptional free plan, and even the paid software is inexpensive.
Free — $0
- One location and up to 75 users
- Team scheduling
- Team availability
- Team messaging
- Shift trading
- Time off requests
Basic — $2 per user per month
- Schedule templates
- Multi-location support
- Job sites
- Overtime visibility
Pro — $2.50 per user per month
- Auto scheduling
- Labor forecasting
- Shift and team tasks
- Shift bidding
You can add-on time clocking and attendance to any plan for $2 per month per user.
Deputy
Deputy is another well-known and trusted employee scheduling solution. It’s used in 200,000+ workplaces worldwide, including places like Amazon, Nike, NASA, Peleton, and Ace Hardware.
Let’s take a look at some of the top features of Deputy:
- Auto scheduling
- Break planning
- Free mobile app
- Schedule by skillset and qualifications
- Cover leaves and unavailability
- Manage overtime and fatigue
- Monitor attendance
- Legal compliance
- Shift swapping
I’d recommend Deputy to larger businesses with multiple locations. It’s a top solution for managing employees that work across multiple job sites as well.
Some industries that Deputy commonly works with include healthcare, hotels, hospitality, entertainment, logistics, manufacturing, and retail.
Despite Deputy’s robust features and popularity, the software is surprisingly affordable.
Employee scheduling software starts at just $2.50 per month per employee. This is billed on a month-to-month basis. If you want to combine employee scheduling with timesheets and attendance, it’s $4.50 per month per user. Save up to 11% with an annual contract for the combo package. Deputy offers special prices for charities, nonprofits, and community organizations that meet special criteria.
You can try Deputy today by signing up for a free trial. No credit card required.
Shiftboard
Shiftboard software has tons of features designed for optimizing your employee scheduling process. It has everything you need to keep managers running smoothly while providing your staff with the right information to do their jobs well.
With Shiftboard, you can easily assign the best and most qualified workers to specific shifts.
Improve your schedule communication and make last-minute changes when certain situations arise.
Shiftboard helps you enhance efficiencies by reducing overtime costs, forecasting demands, and automatically assigning workers to specific shifts. You’ll also have the ability to post open shifts for pickup and send group notifications to your team.
Another benefit of Shiftboard is the compliance rules. This will help you eliminate errors for things like labor contracts, seniority rules, mandatory rest periods, and employee credentials.
For example, an employee with expired credentials would automatically be blocked from the schedule.
The Shiftboard mobile app is easy for anyone to use. You and your managerial staff can manage everything on the backend while your employees can benefit from scheduling and alerts in real-time. Set up open shift trading or require approval from supervisors for trade requests.
Shiftboard plans start at $3 per month per user. There are three options for you to choose from:
- Basic
- Professional
- Enterprise
Unfortunately, the pricing details for each plan are not specified online. You’ll need to request a demo based on the needs of your organization to get an accurate quote.
CakeHR
CakeHR is a bit unique compared to the other options on our list. That’s because it’s a full-service HR software.
In addition to employee scheduling, CakeHR has solutions for:
- Timesheets
- Performance
- Leave management
- Expenses
- Recruitment
Onboarding your employees and automating the HR process is simple. CakeHR provides tons of employee self-service tools and solutions.
Some of the top employee scheduling features include:
- Interactive shift planning
- Single site and multi-location support
- Dedicated shift managers
- Employee availability management
- Mobile app access
- Pre-defined shift templates
- Daily, weekly, and monthly reports
Pricing for CakeHR is a bit different as well. Simply select the services you want, enter the number of active employees you have, and choose between monthly or yearly billing.
Your custom rate based on these features will automatically appear on the screen. So you don’t need to wait for a CakeHR sales rep to get back to you with a quote.
To give you some perspective on the price point, shift scheduling for 20 employees would cost $50 per month with an annual contract. Adding timesheets would bring that rate to $80.
How to Choose the Best Employee Scheduling Software For Your Business
With such an extensive list of options to choose from, finding the best employee scheduling software for your business can seem like a tall task. Fortunately, we have a methodology that you can use to narrow your search.
Business Size
The number of employees you have and the number of locations will have a strong impact on your decision. A company with ten employees at one store will have different needs than a business with 100 employees across six locations.
Industry
There are industry-specific solutions in the employee scheduling software market.
For example, if you own a restaurant business, 7shifts will be the best choice for you. Restaurant managers and owners have different scheduling needs than office jobs in the corporate world.
Mobile Access
The best employee scheduling solutions should come with a free mobile app.
You want to make sure the app has admin features for managing schedules, as well as employee features for viewing schedules and making requests. The best apps include alerts for both staff and managers.
For example, an employee could be notified about a shift change or shift opening. But a manager would get notified if someone is approaching overtime or didn’t clock-in for their shift.
Time Tracking
Most employee scheduling solutions include time-tracking tools as well. Since the two go hand-in-hand, it makes sense to get both from the same provider.
Some software has all-inclusive features for both scheduling and time clocks, whereas others offer time tracking as an add-on.
Price
Obviously, employee scheduling software is supposed to make your life easier. It’s supposed to improve operational efficiencies and reduce labor costs. But make sure you find a solution that fits within your budget.
Each software has a different pricing structure. There are lots of options that charge a monthly rate based on how many employees you have. Some of those are subject to monthly minimums.
Some solutions offer tiered pricing, while others have unlimited employees for each plan.
If you’re a smaller organization with basic scheduling needs, you can even benefit from free employee scheduling software.
Conclusion
Here’s a quick recap of the best employee scheduling software on our list:
- Homebase — Best overall employee scheduling software.
- Humanity — Best for shift trading and filling openings in real-time.
- TSheets — Best for time-tracking and accounting integration.
- 7shifts — Best employee scheduling software for restaurants.
- Paycor Scheduling — Customized solutions for employee scheduling software.
- When I Work — Best free employee scheduling software.
- Deputy — Best for scheduling employees working at multiple locations.
- Shiftboard — Custom solution for managing hourly workers.
- CakeHR — Full-service HR software with employee scheduling.
Based on this guide, I’m confident that you can find what you’re looking for. No matter what type of business you have or what industry you’re in, there’s an option for you above.
Compare The Best Inventory Management Software
Want to jump straight to the answer? The best inventory management software for most people is Finale Inventory or Zoho …
Compare The Best Inventory Management Software Read More »
The post Compare The Best Inventory Management Software appeared first on .
How to Make a Logo for Your Website (Simple Guide for Beginners)
Do you want to make a custom logo for your website?
Maybe you can’t afford a professional designer, but you are worried that your graphic design skills aren’t up to the task. Your logo is a very important part of your brand’s identity. You want it to not only look high quality but also communicate your brand’s identity and values.
In this article, we will show you how to make a logo for your website. We will go through several different solutions so you can pick the one that suits you best.
![How to make a logo for your website How to make a logo for your website](https://2busy4it.com/wp-content/uploads/2023/09/how-to-make-a-logo-for-your-website.png)
To help you easily navigate the post, you can click the links below to jump ahead to the section you want to read:
- Why You Need to Create a Logo for Your Website
- Tips for Making a Custom Logo for Your Website
- Making a Logo for Your Site Using Tailor Brands (Best for Customization)
- Making a Custom Logo for Your Website Using Looka (Quick and Easy)
- Creating a Custom Logo Using Hatchful by Shopify (Free)
- Bonus: Hire Someone to Make Your Website Logo
Why You Need to Create a Logo for Your Website
Many people around the world can recognize big-name brands from their logos. When you see the iconic Golden Arches of McDonald’s anywhere in the world, you instantly recognize the brand and know what will be on the menu there.
That’s the power of branding, and a logo plays the most important role in building that reputation.
Whether you are creating a blog, making a website, or starting an online store, having a unique logo makes your brand look legitimate. It helps you build trust, recognition, and promote your business.
Often, when users want to start working on an online business idea, they start by thinking of business names and go straight to designing logos.
But before you do that, you need to make sure that your brand name idea is not already registered by someone else. See our guide on how to check domain name availability.
Once you have ensured that your business name idea is available, make sure to go ahead and register your domain so that no one else takes it (trust us, this happens more often than you think).
After you have registered your domain name, you are ready to start designing your logo. We have some excellent free logo-maker tools for beginners.
Tips for Making a Custom Logo for Your Website
Creating a custom logo for your website requires some understanding of design. However, as a beginner, you can follow these best practices to make sure that your logo looks polished and professional:
- Keep your logo design simple and clean. This makes sure that your logo will look good even at a small size. Think how tiny the profile images are in your Facebook or Twitter feed.
- Use a transparent background for your logo. That way, you can put it anywhere, not just on a white area of your website.
- Get the highest quality file you can for your logo. You want it to look great in a large size or in print, too. You can copy it and make smaller versions for social media, blog posts, and website pages.
- Use your brand and website colors in your logo to help it harmonize with the rest of your website.
There are different types of logo designs commonly used by businesses. When making your own logo, you may want to experiment with some of these.
Wordmark Logo
![Coca Cola's iconic logo is a classic example of a wordmark logo Coca-Cola logo](https://2busy4it.com/wp-content/uploads/2023/09/cocacola-logo.png)
A wordmark logo is a distinctive text-only logo. Your unique brand name set with specific fonts and colors can make an excellent logotype.
If you are making a custom logo for your WordPress website by yourself, this is a great option as it’s simple and straightforward.
Pictorial Mark Logo
![Apple logo](https://2busy4it.com/wp-content/uploads/2023/09/apple-logo.png)
A pictorial mark is usually a brand image using an illustration or icon to represent an organization.
Famous examples of this kind of logo include Apple, Nike, Audi, and more.
Combination of Both
![Dell logo Dell logo](https://2busy4it.com/wp-content/uploads/2023/09/dell-logo.png)
These types of logos are the most common ones you will see around. They combine words or letters presented in an iconic layout.
Famous examples of such logos include Dell, Pizza Hut, Doritos, and more.
Choosing the Right Style for Your Logo
If you are making your own logo, then you will need to be realistic about your design skills first. Using a wordmark might seem very simple, but it needs to be unique so that you can easily register your logo as a trademark if needed.
You can also draw an icon to be used as your logo. However, you will need strong design skills to come up with a unique idea for your brand image.
For our own brands, we use a combination of both wordmarks and icons. For example, our sister company OptinMonster’s logo has a mascot placed on a wordmark.
![OptinMonster logo OptinMonster email newsletter growth plugin](https://2busy4it.com/wp-content/uploads/2023/09/optinmonster-email-newsletter-growth-plugin.png)
Let’s take a look at a few different ways to create professional-looking logos for your websites (without hiring a designer).
1. Make a Logo Using Tailor Brands (Best for Customization)
Tailor Brands’ Logo Maker is easy and straightforward to use. You also get access to a lot of customization options when creating a custom logo for your website.
It’s one of the best logo makers and is free to use. However, note that you will need to pay to download your finished logo. The minimum you can pay is $9.99 for 1 month.
To begin, go to the Tailor Brands Logo Maker and type in the name of your company. Then, click the ‘Get Started’ button.
![Tailor Brands' logo maker Tailor brands](https://2busy4it.com/wp-content/uploads/2023/09/tailor-brands.png)
Next, Tailor Brands will launch a logo builder that asks a series of questions.
First, you will need to select what your brand is offering. For instance, is your brand selling physical goods, services, technology and software, original content, or other products?
![Select what your brand offers](https://2busy4it.com/wp-content/uploads/2023/09/select-what-your-brand-offers.png)
Simply select an option and move to the next step.
After that, you will need to enter some details about your industry. You can start by selecting an industry from the dropdown menu and briefly explaining your business.
![Enter your industry](https://2busy4it.com/wp-content/uploads/2023/09/enter-your-industry.png)
Next, Tailor Brands will ask what your biggest motivation is for starting a business.
You can select from the options and add more details.
![Select your motivation for starting a business](https://2busy4it.com/wp-content/uploads/2023/09/select-your-motivation-for-starting-a-business.png)
After that, you will need to select which stage your website or brand is in right now.
For instance, it is just an idea, you are getting ready to launch, or it’s already in business?
![Select which stage your site is at](https://2busy4it.com/wp-content/uploads/2023/09/select-which-stage-your-site-is-at.png)
In the next step, you can choose which service you’d like to focus on.
Go ahead and select the ‘Logo & Branding’ option.
![Select your brand focus](https://2busy4it.com/wp-content/uploads/2023/09/select-your-brand-focus.png)
After that, you’ll need to select what you need for your brand.
Simply select the ‘Logo’ option.
![Choose logo as an option](https://2busy4it.com/wp-content/uploads/2023/09/choose-logo-as-an-option.png)
Next, you will need to choose how you discovered Tailor Brands.
You can select any option or simply click the ‘Skip’ button at the bottom.
![How you discovered tailor brands](https://2busy4it.com/wp-content/uploads/2023/09/how-you-discovered-tailor-brands.png)
Tailor Brands will now process the information and show you an option to create your custom logo.
Go ahead and click the ‘Create’ button.
![Click create logo button](https://2busy4it.com/wp-content/uploads/2023/09/click-create-logo-button.png)
Next, you will need to sign up for a free account.
You can use your Facebook or Google account or simply enter an email address and password to get started.
![Sign up for tailor brands](https://2busy4it.com/wp-content/uploads/2023/09/sign-up-for-tailor-brands.png)
After creating an account, you can build a new logo.
First, you will need to choose the type of logo you’d like to create. Tailor Brands lets you choose an icon-based, name-based, or initial-based logo.
![Choose logo type](https://2busy4it.com/wp-content/uploads/2023/09/choose-logo-type.png)
You can only select one option, although you can always restart the logo maker again if you want to try out other possibilities.
If you select ‘Icon Based’ here, then you will be prompted on the next screen to choose an icon type. You can pick a geometric shape or search for an icon.
![Choose an icon for logo](https://2busy4it.com/wp-content/uploads/2023/09/choose-an-icon-for-logo.png)
For this tutorial, let’s select the ‘Search For Icon’ option.
Next, you can choose up to 5 icons for your logo. There is also an option at the top to search for different icons.
![Find your icons](https://2busy4it.com/wp-content/uploads/2023/09/find-your-icons.png)
When you are done, simply click the ‘Next’ button at the bottom.
After that, you will need to select 3 styles for your logo.
![Choose styles for logo](https://2busy4it.com/wp-content/uploads/2023/09/choose-styles-for-logo.png)
You can click the ‘Next’ button after selecting the styles you love.
Once you have completed this process, you will see a short animation while your logo is being created.
![Tailor Brands takes a few seconds to create your logo Designing your logo](https://2busy4it.com/wp-content/uploads/2023/09/designing-your-logo.png)
Next, you will be able to see your logo.
You can click ‘Love it’ to be taken to the pricing plans, ‘Customize’ to start editing it, or you can scroll down the menu on the left-hand side for more logo options.
![Logos created by Tailor Brands Love it or customize your logo](https://2busy4it.com/wp-content/uploads/2023/09/love-it-or-customize-your-logo.png)
If you choose to customize your logo, then you can pick from different styles, fonts, layouts, and more.
As you select different options, the logo will update on the right.
![Changing the layout of your logo Customize logo in tailor brands](https://2busy4it.com/wp-content/uploads/2023/09/customize-logo-in-tailor-brands.png)
There are also options to change the color palette and edit the shape of your logo.
Once you are happy with your logo, you can click the ‘Finish’ button.
![Changing the color of your logo Change color of logo](https://2busy4it.com/wp-content/uploads/2023/09/change-color-of-logo.png)
A small window will now open where you can review your logo design.
Go ahead and click the ‘I’m Finished’ button.
![Review your design](https://2busy4it.com/wp-content/uploads/2023/09/review-your-design.png)
Once your logo is ready, you will see a download option on the next screen.
You can click on the ‘Download’ button.
![Download your tailor brands logo](https://2busy4it.com/wp-content/uploads/2023/09/download-your-tailor-brands-logo.png)
Next, you will see a popup asking you to upgrade to a premium plan to download the logo.
Clicking the ‘Upgrade’ button will take you to the pricing page, and you will be presented with a number of different pricing plans.
![Upgrade to a premium account](https://2busy4it.com/wp-content/uploads/2023/09/upgrade-to-a-premium-account.png)
These plans give you access not just to your logo but also to graphic design and website creation tools. They could be a good option if you want access to things like stock photos.
If you just want the logo, then you can click the ‘1 Month’ tab and select the ‘Basic’ plan. You only need to make one payment for your logo to be yours to keep. You can cancel the plan straight after that.
![Tailor Brands' pricing plans Select a pricing plan](https://2busy4it.com/wp-content/uploads/2023/09/select-a-pricing-plan.png)
2. Make a Custom Logo for Your Site Using Looka (Quick and Easy)
Looka is a quick and easy online graphic design tool that allows you to make a logo without any design skills. It was formerly known as Logojoy.
Like Tailor Brands, Looka’s tool is free to use, but you will need to pay to download your logo. Prices start from $20. You don’t get the same level of personalization as you get with Tailor Brands, but it’s a great alternative for creating custom logos.
To get started, simply visit the Looka website and enter your company name in the search box.
![Looka get started Looka](https://2busy4it.com/wp-content/uploads/2023/09/looka.png)
Once that’s done, click the ‘Get started’ button.
Next, you need to select your industry from the dropdown menu.
![Business type Pick an industry for your logo](https://2busy4it.com/wp-content/uploads/2023/09/pick-an-industry-for-your-logo.png)
Don’t forget to click the ‘Continue’ button to move on to the next step.
You will then see a number of logos that have been automatically generated for you.
![Choose logo styles Pick logos you like](https://2busy4it.com/wp-content/uploads/2023/09/pick-logos-you-like.png)
Go ahead and select a few logos you like as inspiration.
Next, you will need to choose some colors that you like. You can pick up to 3 colors and then click the ‘Continue’ button.
![More logos generated by Looka Pick colors you like](https://2busy4it.com/wp-content/uploads/2023/09/pick-colors-you-like.png)
After that, Looka will ask you to enter a company and a slogan (optional).
Once you have entered this information, just click the ‘Continue’ button.
![Enter a company name and slogan](https://2busy4it.com/wp-content/uploads/2023/09/enter-a-company-name-and-slogan.png)
In the next step, you will need to select some symbol types for your logo.
For example, we chose different food-related symbols for our food blog logo.
![Pick some symbol types](https://2busy4it.com/wp-content/uploads/2023/09/pick-some-symbol-types.png)
Looka will now start to generate logos for you.
You will then see a bunch of variations that you can use for your website. Simply select a logo to further customize it.
![Pick a logo to customize](https://2busy4it.com/wp-content/uploads/2023/09/pick-a-logo-to-customize.png)
After that, you will see the logo builder offered by Looka.
Using the drag-and-drop logo editor, you can adjust the font size, choose a transparent background, change the font family, add or change your icon, and more.
![Customize your logo](https://2busy4it.com/wp-content/uploads/2023/09/customize-your-logo.png)
Feel free to edit the design as much as you like and share it with colleagues for a second opinion. Once you are happy, just click on the ‘Download’ button in the top right corner to purchase and download your logo.
Note that if you want a transparent version of your logo, then you will need to pay $65 for the Premium plan.
3. Create a Custom Logo Using Hatchful by Shopify (Free)
Shopify is a popular eCommerce platform. They also offer a free logo maker tool called Hatchful. It allows you to easily create beautiful logos for your website without any design skills.
Unlike Tailor Brands and Looka, you can download the logo free of cost. Plus, it offers different customization options and will guide you step by step through creating a logo.
First, you need to visit the Shopify Hatchful page and click on the ‘Get Started’ button.
![Hatchful get started Hatchful](https://2busy4it.com/wp-content/uploads/2023/09/hatchful.png)
Next, you need to choose your business type.
If you can’t find an exact match, then simply use the closest possible match.
![Business space Choose your business space](https://2busy4it.com/wp-content/uploads/2023/09/choose-your-business-space.png)
After that, Hatchful will ask you to choose a visual style for your logo.
You need to select a style that matches your business website’s style, look, and industry.
![Choose style Choose your visual style](https://2busy4it.com/wp-content/uploads/2023/09/choose-your-visual-style.png)
Next, enter your business name and a slogan (optional).
You can skip this step if you want and move ahead.
![Enter your business name Add your business name](https://2busy4it.com/wp-content/uploads/2023/09/add-your-business-name.png)
After that, you will be asked to select where you plan to use the logo.
You can pick the ‘Online store or website’ option to continue.
![Usage choices Where the logo will be used](https://2busy4it.com/wp-content/uploads/2023/09/where-the-logo-will-be-used.png)
Finally, the wizard will analyze your answers and show you several logo samples to choose from.
You can select any of these logos to further edit them.
![Logo samples Choose a logo to edit](https://2busy4it.com/wp-content/uploads/2023/09/choose-a-logo-to-edit.png)
This will launch a simple logo editor where you will see a live preview of your logo with editing tools in the left column.
You can edit the text, add an icon, add symbols, and change the background.
![Editing your logo with Hatchful Further edit your logo](https://2busy4it.com/wp-content/uploads/2023/09/further-edit-your-logo.png)
Once you are satisfied with your design, you can click the ‘Next’ button to download your logo files.
You will be asked to create a free account, and your logo files will be sent to your email address. The zip file will include not just your logo but a favicon or site icon and cover images for your social media profiles.
![Download your free logo](https://2busy4it.com/wp-content/uploads/2023/09/download-your-free-logo.png)
Bonus: Hire Someone to Make Your Website Logo
The online logo maker tools we have covered in this tutorial are made specifically for beginners. You can create a simple and elegant logo for your website using these tools, but they are still limited in design choices.
If you can afford it, the best option is to hire an expert graphic designer to make a logo for your website. There are several places where you can find freelance designers.
For example, you can use any of the popular online job marketplaces to hire a logo designer.
There are thousands of people offering graphic design services on these websites. How do you pick the right person for the job?
Sticking to these best practices can help you find the perfect candidate to make a logo for your business.
- Look for ratings, reviews, and the number of completed jobs on the designer’s profile. These are good indications of quality services provided to previous customers.
- Give a detailed brief to the designer about your specific design requirements.
- Set your own price for the logo, but keep in mind that a unique and creative design will cost more than a generic logo.
- Make sure that you get the original source files in vector file format. This will allow you to later resize or reuse your logo in other places like business cards, posters, t-shirts, and more.
We hope this article helped you learn how to make a logo for your website. You may also want to see our guide on how to add a certified logo to your business email and our expert picks of the best WordPress typography plugins to improve your website design.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
The post How to Make a Logo for Your Website (Simple Guide for Beginners) first appeared on WPBeginner.
How To Create A Web Design Style Guide
If you have a website that needs to be updated often, or that a lot of people will have a hand in maintaining or updating, it’s a good idea to have a web design style guide in place. This helps to ensure that everyone who deals with your site will be on the same page and understand how to keep everything looking consistent.
But what is a web design style guide, exactly? What does it entail? And how can you create one for yourself? Those are the questions we aim to answer right here.
Your Web Designer Toolbox
Unlimited Downloads: 500,000+ Web Templates, Icon Sets, Themes & Design Assets - starting at only $16.50/month!
What is a Web Design Style Guide?
Before we get into the specifics of how to create a style guide, let’s take some time to explore what they actually are. A web design style guide is a page on your website that outlines everything that goes into the creation of a new page or blog post on the rest of your site. This includes branded graphics, logos, fonts and font sizes, text and background colors, and anything else that pertains to site updates and content creation.
This is especially vital when you have more than one designer or developer working on your website. This ensures everyone stays on the same page. Plus, it actually streamlines development, as you can reference this style guide to create new content faster and more efficiently.
How to Create a Web Design Style Guide
Here are the steps you need to take to create a web design style guide for yourself:
1. Familiarize Yourself with the Brand
Whether you’re creating a style guide for your own website or for someone else, the same principle still applies: you need take time to assess what the brand is about. This means, understanding your target audience, knowing the values of the company, and have a solid idea of how this should be represented visually. If the company has done A/B testing for certain designs in the past, now is the time to leverage that info to create a more robust and more effective style guide.
2. Choose Colors
As you evaluate the brand, you’ll need to think of colors. If the company already has a palette they work with — perfect. Add the hex codes for the colors in the style guide. Be sure to break this information down into categories for text, links, hover links, backgrounds, buttons, etc. Make it clear what colors should be used where.
3. Select and Identify Typography
Along with colors you need to make it plain what fonts should be used (and where they should be used). Within your web design style guide, clearly identify the font names, sizes, and line height. This makes it super easy for future designers to recreate the appropriate look of your site. Better yet, create a Photoshop template that has these elements established as presets or identified as a note within the file itself.
Your every effort should be to eliminate the guesswork here.
4. Establish a Content Grid
Another thing you should add to your web design style guide is to create a content grid. This is the perfect way to identify how pages and blog posts should be laid out. Showcase where pictures and graphics should be positioned among the text. You really need this for understanding how your content should be spaced out.
Now, some of this can be taken care of by blog and page templates. Even so, it’s still a good idea to include that information in your style guide.
5. Set Photo Specifications
Another thing you can do is set photo specifications. Many websites will apply filters or effects on images they include in blog posts, for instance. So, if you want to ensure whoever is managing your site’s content knows how to keep everything looking consistent, you need to call out these specifics in your web design style guide.
Identify the specs each image should follow, including image height, width, color filters, opacity, and whether or not text should be added. Should you wish to include text on your graphics, be sure to call out the font, style, size, and color specs (as noted above) as well.
6. Logo Specifications
The last thing we’re discussing here that your guide absolutely must include is information about logos. A logo is perhaps the most identifiable part of your brand and website, which makes it super important to discuss here.
Logo specifications require including the minimum sizes as well as a variety of different logo styles. You should have a text option as well as a graphical one for small spaces. A logo with a tagline might be a good idea too for larger size options.
You should also provide logos with different backgrounds, including transparent. This way, your logo will look great no matter what background it’s sitting on. Each of these logo options should be included on the style guide page itself so they can be accessed and referenced quickly.
10 Awesome Web Design Style Guide Examples
Now that we’ve covered what should be included in your web design style guide, let’s take a look at some examples that really excel in showcasing how these guides can and should look.
Material.io
The Material.io style guide is comprehensive. It breaks down every aspect of what their website should look like. It includes information about themes, icons, color palettes, typography, shapes, and even sound.
MailChimp
The MailChimp style guide is super straightforward, and that’s exactly what yours should aspire to achieve. It includes menu options on the left-hand side of the screen that you can select including color, data visualization, grid, type, buttons, dialogs, and more.
Lonely Planet
Lonely Planet offers another great web design style guide to reference. It prominently features a color palette, icons, UI components, JS components, widgets, and CSS utilities.
USWDS: The United States Web Design System
The United States Web Design System also provides a great style guide to reference. It includes the details for creating pages for most government websites, including utilities, page templates, and more.
Yelp Styleguide
The Yelp Styleguide is even more to-the-point. It provides clear typography information, colors, layout info, links, buttons, navigation options, and more that make it easier for people working on Yelp to make pages and update content.
A11Y Style Guide
Another style guide you may want to reference is the one put together by A11Y. This guide includes information about how to format cards, forms, media, navigation, and offers up some additional resources as well.
Barnard Levit Optometrists
Barnard Levit Optometrists has a super simple web design style guide that gets the job done. It provides full typography details, including headers, columns, and bullets, as well information about how to format tables, forms, and buttons. Additionally, it covers how to handle images, videos, and a number of other aspects of the website.
Ben Brignell Styleguide
The Ben Brignell style guide is super aesthetically pleasing. It offers information about company colors (with hex codes), typography, blockquotes, bullets, buttons, links, videos, images, and so much more.
Beeline Design System
The style guide on the Beeline Design System website is another great example to reference. It includes everything that all of the other style guides listed here have covered but adds on modal, notifications, and tabs for extra measure.
Ceasefire Oregon
Last on our list is Ceasefire Oregon. This style guide is another exceedingly simple one but don’t let its look fool you — it’s incredibly comprehensive. This guide covers stylesheets, colors, grids, utilities, icons, logos, masthead info, and more.
Use This Info to Create a Web Design Style Guide
By now, you know what a web design style guide is. You know why you need one. You’ve learned how to put one together and you’ve seen some examples of the best currently on the web. Now it’s turn to turn that information into something practical. If your site is lacking a style guide, now’s the time to put one together.
Implementing Infinite Scroll And Image Lazy Loading In React
Implementing Infinite Scroll And Image Lazy Loading In React
Chidi OrjiIf you have been looking for an alternative to pagination, infinite scroll is a good consideration. In this article, we’re going to explore some use cases for the Intersection Observer API in the context of a React functional component. The reader should possess a working knowledge of React functional components. Some familiarity with React hooks will be beneficial but not required, as we will be taking a look at a few.
Our goal is that at the end of this article, we will have implemented infinite scroll and image lazy loading using a native HTML API. We would also have learned a few more things about React Hooks. With that you can be able to implement infinite scroll and image lazy loading in your React application where necessary.
Let’s get started.
Creating Maps With React And Leaflet
Grasping information from a CSV or a JSON file isn’t only complicated, but is also tedious. Representing the same data in the form of visual aid is simpler. Shajia Abidi explains how powerful of a tool Leaflet is, and how a lot of different kinds of maps can be created. Read article →
The Intersection Observer API
According to the MDN docs, “the Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document’s viewport”.
This API allows us to implement cool features such as infinite scroll and image lazy loading. The intersection observer is created by calling its constructor and passing it a callback and an options object. The callback is invoked whenever one element, called the target
, intersects either the device viewport or a specified element, called the root
. We can specify a custom root in the options argument or use the default value.
let observer = new IntersectionObserver(callback, options);
The API is straightforward to use. A typical example looks like this:
var intObserver = new IntersectionObserver(entries => {
entries.forEach(entry => {
console.log(entry)
console.log(entry.isIntersecting) // returns true if the target intersects the root element
})
},
{
// default options
}
);
let target = document.querySelector('#targetId');
intObserver.observe(target); // start observation
entries
is a list of IntersectionObserverEntry
objects. The IntersectionObserverEntry
object describes an intersection change for one observed target element. Note that the callback should not handle any time-consuming task as it runs on the main thread.
The Intersection Observer API currently enjoys broad browser support, as shown on caniuse.
![](https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_auto/w_400/https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/5fd0c890-49b7-4589-8c91-22c778eecd37/fig-01-int-obs-browser-support.png)
You can read more about the API in the links provided in the resources section.
Let us now look at how to make use of this API in a real React app. The final version of our app will be a page of pictures that scrolls infinitely and will have each image loaded lazily.
Making API Calls With The useEffect
Hook
To get started, clone the starter project from this URL. It has minimal setup and a few styles defined. I’ve also added a link to Bootstrap
’s CSS in the public/index.html
file as I’ll be using its classes for styling.
Feel free to create a new project if you like. Make sure you have yarn
package manager installed if you want to follow with the repo. You can find the installation instructions for your specific operating system here.
For this tutorial, we’re going to be grabbing pictures from a public API and displaying them on the page. We will be using the Lorem Picsum APIs.
For this tutorial, we’ll be using the endpoint, https://picsum.photos/v2/list?page=0&limit=10
, which returns an array of picture objects. To get the next ten pictures, we change the value of page to 1, then 2, and so on.
We will now build the App component piece by piece.
Open up src/App.js
and enter the following code.
import React, { useEffect, useReducer } from 'react';
import './index.css';
function App() {
const imgReducer = (state, action) => {
switch (action.type) {
case 'STACK_IMAGES':
return { ...state, images: state.images.concat(action.images) }
case 'FETCHING_IMAGES':
return { ...state, fetching: action.fetching }
default:
return state;
}
}
const [imgData, imgDispatch] = useReducer(imgReducer,{ images:[], fetching: true})
// next code block goes here
}
Firstly, we define a reducer function, imgReducer
. This reducer handles two actions.
- The
STACK_IMAGES
action concatenates theimages
array. FETCHING_IMAGES
action toggles the value of thefetching
variable betweentrue
andfalse
.
The next step is to wire up this reducer to a useReducer
hook. Once that is done, we get back two things:
imgData
, which contains two variables:images
is the array of picture objects.fetching
is a boolean which tells us if the API call is in progress or not.imgDispatch
, which is a function for updating the reducer object.
You can learn more about the useReducer
hook in the React documentation.
The next part of the code is where we make the API call. Paste the following code below the previous code block in App.js
.
// make API calls
useEffect(() => {
imgDispatch({ type: 'FETCHING_IMAGES', fetching: true })
fetch('https://picsum.photos/v2/list?page=0&limit=10')
.then(data => data.json())
.then(images => {
imgDispatch({ type: 'STACK_IMAGES', images })
imgDispatch({ type: 'FETCHING_IMAGES', fetching: false })
})
.catch(e => {
// handle error
imgDispatch({ type: 'FETCHING_IMAGES', fetching: false })
return e
})
}, [ imgDispatch ])
// next code block goes here
Inside the useEffect
hook, we make a call to the API endpoint with fetch
API. We then update the images array with the result of the API call by dispatching the STACK_IMAGES
action. We also dispatch the FETCHING_IMAGES
action once the API call completes.
The next block of code defines the return value of the function. Enter the following code after the useEffect
hook.
return (
<div className="">
<nav className="navbar bg-light">
<div className="container">
<a className="navbar-brand" href="/#">
<h2>Infinite scroll + image lazy loading</h2>
</a>
</div>
</navv
<div id='images' className="container">
<div className="row">
{imgData.images.map((image, index) => {
const { author, download_url } = image
return (
<div key={index} className="card">
<div className="card-body ">
<img
alt={author}
className="card-img-top"
src={download_url}
/>
</div>
<div className="card-footer">
<p className="card-text text-center text-capitalize text-primary">Shot by: {author}</p>
</div>
</div>
)
})}
</div>
</div>
</div>
);
To display the images, we map over the images array in the imgData
object.
Now start the app and view the page in the browser. You should see the images nicely displayed in a responsive grid.
The last bit is to export the App component.
export default App;
![](https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_auto/w_400/https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/1ebe219c-3815-407e-86f3-ef387a1a2996/fig-02-images-displayed.png)
The corresponding branch at this point is 01-make-api-calls.
Let’s now extend this by displaying more pictures as the page scrolls.
Implementing Infinite Scroll
We aim to present more pictures as the page scrolls. From the URL of the API endpoint, https://picsum.photos/v2/list?page=0&limit=10
, we know that to get a new set of photos, we only need to increment the value of page
. We also need to do this when we have run out of pictures to show. For our purpose here, we’ll know we have run out of images when we hit the bottom of the page. It’s time to see how the Intersection Observer API helps us achieve that.
Open up src/App.js
and create a new reducer, pageReducer
, below imgReducer
.
// App.js
const imgReducer = (state, action) => {
...
}
const pageReducer = (state, action) => {
switch (action.type) {
case 'ADVANCE_PAGE':
return { ...state, page: state.page + 1 }
default:
return state;
}
}
const [ pager, pagerDispatch ] = useReducer(pageReducer, { page: 0 })
We define only one action type. Each time the ADVANCE_PAGE
action is triggered, the value of page
is incremented by 1.
Update the URL in the fetch
function to accept page numbers dynamically as shown below.
fetch(`https://picsum.photos/v2/list?page=${pager.page}&limit=10`)
Add pager.page
to the dependency array alongside imgData
. Doing this ensures that the API call will run whenever pager.page
changes.
useEffect(() => {
...
}, [ imgDispatch, pager.page ])
After the useEffect
hook for the API call, enter the below code. Update your import line as well.
// App.js
import React, { useEffect, useReducer, useCallback, useRef } from 'react';
useEffect(() => {
...
}, [ imgDispatch, pager.page ])
// implement infinite scrolling with intersection observer
let bottomBoundaryRef = useRef(null);
const scrollObserver = useCallback(
node => {
new IntersectionObserver(entries => {
entries.forEach(en => {
if (en.intersectionRatio > 0) {
pagerDispatch({ type: 'ADVANCE_PAGE' });
}
});
}).observe(node);
},
[pagerDispatch]
);
useEffect(() => {
if (bottomBoundaryRef.current) {
scrollObserver(bottomBoundaryRef.current);
}
}, [scrollObserver, bottomBoundaryRef]);
We define a variable bottomBoundaryRef
and set its value to useRef(null)
. useRef
lets variables preserve their values across component renders, i.e. the current value of the variable persists when the containing component re-renders. The only way to change its value is by re-assigning the .current
property on that variable.
In our case, bottomBoundaryRef.current
starts with a value of null
. As the page rendering cycle proceeds, we set its current property to be the node <div id='page-bottom-boundary'>
.
We use the assignment statement ref={bottomBoundaryRef}
to tell React to set bottomBoundaryRef.current
to be the div where this assignment is declared.
Thus,
bottomBoundaryRef.current = null
at the end of the rendering cycle, becomes:
bottomBoundaryRef.current = <div id="page-bottom-boundary" style="border: 1px solid red;"></div>
We shall see where this assignment is done in a minute.
Next, we define a scrollObserver
function, in which to set the observer. This function accepts a DOM
node to observe. The main point to note here is that whenever we hit the intersection under observation, we dispatch the ADVANCE_PAGE
action. The effect is to increment the value of pager.page
by 1. Once this happens, the useEffect
hook that has it as a dependency is re-run. This re-run, in turn, invokes the fetch call with the new page number.
The event procession looks like this.
Hit intersection under observation → callADVANCE_PAGE
action → increment value ofpager.page
by 1 →useEffect
hook for fetch call runs →fetch
call is run → returned images are concatenated to theimages
array.
We invoke scrollObserver
in a useEffect
hook so that the function will run only when any of the hook’s dependencies change. If we didn’t call the function inside a useEffect
hook, the function would run on every page render.
Recall that bottomBoundaryRef.current
refers to <div id="page-bottom-boundary" style="border: 1px solid red;"></div>
. We check that its value is not null before passing it to scrollObserver
. Otherwise, the IntersectionObserver
constructor would return an error.
Because we used scrollObserver
in a useEffect
hook, we have to wrap it in a useCallback
hook to prevent un-ending component re-renders. You can learn more about useCallback in the React docs.
Enter the below code after the <div id='images'>
div.
// App.js
<div id='image'>
...
</div>
{imgData.fetching && (
<div className="text-center bg-secondary m-auto p-3">
<p className="m-0 text-white">Getting images</p>
</div>
)}
<div id='page-bottom-boundary' style={{ border: '1px solid red' }} ref={bottomBoundaryRef}></div>
When the API call starts, we set fetching
to true
, and the text Getting images becomes visible. As soon as it finishes, we set fetching
to false
, and the text gets hidden. We could also trigger the API call before hitting the boundary exactly by setting a different threshold
in the constructor options object. The red line at the end lets us see exactly when we hit the page boundary.
The corresponding branch at this point is 02-infinite-scroll.
We will now implement image lazy loading.
Implementing Image Lazy Loading
If you inspect the network tab as you scroll down, you’ll see that as soon as you hit the red line (the bottom boundary), the API call happens, and all the images start loading even when you haven’t gotten to viewing them. There are a variety of reasons why this might not be desirable behavior. We may want to save network calls until the user wants to see an image. In such a case, we could opt for loading the images lazily, i.e., we won’t load an image until it scrolls into view.
Open up src/App.js
. Just below the infinite scrolling functions, enter the following code.
// App.js
// lazy loads images with intersection observer
// only swap out the image source if the new url exists
const imagesRef = useRef(null);
const imgObserver = useCallback(node => {
const intObs = new IntersectionObserver(entries => {
entries.forEach(en => {
if (en.intersectionRatio > 0) {
const currentImg = en.target;
const newImgSrc = currentImg.dataset.src;
// only swap out the image source if the new url exists
if (!newImgSrc) {
console.error('Image source is invalid');
} else {
currentImg.src = newImgSrc;
}
intObs.unobserve(node); // detach the observer when done
}
});
})
intObs.observe(node);
}, []);
useEffect(() => {
imagesRef.current = document.querySelectorAll('.card-img-top');
if (imagesRef.current) {
imagesRef.current.forEach(img => imgObserver(img));
}
}, [imgObserver, imagesRef, imgData.images]);
As with scrollObserver
, we define a function, imgObserver
, which accepts a node to observe. When the page hits an intersection, as determined by en.intersectionRatio > 0
, we swap the image source on the element. Notice that we first check if the new image source exists before doing the swap. As with the scrollObserver
function, we wrap imgObserver in a useCallback
hook to prevent un-ending component re-render.
Also note that we stop observing an img
element once we’re done with the substitution. We do this with the unobserve
method.
In the following useEffect
hook, we grab all the images with a class of .card-img-top
on the page with document.querySelectorAll
. Then we iterate over each image and set an observer on it.
Note that we added imgData.images
as a dependency of the useEffect
hook. When this changes it triggers the useEffect
hook and in turn imgObserver
get called with each <img className='card-img-top'>
element.
Update the <img className='card-img-top'/>
element as shown below.
<img
alt={author}
data-src={download_url}
className="card-img-top"
src={'https://picsum.photos/id/870/300/300?grayscale&blur=2'}
/>
We set a default source for every <img className='card-img-top'/>
element and store the image we want to show on the data-src
property. The default image usually has a small size so that we’re downloading as little as possible. When the <img/>
element comes into view, the value on the data-src
property replaces the default image.
In the picture below, we see the default lighthouse image still showing in some of the spaces.
![](https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_auto/w_400/https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e1ff0bc9-62c7-4c39-ad43-3acd9643d586/fig-03-showing-default-image.png)
The corresponding branch at this point is 03-lazy-loading.
Let’s now see how we can abstract all these functions so that they’re re-usable.
Abstracting Fetch, Infinite Scroll And Lazy Loading Into Custom Hooks
We have successfully implemented fetch, infinite scroll, and image lazy loading. We might have another component in our application that needs similar functionality. In that case, we could abstract and reuse these functions. All we have to do is move them inside a separate file and import them where we need them. We want to turn them into Custom Hooks.
The React documentation defines a Custom Hook as a JavaScript function whose name starts with "use"
and that may call other hooks. In our case, we want to create three hooks, useFetch
, useInfiniteScroll
, useLazyLoading
.
Create a file inside the src/
folder. Name it customHooks.js
and paste the code below inside.
// customHooks.js
import { useEffect, useCallback, useRef } from 'react';
// make API calls and pass the returned data via dispatch
export const useFetch = (data, dispatch) => {
useEffect(() => {
dispatch({ type: 'FETCHING_IMAGES', fetching: true });
fetch(`https://picsum.photos/v2/list?page=${data.page}&limit=10`)
.then(data => data.json())
.then(images => {
dispatch({ type: 'STACK_IMAGES', images });
dispatch({ type: 'FETCHING_IMAGES', fetching: false });
})
.catch(e => {
dispatch({ type: 'FETCHING_IMAGES', fetching: false });
return e;
})
}, [dispatch, data.page])
}
// next code block here
The useFetch
hook accepts a dispatch function and a data object. The dispatch function passes the data from the API call to the App
component, while the data object lets us update the API endpoint URL.
// infinite scrolling with intersection observer
export const useInfiniteScroll = (scrollRef, dispatch) => {
const scrollObserver = useCallback(
node => {
new IntersectionObserver(entries => {
entries.forEach(en => {
if (en.intersectionRatio > 0) {
dispatch({ type: 'ADVANCE_PAGE' });
}
});
}).observe(node);
},
[dispatch]
);
useEffect(() => {
if (scrollRef.current) {
scrollObserver(scrollRef.current);
}
}, [scrollObserver, scrollRef]);
}
// next code block here
The useInfiniteScroll
hook accepts a scrollRef
and a dispatch
function. The scrollRef
helps us set up the observer, as already discussed in the section where we implemented it. The dispatch function gives a way to trigger an action that updates the page number in the API endpoint URL.
// lazy load images with intersection observer
export const useLazyLoading = (imgSelector, items) => {
const imgObserver = useCallback(node => {
const intObs = new IntersectionObserver(entries => {
entries.forEach(en => {
if (en.intersectionRatio > 0) {
const currentImg = en.target;
const newImgSrc = currentImg.dataset.src;
// only swap out the image source if the new url exists
if (!newImgSrc) {
console.error('Image source is invalid');
} else {
currentImg.src = newImgSrc;
}
intObs.unobserve(node); // detach the observer when done
}
});
})
intObs.observe(node);
}, []);
const imagesRef = useRef(null);
useEffect(() => {
imagesRef.current = document.querySelectorAll(imgSelector);
if (imagesRef.current) {
imagesRef.current.forEach(img => imgObserver(img));
}
}, [imgObserver, imagesRef, imgSelector, items])
}
The useLazyLoading
hook receives a selector and an array. The selector is used to find the images. Any change in the array triggers the useEffect
hook that sets up the observer on each image.
We can see that it is the same functions we have in src/App.js
that we have extracted to a new file. The good thing now is that we can pass arguments dynamically. Let’s now use these custom hooks in the App component.
Open src/App.js
. Import the custom hooks and delete the functions we defined for fetching data, infinite scroll, and image lazy loading. Leave the reducers and the sections where we make use of useReducer
. Paste in the below code.
// App.js
// import custom hooks
import { useFetch, useInfiniteScroll, useLazyLoading } from './customHooks'
const imgReducer = (state, action) => { ... } // retain this
const pageReducer = (state, action) => { ... } // retain this
const [pager, pagerDispatch] = useReducer(pageReducer, { page: 0 }) // retain this
const [imgData, imgDispatch] = useReducer(imgReducer,{ images:[], fetching: true }) // retain this
let bottomBoundaryRef = useRef(null);
useFetch(pager, imgDispatch);
useLazyLoading('.card-img-top', imgData.images)
useInfiniteScroll(bottomBoundaryRef, pagerDispatch);
// retain the return block
return (
...
)
We have already talked about bottomBoundaryRef
in the section on infinite scroll. We pass the pager
object and the imgDispatch
function to useFetch
. useLazyLoading
accepts the class name .card-img-top
. Note the .
included in the class name. By doing this, we don’t need to specify it document.querySelectorAll
. useInfiniteScroll
accepts both a ref and the dispatch function for incrementing the value of page
.
The corresponding branch at this point is 04-custom-hooks.
Conclusion
HTML is getting better at providing nice APIs for implementing cool features. In this post, we’ve seen how easy it is to use the intersection observer in a React functional component. In the process, we learned how to use some of React’s hooks and how to write our own hooks.
Resources
- “Infinite Scroll + Image Lazy Loading,” Orji Chidi Matthew, GitHub
- “Infinite Scrolling, Pagination Or “Load More” Buttons? Usability Findings In eCommerce,” Christian Holst, Smashing Magazine
- “Lorem Picsum,” David Marby & Nijiko Yonskai
- “IntersectionObserver’s Coming Into View,” Surma, Web Fundamentals
- Can I Use…
IntersectionObserver
- “Intersection Observer API,” MDN web docs
- “Components And Props,” React
- “
useCallback
,” React - “
useReducer
,” React
![Smashing Editorial](https://www.smashingmagazine.com/images/logo/logo--red.png)
Creative Sound Design For Music
Important points in sound design Sounds surround us everywhere: everyday business, film, television or radio broadcasting. Sound is one of the most important parts of our perception of the environment, our picture of the world. Sound is an integral part of any movie, promotional video, presentation or clip. Dialogues, specially selected music background, sound effects, […]
The post Creative Sound Design For Music appeared first on designrfix.com.
Cyber crime is on the rise: how can you protect your business?
Free image taken from https://unsplash.com/photos/y-wjLDbPNGM Statistically, 70% of senior business managers rate cybersecurity as a high priority but only 30% have a solid cybersecurity policy in place and most businesses invest less than $500/year in security products. If you’re worried that your business is vulnerable, the time to act is now because the numbers don’t […]
The post Cyber crime is on the rise: how can you protect your business? appeared first on designrfix.com.