, but this code // executes before the first paint, when

app

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); app_appۿƵ_ˮҰ糱ˮ

app

Skip to main content

Think deeply, act justly, live wholeheartedly

as Christ's agents of renewal in the world.

badge

app is a Christian liberal arts university located in the college town of Grand Rapids, Michigan. 
We're known for academic excellence. 
Our students engage the world with curiosity and conviction.

What would you like to study?

We offer more than 100 programs in a full range of Bachelor's and Master's degrees.

Undergraduate

Graduate

Online

Continuing Education

Explore all degrees and programs

Image
A kinesiology student squats while stretching a band with his arms raised, while another student and professor observe.
Image
A student writes in a notebook and smiles at her desk, with a classmate at her desk in the background.

Image
Three app students walk on the path outside the library.

Visit app. Get $2000.

Explore campus in a personalized tour and see how to get the Visit Grant.

Quick Facts

100+

Academic programs

spanning the arts, humanities, sciences, and more.
99%

Graduate placement

within one year after graduating from app.
12:1

Student-to-faculty ratio

Professors know your name and want you to succeed
3.0+

Grade point average

You're guaranteed a scholarship with a GPA of 3.0 or higher
100%

Committed Christian faculty

Faith and discovery go hand-in-hand here.
25

NCAA DIII Varsity teams

app has been in the top ten NCAA finishers more than 100 times.
Image
app student study on commons lawn.

Why choose app?

Academic Excellence

Faith and learning combined for deeper understanding.

Top career outcomes

Your life and work, launched with confidence and purpose.

Aggressive financial aid

Support that doesn't waver and goes the distance for you.